当前位置:文档之家› 嵌入式系统课后答案整理版

嵌入式系统课后答案整理版

第一章思考与练习1、举出3个书本中未提到的嵌入式系统的例子。

答:红绿灯控制,数字空调,机顶盒2、什么叫嵌入式系统嵌入式系统:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

3、什么叫嵌入式处理器?嵌入式处理器分为哪几类?嵌入式处理器是为完成特殊的应用而设计的特殊目的的处理器。

嵌入式微处理器(Embedded Microprocessor Un it, EMPU)嵌入式微控制器(Microco ntroller Un it, MCU)嵌入式 DSP 处理器(Embedded Digital Signal Processor, EDSP)嵌入式片上系统(System On Chip)4、什么是嵌入式操作系统?为何要使用嵌入式操作系统?是一段在嵌入式系统启动后首先执行的背景程序,首先,嵌入式实时操作系统提高了系统的可靠性。

其次,提高了开发效率,缩短了开发周期。

再次,嵌入式实时操作系统充分发挥了 32位CPU的多任务潜力。

第二章1、嵌入式系统项目开发的生命周期分哪几个阶段?各自的具体任务是什么?项目的生命周期一般分为识别需求、提出解决方案、执行项目和结束项目4个阶段。

识别需求阶段的主要任务是确认需求,分析投资收益比,研究项目的可行性,分析厂商所应具备的条件。

提出解决方案阶段由各厂商向客户提交标书、介绍解决方案。

执行项目阶段细化目标,制定工作计划,协调人力和其他资源;定期监控进展,分析项目偏差,采取必要措施以实现目标。

结束项目阶段主要包括移交工作成果,帮助客户实现商务目标;系统交接给维护人员;结清各种款项。

2、为何要进行风险分析?嵌入式项目主要有哪些方面的风险?在一个项目中,有许多的因素会影响到项目进行,因此在项目进行的初期,在客户和开发团队都还未投入大量资源之前,风险的评估可以用来预估项目进行可能会遭遇的难题。

需求风险;时间风险;资金风险;项目管理风险 3、何谓系统规范?制定系统规范的目的是什么?规格制定阶段的目的在于将客户的需求,由模糊的描述,转换成有意义的量化数据。

4、何谓系统规划?为何要做系统规划系统规划就是拟定一个开发进程,使项目在合理的进程范围中逐渐建构完成。

其目地是让客户可以进一步地掌握系统开发的进程,并确定检查点,以让双方确定项目是否如预期中的进度完成。

5、为什么在项目结束前需要进行项目讨论?项目的讨论一个项目进行的反馈机制。

通过这一个程序,项目团队的经验才可以被记录下来,也就是说,这是一个撰写项目历史的过程。

ATy —*第二早1、ARM7TDMI中的T、D、M、I的含义是什么?64位乘法指令(带M后缀的)、支持片上调试(带D后缀的)、高密度16 位的Thumb 指令机扩展(带T后缀的)和EmbededICE 观察点硬件(带I后缀的) 2、ARM7TDMI 采用几级流水线?使用何种存储器编址方式?三级流水线(取指译码执行);使用了冯诺依曼(Von Neumann )结构, 指令和数据共用一条32位总线。

3、ARM处理器模式和ARM处理器状态有何区别?处理器模式指的是处理器在执行程序时在不同时刻所处的不同状态,处理器状态指的是处理器当前所执行的指令集。

4、分别列举ARM状态:的处理器模式和状态。

ARM状态Thumb状态模式:32位,这种状态下执行的是字方式的 ARM指令16位,这种状态下执行半子方式的 Thumb指令用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。

