期末作业考核《嵌入式系统》满分100分一、判断题(每题3分,共30分)1.以32位RISC嵌入式处理器加嵌入式操作系统为标志的嵌入式系统为其发展的第三个阶段。答:对2.嵌入式系统的硬件一般包括嵌入式微处理器、外围电路和嵌入式外围设备等组成。答:对3.CodeWarrior具有很多功能,但不具备对文本文件进行比较的功能。答:对4.一般情况下,GNU交叉工具链包括若干个工具软件。答:对5.Linux内核的主要功能仅包括内存管理、任务调试、进度间通信和网络接口。答:对6.Linux采用的是树型目录结构,其中,最上层是根目录,其他的目录都是从根目录出发而生成的。答:对7.当程序状态寄存器CPSR的I位置1时,允许IRQ中断。答:对8.所谓大端序(也称为大端模式)是指字数据的高位字节存储在高地址中,而字数据的低字节则存放在低地址中。答:对9.DCW用于分配一段半字对齐的内存单元,DCWU分配的内存单元并不严格半字对齐。答:对10.一个程序(可以包含多个源文件)中至少要有一个ENTRY(可以有多个ENTRY),但一个源文件中最多只能有一个ENTRY(可以没有ENTRY)。答:对二、简答题(每题10分,50分)1.比较NorFlash和NandFlash有相同和不同之处?答:1)NOR和NAND是现在市场上两种主要的非易失闪存技术2)NOR闪存是随机存储介质,用于数据量较小的场合;NAND闪存是连续存储介质,适合存放大的数据。3)NOR地址线和数据线分开嵌入式系统中经常将NOR芯片做启动芯片使用NAND共用地址和数据总线4)NAND闪存的容量比较大NAND的速度要快于NOR闪存5)NOR闪存的可靠性要高于NAND闪存2.什么是源程序模拟器?它有哪些功能?答:1)源程序模拟器是在PC机上,通过软件手段模拟执行为某种嵌入式处理器编写的源程序的测试工具2)具有指令,周期和定时等三级模拟功能。3.通常Linux内核移植有哪些基本过程?答:1)阅读硬件文档:CPU体系结构及汇编,地址空间分布,寄存器列表及详细功能2)建立交叉汇编环境3)编写Bootloader4)内核移植和裁剪5)建立文件系统6)驱动开发4.假设R0的内容为0x8000,寄存器R1、R2内容分别为0x01与0x10,存储器内容为空,执行下述指令后,说明PC如何变化?存储器及寄存器的内容如何变化?答:STMIBR0!,{R1,R2}LDMIAR0!,{R1,R2}STMIBRO!,{R1,R2}此条指令有2步,IB表示执行前地址加41)[R0+4]←[R1];把0x01放到存储器0x8004,R0=80042)[R0+4]←[R2];把0x10放到存储器0x8008,R0=8008LDMIAR0!,{R1,R2};此条指令有2步,IA表示执行后地址加41)[R0]→[R1],[R0+4]把0x8008内容放到存R1,R0加4此步完R0=800c,R1=Ox102)[R0]→[R2],[R0+4]把0x800c内容放到存R2,R0加4最终R0=80010,R2=[0x800c]5.在ARM汇编语言程序编写规范中有哪些规则?答:子程序间通过寄存器R0~R3来传递参数。这时,寄存器R0~R3可记作a0~a3。被调用的子程序在返回前无需恢复寄存器R0~R3的内容。在子程序中,使用寄存器R4~R11来保存局部变量。这时,寄存器R4~R11可以记作v1~v8。如果在子程序中使用了寄存器v1~v8中的某些寄存器,则子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值。在Thumb程序中,通常只能使用寄存器R4~R7来保存局部变量。寄存器R12用作过程调用中间临时寄存器,记作IP。在子程序之间的连接代码段中常常有这种使用规则。寄存器R13用作堆栈指针,记作SP。在子程序中寄存器R13不能用作其他用途。寄存器SP在进入子程序时的值和退出子程序时的值必须相等。寄存器R14称为连接寄存器,记作LR。它用于保存子程序的返回地址。如果在子程序中保存了返回地址,寄存器R14则可以用作其他用途。寄存器R15是程序计数器,记作PC。它不能用作其它用途。三、问答及应用题(每小题10分,共20分)1.ARM处理器总共有多少个寄存器,这些寄存器按其在用户编程中的功能是如何划分的?这些寄存器在使用中各有何特殊之处?答:ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器。31个通用寄存器根据其编程特点可分为如下几种类型:1、不分组寄存器R0-R7为所有模式共享2、分组寄存器R8-R12R8_fiq-R12_fiq:FIQ模式下的寄存器R8-R12:其它模式共享3、分组寄存器R13-R14分为6组,用户、系统一组,其他每种模式一组。R13_mode通常用作堆栈指针SP,R14_mode通常用作子程序链接寄存器,当进入子程序时,常用来保存PC的返回值其中,mode为以下几种模式之一:usr、fiq、irq、svc、abt、und。4、程序寄存器R15(PC)所有模式共享6个状态寄存器:一个CPSR当前程序状态寄存器,保存当前程序状态。五个程序状态备份寄存器SPSR(svc,abt,und,irq,frq),只有在异常模式下,才能被访问;各异常模式都拥有属于自己的SPSR,当发生异常时,SPSR用来保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。2.假设变量STR1中保存了一个以0终结的字符串,试编写一个ARM汇编子程序STRCOPY实现将STR1中内容的逆序存入到STR2开始的存储单元中。STR1和STR2的地址作为参数传递给汇编子程序。对于STR:前变址:STRr0,[r1,#40]回写前变址:STRr0,[r1,r2#40]!后变址:STRr0,r1,r2#40