嵌入式-带答案_第1页
嵌入式-带答案_第2页
嵌入式-带答案_第3页
嵌入式-带答案_第4页
嵌入式-带答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式操作系统考试要求的内容前3章(25%)1)嵌入式系统的特点:开发方式、内核大小、专用性、编译方式;2)从开发环境与运行环境来看,嵌入式系统与一般PC的特点。什么是交叉编译在一个平台上生成另一个平台上的可执行代码。操作系统的两大功能和四项基本任务使计算机硬件便于使用;高效组织和正确地使用计算机的资源。进程管理、进程间通信与同步、内存管理和I/O资源管理。ARM是什么?是一种嵌入式芯片的型号吗?是AdvanceRISCMachine(ARM)公司提出的一种嵌入式芯片的内核,ARM公司不生产芯片而只是转让知识产权另外也提供基于ARM架构的开发设计技术:软件工具,评估板,调试工具,应用软件,总线架构,外围设备单元,等等嵌入式处理器的分类嵌入式处理器可分为低端的嵌入式微控制器(MicroControllerUnit,MCU)、常用于计算机通信领域的嵌入式DSP处理器(EmbeddedDigitalSignalProcessor,EDSP)、中高端的嵌入式微处理器(EmbeddedMicroProcessorUnit,EMPU)和高度集成的嵌入式片上系统(SystemOnChip,SOC)。谈一谈嵌入式实时系统从实时性的分类。硬实时和软实时的区别就在于对外界的事件做出反应的时间。硬实时系统:必须对事件做出及时的反应,绝对不能错过事件处理的时限。在硬实时系统中如果出现了这样的情况就意味着巨大的损失和灾难。比如说航天飞机的控制系统,如果出现故障,后果不堪想象。软实时系统:在系统负荷较重的时候,允许发生错过时限的情况而且不会造成太大的危害。比如液晶屏刷新允许有短暂的延迟。目前比较流行的嵌入式操作系统有些(需例举3种)VxWorks,QNX,PalmOS,WindowsCE,LynxOS,嵌入式Linux,uC/OS'CISC和RISCCISC:ComplexInstructionSetComputer);RISC:reducedinstructionsetcomputer从代码密度、寻址方式的多少、指令长度、指令数量、专用性、平均执行周期(CPI)、是否采用Load/Store结构,算术和逻辑操作仅针对寄存器?Load/Store结构流水线技术通过指令的并行运行提高运行速度,ARM7三级流水(fetch,decode,execute),ARM9五级流水(memory,write)ARM处理器的各种基本工作模式用户模式、快速中断模式、外部中断模式、管理模式、中止模式、未定义指令中止模式和系统模式。12•冯•诺依曼体系结构和哈佛体系结构前者操作数和指令分时共用同一组总线,后者操作数和指令所采用的总线不同因而取指和取操作数可以同时进行,从而提高了运行速度13,高速缓存高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。14.14.FLASH(闪存):是EEPROM的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新谏度快。中于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。NandFlash与NorFlash相比较:编程、擦除、读的速度以及可靠性15.Nandflash/NorFlash 写快/慢、简单/擦除前需要写0、读稍慢/稍快、不可靠/可15.靠16.从编程的角度看,ARM微处理器的工作状态有哪些?16.2种且可在2种状态之间切换:第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。17.ARM体系结构两种存储字数据方法一一大端格式和小段格式17.大端:字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。18.ARM寄存器组织、分类,Thum状态和ARM状态下寄存器组织上的异同通用寄存器包括R0〜R15,可以分为三类:不分组寄存器R0〜R7;分组寄存器R8〜R14;程序计数器PC(R15)。Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集Thumb状态下和ARM状态下的R0〜R7是相同的。Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。Thumb状态下的SP映射到ARM状态下的R13。Thumb状态下的LR映射到ARM状态下的R14。Thumb状态下的程序计数器PC(R15)映射到ARM状态下的PC(R15)。19,什么是异常向量异常是由内部或外部源产生并引起处理器处理一个事件,它会导致正常的程序执行流程发生暂时的停止,例如外部中断或试图执行未定义指令都会引起异常。异常出现后强制从异常类型对应的固定存贮地址开始执行程序,这些固定的地址称为异常向量。第4章