5、PC和LR分别使用哪个寄存器?PC使用R15寄存器,LR使用R14寄存器 6、R13寄存器的通用功能是什么?堆栈第四章1、基础知识(1)ARM7TDMI(-S)有几种寻址方式? LOR R1,[R0,#0x08]属于哪种寻址方式?1.寄存器寻址;2.立即寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基址寻址;6.多寄存器寻址;7.堆栈寻址;8.块拷贝寻址;9.相对寻址;LOR R1,[R0,#0x08]属于基址寻址。

(2)ARM指令的条件码有多少个?默认条件码是什么?16条,默认条件码是AL 0(3)ARM指令中第二个操作数有哪几种形式?举例 5个8位图立即数。

(1)立即数;(2)寄存器;(3)寄存器及移位常数;0x3FC (0xFF<<2 )、0、0xF0000000(0xF0<<24)、200(0xC8)、0xF0000001(0x1F<<28)。

(4)LDR/STR指令的偏移形式有哪4种? LDRB和LDRSB有何区别?(1)零偏移;(2)前索引偏移;(3)程序相对偏移;(4)后索引偏移。

LDRB 就是读出指定地址的数据并存入指定寄存器,LDRSB读出指定地址的数据,并高24位用符号位扩展,再存入指定寄存器。

(5)请指出MOV指令与LDR加载指令的区别及用途。

MOV将8位图(pattern)立即数或寄存器(operand2)传送到目标寄存器(Rd),可用于移位运算等操作。

读取指定地址上的存储器单元内容,执行条件AL.(6) CMP指令的操作是什么?写一个程序,判断 R1的值是否大于0x30,是则将R1减去0x30 oCMP指令将寄存器Rn的值减去operand2的值,根据操作的结果更新CPSR 中的相应条件标志位,以便后面的指令根据相应的条件标志来判断是否执行。

CMP R1,0x30SUBHI R1,R1,0x30(7)调用子程序是用B还是用BL指令?请写出返回子程序的指令?BL指令用于子程序调用。

MOV PC, R14(8)请指出LDR伪指令的用法。

指令格式与LDR加载指令的区别是什么? LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。

第二个数为地址表达式。

(9)ARM状态与Thumb状态的切换指令是什么?请举例说明。

BX指令,(10) Thumb状态与ARM状态的寄存器有区别吗? Thumb指令对哪些寄存器的访问受到一定限制?Thumb状态下不能更新 CPSR 中的ALU 状态标志。

,Thumb指令对R8~R15 寄存器访问受限。

(11)Thumb指令集的堆栈入栈、出栈指令是哪两条?PUSH POP(12)Thumb指令集的BL指令转换范围为何能达到±4MB ?其指令编码是怎样的?Thumb采用两条16位指令组合成22位半字偏移(符号扩展为32位),使指令转移范围为±4MB。

2有符号和无符号加法下面给出A和B的值,您可先手动计算A+B,并预测N、Z、V和C标志位的值。

然后修改程序清单4.1中R0、R1的值,将这两个值装载到这两个寄存器中(使用LDR伪指令,如LDR R0,=0x FFFFOOOO),使其执行两个寄存器的加法操作。

调试程序,每执行一次加法操作就将标志位的状态记录下来,并将所得结果与您预先计算得出的结果相比较。

如果两个操作数看作是有符号数,如何解释所得标志位的状态?同样,如果这两个操作数看作是无符数,所得标志位又当如何理解?0xFFFF000F 0x7FFFFFFF 67654321 (A) + 0x0000FFF1 + 0x02345678 +23110000 (B)结果:()( ) ( )3数据访问把下面的C代码转换成汇编代码。

数组a和b分别存放在以0x4000和 0x5000为起始地址的存储区内,类型为long(即32位)。

把编写的汇编语言进行编译连接,并进行调试。

for (i=0; i<8; i++){ a[i] = b[7-i];}第四章程序清单4.1寄存器相加;文件名:TESTI.S;功能:实现两个寄存器相加;说明:使用ARMulate软件仿真调试AREA Examplel,CODE,READONLY ENTRYCODE32START MOV R0,#0MOV R1,#10LOOP BL ADD_SUBADD_SUBB LOOPADD_SUBADDS R0,R0,R1MOV PC,LRENDLDREQRO, [LR, #_4] ;若是ARM 指令,读取指 令码(32位)BICEQRO , RO, #OXffOOOOOO;取得 ARM 指令的 24 位立即数LDMFD SP !,{ RO_R3 , R12 , PC}; SWI 异常中断返回程序清单4.3使用IRQ 中断ENABLE_IRQMRS RO , CPSR BIC RO , RO , #0x80 MSR CPSR_C , RO MOVPC , LR程序清单4.4禁能IRQ 中断 DISABLE, _IRQ MRS RO CPSR ORR RO , RO , #0x80 MSR CPSR_C , RO MOVPC , LR程序清单4.5堆栈指令初始化;声明代码段Examplel ;标识程序入口 ;声明32位ARM 指令;设置参数 ;调用子程序;跳转至U LOOP 程序清单4.2 读取SMI 立即数T_bit EQU0X20SWI_Ha ndlerSTMFD SP!,{R0_R3, R12,LR};现场保护MRS R0,SPSR ;读取SPSR STMED SP!,{R0} ;保存SPSR TSTR0,#T_bit ;测试T 标志位 LDRNEHR0,[LR ,#_2];若是Thumb 指令,读取指令码(16位);R0=R0+R1 ;子程序返回 ;文件结束即数BICNER0,R0,,#0xFF00;取得Thumb 指令的8位立WOV RO, LR ;保存返回地址;设置管理模式堆栈MSR CPSR_C , #0xD3LDR SP , stacksvc;设置中断模式堆栈MSR CPSR_C , #0xD2LDR SP , Stacklrq程序清单4.6小范围地址的加载ADR RO, DISP_TAB ;加载转换表地址LDRB R1 , [RO , R2] ;使用R2作为参数,进行查表DCB OxCO , 0xF9 , 0xA4 , OxBO , 0x99, 0x92, 0x82 , 0xF8 , 0x80 , 0x90程序清单4.7中等范围地址的加载ADR LR,RETURNIADRL R1,Thumb_sub + 1BX R1RETURNICODE 16Thumb_subMOV R1 , #10程序清单4.8加载32位立即数LDR LDR R0 , =IOPINR1 , [R0];加载GPIO的寄存器IOPIN的地址;读取IOPIN寄存器的值LDR R0 , =IOSETLDR R1 , =0x00500500STR R1 , [R0] ;l0SET=0x00500500 程序清单4.9软件延时DELAYINOPNOPNOPSUBS R1 , R1, #1BNE DELAYI程序清单4.10 ARM到Thumb的状态切换;文件名:TEST8.S;功能:使用BX指令切换处理器状态;说明:使用ARMulate软件仿真调试AREA Example8,CODE,READONLYENTRYCODE32ARM_CODE ADR R0,THUMB_CODE+1BX R0 ;跳转并切换处理器状态CODE16THUMB_CODEMOV R0,#10 ;R0=10MOV R1,#20 ;R1=20ADD R0,R1 ;R0=R0+R1BEND。

相关主题