您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 2018-2019嵌入式期末复习材料
嵌入式系统原理与应用期末复习提纲考试题型大致:填空+选择30~50%、简答题20~30%、程序填空(程序设计、代码解析)10~20%综合题10~20%一、本学期嵌入式课程实验内容(裸机GPIO的基本配置:端口分为几组?输入,输出地址汇编编程(怎么配置)、应用程序开发与移植,驱动程序实验:(框架,驱动程序每一部分在做什么,实现什么功能)demo、继电器、led点阵、AD驱动程序)NFS怎么连到实验箱?遍历用什么工具?二、教材内容(每一章都会有)第1章(填空,选择,简答)定义(★)以功能定义:用于控制、监视、或者辅助操作机器和设备的装置。以特点定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。四个发展阶段:第一阶段:20世纪70年代前后,可以看成是嵌入式系统的萌芽阶段;第二阶段:以嵌入式微处理器为基础,以简单操作系统为核心的嵌入式系统;第三阶段:以嵌入式操作系统为标志的嵌入式系统,也是嵌入式应用开始普及的阶段;第四阶段:以基于Internet为标志的嵌入式系统,这是一个正在迅速发展的阶段。发展趋势:1.产品种类不断丰富,应用范围不断普及2.产品性能不断提高3.产品功耗不断降低,体积不断缩小4.网络化、智能化程度不断提高5.软件成为影响价格的主要因素特点:专用性强、实时性好、可裁剪性好、可靠性高和功耗低等。应用领域:生产过程控制、数据采集、通信、军事、海洋、等领域硬件结构(★):微处理器外围电路外部设备软件结构(★):板级支持包实时操作系统应用编程接口应用程序分类(★):嵌入式处理器微控制器数字信号处理器主流的嵌入式操作系统:VxWorks,WindowsCE、uC/OS-II和嵌入式Linux。第2章(ARM所支持的汇编?)简答题:1、ARM微处理器的工作状态,及切换方法。(★)答:ARM和Thunb状态。切换方法:进入Thunb状态:当操作数寄存器的状态位(位0)为1时,执行BX指令,此外,当处理器处于Thumb状态时发生异常,则异常处理返回时,自动切换到Thumb状态。进入ARM状态:当操作数寄存器的状态位为0时,执行BX指令。此外,在处理器进行异常处理时,把PC指针放入异常模式链接寄存器,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。2、NANDFlash自动引导模式的流程(★)1.当系统复位后,如果自动引导模式使能(OM[1:0]=00).系统就会自动将NANDFlash的前4KB复制到Steppingstone中。2.将Setppingstone映射到nCCS0中。3.CPU从steppingstone中开始执行程序,这段程序的功能是将NANDFlash中Bootloader的第二阶段程序复制到SDRAM中,然后再跳转到SDRAM中执行引导程序的第二阶段代码。3、电源管理模式及切换方法(★)Normal模式:为所有外设和一些基本的模块提供时钟。Slow模式:为通过一个慢时钟来降低电源功耗Power-off模式:为断开内部电源,只给内部的唤醒逻辑供电。IDLE模式:为断开提供给CPU的时钟。4、串口操作流程数据发送、数据接收、中断/DMA产生、波特率发生、loop-back模式、红外模式和自动流控制。5、ARM处理器对异常的处理流程1.保存异常返回地址到rl4_execption_mode2.保存当前CPSR到CPSR_execption_mode3.改写CPSR以切换到相应的异常模式和处理器状态4.禁止IRQ5.跳转到相应的异常向量表人口进行异常处理5.异常返回程序题:1、编写一简单ARM汇编程序段,实现1+2+…+100的运算2、假设LED1接在GPF7上,GPF7输出0时LED灯亮,输出1时LED灯熄灭。用ARM汇编编写程序点亮LED灯。注:GPFCON寄存器地址:0x56000050;GPFDAT寄存器地址:0x56000054;GPF7对应GPFCON中的[15,14]位,位值为00:输入;01:输出;10:EINT7。TextGlobal-start-startLDRR0,=0x56000050MOVR1,#0x56000050STRR1,[R0]LDRR0,=0x56000054MOVR1,#0X00000000STRR1,[R0]MAIN_LOOP:BMAIN_LOOP若为0X000000080则灯灭3、写一段ARM汇编程序:循环累加队列MyArray中的所有元素,直到碰上零值元素,结果放在R4中。LDRR0,[R1],#8;将存储器地址为R1的字数据读入寄存器R0,并将R1+8的值存入R1。4、指出下面各条指令的寻址方式。SUBR0,R1,R2寄存器寻址SUBSR0,R0,#1立即寻址MOVR0,R2,LSL#3寄存器移位寻址SWPR1,R1,[R2]寄存器间接寻址LDRR2,[R3,#0x0C]基址变址寻址5、解释下面的每条ARM汇编语句:ADDR0,R0,#0x3fADDR3,R2,R1,LSLR4LDMIAR0,{R1,R2,R3,R4}MULSR0,R1,R2STRR0,[R1,#8]第3章:1、掌握gcc命令,及常用编译选项P66Gcc命令格式:gcc[选项]文件列表常用选项:1.输出文件选项(-O)2.链接文件库选项3.指定头文件目录选项(-I)4.指定库文件目录选项(-L)5.警告选项6.调试选项7.优化选项2、掌握GCC编译过程P64一、预编译:1.把include中的头文件复制到要编译的源文件中。2.用实际值替代define文本。3.在调用宏的地方进行宏替换gcc-Ehello.c二、编译:1.检查代码的语法。2.将编译后的文件替换或汇编语言,并自动生成后缀为.s的文件gcc-stest.c。三、汇编。将汇编语言代码变成目标代码gcc-ctest.c四、连接目标代码,并生成可执行文件。gcc-otesttest.o/gcc-otesttest.c3、gdb调试程序的方法,及常用命令P70-731.编译生成可执行程序。2.启动GDB。3.设置断点。4.运行程序。5.单步执行。6.继续执行。7.退出。4、Makefile文件的编写(要会写),特别是Makefile预定义变量(含义)的使用P75-81第4章:第七章的实验好好看看(实验手册)掌握嵌入式系统开发流程(★)1、交叉编译工具链的安装;2、安装配置TFTP服务;3、安装配置NFS服务;4、C-Kermit的安装配置;5、minicom的安装配置;6、windows下超级终端的配置。2、掌握Bootloader的框架、及具体功能(★)框架:Stage1:用汇编语言编写,主要进行设备的初始化;Stage2:用C语言编增强程序的移植性和可读性。具体功能:可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到一个合适状态。3、掌握Linux内核主要的组成部分及它们的具体功能Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。进程调度:控制进程对CPU的访问。当需要选择下一个进程运行时,由调度程序选择最值得运行的进程;内存管理:允许多个进程安全的共享主内存区域;虚拟文件系统:隐藏了各种硬件的具体细节,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统;网络接口:提供了对各种网络标准的存取和各种网络硬件的支持;进程间通讯:支持进程间各种通信机制。4、掌握内核的裁剪和编译的步骤剪裁:1.选择硬件平台的类型2.选择内核对MTD和Flash存储器的支持3.选择内核对网络的支持。3.选择内核对文件系统的支持1、makeconfig进入命令行;2、makemenuconfig内核裁剪;编译:3、makeclean清理以前已生成的目标文件;4、makedep编译变量的依赖关系;5、makezImage生成内核镜像文件zImage。6、makemodules编译模块7、makemodules_install安装编译完成的模块5、掌握根文件系统的构建步骤1、建立基本的目录结构;2、交叉编译BusyBox;3、创建配置文件;4、利用cramfs工具创建根文件系统映像文件。第5章1、掌握设备驱动程序的功能、组成;驱动程序与应用程序的区别;(★)功能:1、对设备初始化和释放;2、数据传送;3、检测和处理设备出现的错误。组成:1、自动配置和初始化子程序;2、服务于I/O请求的子程序;3、中断服务子程序。区别:第一:主动与被动的区别。应用程序有一个main函数,总是从些函数开始主动执行一个任务,而驱动程序安装之后,便停止工作,并等待被应用程序调用。第二:使用的库函数不同。第三:程序运行的区域不同。驱动程序工作在内核态;应用程序工作在用户态。2、设备文件的常用接口(★)open、close、read、write、ioctl3、驱动程序的动态安装与卸载(书本上有个框图)insmod、rmmod4、掌握查看驱动模块、测试驱动的方法(★)Lsmod5、掌握驱动程序中重要的数据结构file_operations、file和indode6、掌握教材上的驱动程序实例(demo和AD驱动)(★)P127-P138简答题:1、ADC转换器的工作流程(★)初始化时,先将寄存器各位清空。转换时,先将寄存器的最高位置1,再将寄存器的数值送入DAC,经D/A转换后生成模拟量送入比较器中与输入的模拟量进行比较,若VsVi,则该位的1被保留,否则被清除;重复上述过程,直至最低位,最后寄存器中的内容即为输入模拟值转换成的数字量。1、设置A/D转换器的相关参数2、选择A/D转换器的输入通道3、命令A/D转换器开始转换4、读取ADCDAT0数据寄存器的低10位数据,就是A/D转换结果2、驱动程序的编译、安装和测试方法(★)编译:一般采用Make工具安装:使用insmod测试:编写一个应用程序3、驱动程序查用函数,及参数列表中各个参数的意义。P125-P127(设备注册,创建,中断号的申请用什么函数)字符设备注册及注销函数:字符设备驱动程序可通过register_chrdev函数向内核注册设备,又可通过unregister_chrdev函数向内核注销设备。中断申请和释放函数:设备驱动程序可通过request_irq函数向内核申请中断,又可通过free_irq函数释放中断。阻塞型I/O操作函数:可以通过调用以下函数让进程进入睡眠状态。voidsleep_on(structwait_queue**q);voidinterrutible_sleep_on(structwait_queue**q);又可以通过调用以下函数唤醒进程。voidwake_up(structwait_queue**q);voidwake_up_interrutible(structwait_queue**q);并发处理函数:在编写驱动程序时,需要考虑进程并发处理。当一个进程请求内核驱动程序模块服务时,如果此时内核模块正忙,则可以将进程放入睡眠状态直到驱动程序模块空闲。可以通过调用以下函数完成并发处理。voidup(structsemaphore*sem);voiddown(structsemaphore*sem);intdown_interruptible(structsemaphore*sem);内核空间和用户空间的数据传递函数:Linux运行在两种模式下:内核模式和用户模式,又叫内核态和用户态。内核模式对应于内核空间,用户模式对应于用户空间。unsignedlongcopy_to_user(void*to,constvoid*from,unsignedlongcount);unsignedlongcopy_from_user(void*to,constvoid*from,unsignedlongcount);设备文件自动创建函数:可通过devfs_register函数完成设备的注册,以及设备文件的自动创建。4、驱动程序的加载方法(★)执行insmod命令加载
本文标题:2018-2019嵌入式期末复习材料
链接地址:https://www.777doc.com/doc-2398532 .html