这一部分不作要求第5章(40%)如何从键盘向main函数传入参数用scanf函数main(){inta[10];inti;for(i=0;i<10;i++)scanf("%d",&a[i]);printfCWfor(i=0;i<10;i++)printf("%d”,a[i]);}带参数main函数#include<stdio.h>main(argc,argv)intargc;char*argv[];{while(argc>1){++argv;printf("%s\nn,*argv);--argc;}}增强程序可读性的寄存器定义格式#define寄存器名(*(volatileunsigned*)寄存器在存储空间中的位置)例如#define rUCON0(*(volatileunsigned*) 0x50000004)关=!==A=_1110000000000000=0x0eh<12B=0000001100000000=0x03h<8C=0000000010010000=0x09h<4D=0000000000000110=0x06h<05.采用位掩码对寄存器的某个功能区位进行设置fun3的位掩码:FUN3_MASK=0xf<4C’=0x0B<4R&=~FUN3_MASKRI=C’6,如何对I/O口的功能进行配置并进行相关操作,让输出端口电平变化(配置为输出,然后向端口数据寄存器位写入相应电平),要求能进行编程通过对G口8、9脚的操作实现LED轮流闪烁#definerGPGCON(*(volatileunsigned*)0x56000060)//PORTG控制寄存器#definerGPGDAT(*(volatileunsigned*)0x56000064)//PORTG数据寄存器voidmain(void)(Intflag,I;Target_Init()for(;;){If(flag==0){for(i=0;i<1000000;i++);//延时rGPGCON=rGPGCON&0xfff0ffff|0x00050000〃配置8、9脚为输出rGPGDAT=rGPGDAT&0xeff|0x200;//8脚低电平,9脚高电平for(i=0;i<1000000;i++);//延时Flag=1;}Else{for(i=0;i<1000000;i++);//延时rGPGCON=rGPGCON&0xfff0ffff|0x00050000//配置8、9脚为输出rGPGDAT=rGPGDAT&0xdff|0x100;//8脚高电平,9脚低电平for(i=0;i<1000000;i++);//延时

Flag=0;}_CPU与外设传输数据的方式有哪几类查询方式、中断方式、DMA。DMA不占用cpu,但占用系统总线。中断部分应掌握如下内容:1)中断过程、与中断相关的寄存器的作用、中断挂起寄存器和中断源挂起寄存器的区别、与中断屏蔽有关的寄存器(中断屏蔽寄存器、子中断屏蔽寄存器以及CPSR)中断过程保存现场:PC—LR,CPSR—SPSR根据设置的中断模式选择IRQ或FIQ从中断向量处获取中断服务程序的地址根据优先级和中断标志识别是哪一个中断发生,并进行相应处理中断返回,恢复现场:PC—LR,CPSRfSPSR中断屏蔽寄存器:为了能接受中断请求必须将F或I位设置为0,同时将中断屏蔽寄存器的相应位设置为0。中断挂起寄存器:共32位,每一位与一中断源相对应,只有一位能为1,指示相应中断挂起。各挂起的中断源由各中断仲裁器确定那个中断挂起。(中断挂起的含义是:相应的中断是下一个待处理的中断在中断服务程序中需要将相应中断清除)中断源挂起寄存器:共32位,当某一个中断源产生中断请求,相应位置1,在中断服务程序中必须清除中断模式寄存器:共32位,每一位与一中断源相对应,设置相应的中断源为快速中断还是普通中断。中断优先权寄存器:ARM将中断分为6组,每一组设一个优先权仲裁器,在中断优先权寄存器中,每一组有一个ARB_MODE位设置是否使能改组各中断源的优先级滚动变化,另有两位ARB_SEL以设置改组各中断源的优先级。中断偏移寄存器:指示普通中断中是哪一个中断挂起,当中断挂起寄存器或中断源挂起寄存器中的某位清除时,这个寄存器被清除。子中断源挂起寄存器:指示子中断源是否有请求。向这个寄存器中的某位写数据,则可清除这一位。CPSR:程序状态寄存器(currentprogramstatusregister)cpsr在用户级编程时用于存储条件码;CPSR包含条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息。PWM编程:改变频率和脉冲宽度以及定时器观测值的读取改变频率:定时器减法缓冲寄存器(TCNTBn);改变脉冲宽度:比较缓冲寄存器(TCMPBn);10.串口定时器观测值:定时器观测寄存器(TCNTOn)10.串口帧错误、奇偶校验错误,溢出错误,前两种错误的校验原理,数据的发送和接收、回环模式、自动流控制,串口数据传输的编程,从某一个内存单元取数,然后发往串口(包括DMA方式)使用DMA方式实现从存贮器发送数据到串口0

#include<string.h>#include“・.\INC\config・h”#defineSENDDATA(*(volatileunsignedchar*)0x30200000)//待发送的地址#defineSENDADDR((volatileunsignedchar*)0x30200000)voidmain(void){volatileunsignedchar*p=SE]NDADDR;volatileunsignedchar*p=SE]NDADDR;intI; Targetinit(); Delay(1000)SENDDATA=0x41;for(i=0;i<128;i++)*pp++=0x41+i; 〃上三条语句提供源数据rUCON0=rCON0&0xff3I0x8;//Uart0设置为DMA的方式//下面的语句对DMA0初始化rDISRC0=(U32)(SENDADDR);rDISCC0=(0«1)I(0<0);/^=AHB・传送后地址增加rDIDST0=(U32)UTXH0;〃发送FIFO缓冲区地址rDIDSTC0=(1vv1)I(1v0)//目标=APB.传送后地址不变rDCON0=(0vv31)I(0v<30)I(1vv29)I(0vv28)(0«27)I(1vv23)I(1vv22)I(0«20)I 50);〃设置DMA控制器:握手模式,与APB同步,使能中断,单位传输,单个模式,目标=UART0硬件请求模式,不自动加载,半字,计数初值=50rMASKTRIG0=(1<<1); //打开DMA诵道0whiled)}11.(A)DMA:概念、原理、数据传输过程,S3C2410的DMA控制寄存器的单个服务模式和整体服务模式,这一部分单独编程不作要求。概念:DirectMemoryAcess,是指存贮器和外设在DMA控制器的控制下直接传输数据而不诵过CPU,在DMA数据传输前需要从CPU获得总线的控制权DMA数据传输过程外设向DMA控制器发出DMA请求DMA控制器向CPU发出总线请求CPU执行完现行的总线周期后向DMA控制器发出应答信号CPU将总线控制权让给DMA控制器DMA控制器向外部设备发出DMA请求应答信号进行DMA数据传输数据传输完毕DMA向CPU发出中断请求,CPU在接收到中断后进行相应处理CPU从中断返回并从DMA控制器收回总线控制权在单个服务模式下,主FSM的3种状态执行完后就停止,并等待下一个DMA请求,并等待下一个DMA请求。如果产生了新的DMA请求,则所有三个状态将被重复。因此,对于每一个原子传送操作,DMAACK先后置1和清零。相反,在整体服务模式下,主FSM一直在状态3等待直到CURR_TC变为0,因此DMAACK在整个传送过程中置1,仅当CURR_TC变为0才清零。AD转换器:作用、类型、编程作用:模拟信号与CPU之间的联系和接口类型:双积分A/D转换器:对模拟信号V.积分一个固定时间T;然后用参考电源Vf反相积分Ti直到积分电容放电到0:Vi=Vf-Ti/T逐次逼近A/D转换器:由逐次逼近寄存器SAR,D/A转换器、比较器以及时序和逻辑控制等部分组成。比较时先从SAR的最高位开始,逐次确定各位的数码为1还是0.触摸屏的工作原理与编程两个金属涂层分别为X、Y方向的电极;当给X方向的电极施加一确定的电压,而在Y方向电极对不施加电压时,触点处的电压值可在Y+或Y-上测量出来。从而确定出X坐标。Y坐标的确定同理LCD:LCD的显示原理:显示的最小单位-像素、显示缓冲区中填写的是什么信息-每点的颜色信息汉字的显示原理:嵌入式控制系统中最常用的汉字是16x16点阵,它是由行列各16个点,共256个点组成的点阵图案,每行的16个点在内存中占两个字节,一个16x16点阵汉字共16行,在内存中占32个字节。根据这些字节在内存中存放的顺序,第一行的第一个字节称“0”号字节,第一行第二个字节称“1”号字节;第二行的第一个字节称“2”号字节,第二个字节称“3”号字节。以此类推,最后一行的第一个字节称“30”号字节,第二个字节称“31”号字节,每个字节高位在前,低位在后,即D7在一个字节的最左侧,D0在最右侧。汉字的区位码和内码、字模:区位码:汉字库结构作了统一规定,即将字库分成94个区,每个区有94个汉字(以位做区别),每一个汉字在汉字库中有确定的区和位编号(用两个字节),就是所谓的区位码(区位码的第一个字节表示区号,第2个字节表示位号),因而只要知道了区位码,就可知道该汉字在字库中的地址。内码:组成两字节代码的最高位为0,即每个字节仅只使用7位,这样在机器内使用时,由于英文的ASCII码也在使用,可能将国标码看成两个ASCII码,因而规定用国标码在机内表示汉字时,将每个字节的最高位“置”1,以表示该码表示的是汉字,这些国标码两字节最高位加1后的代码称为机器内的汉字代码,简称内码。字模:每个汉字在字库中是以点阵字模形式存储的。字模提取软件(可在网上搜索一下,至少要知道一种), 而cerLcdzimo.rarS3C2440(或2410)下的编程,STNLCD部分不作要求,仅要求TFTLCD部分,要搞懂原理。编程要求:逻辑颜色和物理颜色的转换:汉字和ASCII码的显示。第6章(10%)需要知道嵌入式系统的两种软件编程模式:裸机编程和基于操作系统的编程裸机编程:开发.工具ADS(作用、开发的方式、语言),如何利用超级终端和DNW进行程序下载ARMADS的全称为ARMDeveloperSuite,它是ARM公司推出的新一代ARM集成开发环境。裸机程序编辑、编译软件。C、汇编。程序下载步骤:(1) 连接好开发板电源,串口线,USB线,并设置开发板为NORFlash启动系统,分别打开串口超级终端和DNW,上电启动开发板。(2) 保证USB驱动已经安装好(前面已经详细介绍了USB驱动的安装方法),这时可以看到DNW的标题栏显示[USB:OK],如果没有安装好驱动会显示[USB:x]3)点DNW菜单Configuration,设置USB下载运行地址为0x30000000(4) 这时在超级终端的BIOS功能菜单中选.择功能号[d],出现USB下载等待提示信息:(5) 点击DNW程序的“USBPort”“Transmit”,如图诜择刚刚编译出的映象文件(光盘“\images\2440test”目录中有已经编译好的可执行文件),这样就开始下载了超级终端也用于在基于操作系统的情形开发的程序既可以下载到nandflash也可下载到内存中运行。基于操作系统的编程:Bootloader是什么,它的作用。Bootloader:是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。在嵌入式系统中,通常没有象Bios那样的固件程序有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务完全由lootLoader完成操作系统的内核(在操作系统中的作用:提供硬件抽象层、磁盘及文件控制、多任务等功能计算机系统的必要组成部分?内核不是计算机系统必要组成部分。Linux内核的组成、在目标板上linux操作系统的安装过^^(bootloader、内核、根文件系统X虚拟机上linux的安装、linux的基本操作命令,网络文件系统NFS嵌入式系统编程中的作用,利用NFS进行程序下载的原理,如何在PC端编译linux程序,并下载到目标板运行、在PC端linux运行的程序怎样编译;基于嵌入式操作系统开发的程序下载方式(u盘、网络文件传输、NFS、串口传输)。第7章(25%)虚拟文件系统的作用Linux之所以能支持多种文件系统,其实是由于提供了一个虚拟文件系统VFS,VFS作为实际文件系统的上层软件,掩盖了实际文件系统底层的具体结构差异,为系统访问位于不同文件系统的文件提供了一个统一的接口设备:以文件的方式访问(设备文件)设备驱动的作用(对设备初始化和释放;把数据从内核传送到硬件和从硬件读取数据;读取应用程序发送给设备文件的数据和回送应用程序请求的数据;检测和处理设备出现的错误。)、linux操作系统下有哪几类设备类型:(设备类型:字符设备或者块设备网络设备)设备文件及其在文件系统中所属目录、硬盘、USB盘的设备文件命名、设备类型,主设备号和次设备号(对设备文件的识别使用设备类型,主设备号和次设备号。主设备号:按照设备使用的驱动程序不同而赋予设备不同的主设备号。主设备号与驱动程序 对应。次设备号:用于区分使用同一驱动程序的不同设)。设备驱动程序的file_operations结构(file_operations结构体中主要成员的含义如下:open()用来完成驱动程序的设备初始化操作,并且还会增加设备计数,以防止文件关闭前模块被卸载出内核。主要完成的操作有:检查设备错误(诸如设备未就绪或相似的硬件问题);如果是首次打开,则初始化设备;标识次设备号;分配和填写要放在file-private_data内的数据结构;增加使用计数。llseek(涵数用来修改一个文件的当前读写位置,并将新位置返回,在出错时,这个函数返回一个负值read()函数用来从设备中读取数据,成功时函数返回读取的字节数,出错时返回一个负值write()函数向设备发送数据,成功时该函数返回写入的字节数。如果此函数未被实现,当用户进行write调用时,将得到-EINVAL返回值。ioctl()提供设备相关的控制命令的实现(既不是读操作也不是写操作),当调用成功时,返回给调用程序的一个非负值。内核本身识别部分的控制命令,而不必调用设备驱动中的ioctl()。如果设备驱动不提供ioctl()函数,对于内核不能识别的命令,用户进行ioctl()系统调用时将得到-EINVAL返回值)、Linux内核模块(为了把Linux内核中需要的部分都包含在内核中,而又不使其过于庞大。可采用模块的方式,让编译出的内核本身不需要包含所有功能,而在这些功能需要使用时,其对应代码被动态加载到内核中。这种机制就称为模块,具有如下特点:1模块本身不被编译为内核映像,从而控制了内核的大小。2模块一旦被加载,他就和内核中其他部分一样。—、字符设备驱动(7章ppt)、linux文件操作(Linux系统的一个重要思想是“一切都是文件”,例如对由于字符设备(比如键盘和鼠标)和块设备(硬盘,USB存贮器)等设备的访问都是通过文件操作的方式进行的。»设备驱动在操作系统的文件系统调用或C库函数调用时(本质也是基于系统调用)被访问。»系统调用是指应用程序空间对内核空间访问)、字符设备编程的主要内容和步骤,cdev结构体在linux2.6内核中使用cdev结构体描述字符设备,cdev结构体的定义为structcdev{structkobjectkobj;//内嵌的kobject对象structmodule*owner;//所属模块structfile_operations*ops;〃文件操作结构体structlist_headlistdev_tdev;unsignedintcount;};操作系统程序分析:LED的控制(7章ppt30页)■驱动程序代码#include<linux/miscdevice.h>#include<linux/delay.h>…#defineDEVICE_NAME"leds“staticunsignedlongled_table[]={S3C2410_GPB5,S3C2410_GPB6,S3C2410_GPB7,S3C2410_GPB8,■}staticunsignedintled_cfg_table[]={S3C2410_GPB5_OUTP,S3C2410_GPB6_OUTP,S3C2410_GPB7_OUTP,S3C2410_GPB8_OUTP,};staticintsbc2440_leds_ioctl(structinode*inode,structfile*file,unsignedintcmd,unsignedlongarg){switch(cmd){case0:case1:if(arg>4){return-EINVAL;■}s3c2410_gpio_setpin(led_table[arg],!cmd);return0;default:return-EINVAL;■}■}staticstructfile_operationsdev_fops={.owner=THIS_MODULE,.ioctl=s3c2440_leds_ioctl,};staticstructmiscdevicemisc={.minor

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论