嵌入式系统课后习题部分答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1-1.简述嵌入式系统的定义。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。
1-2.简述嵌入式系统的组成。
从体系结构上看,嵌入式系统主要由嵌入式处理器、支撑硬件和嵌入式软件组成。其中嵌
入式处理器通常是单片机或微控制器,支撑硬件主要包括存储介质、通信部件和显示部件
等,嵌入式软件则包括支撑硬件的驱动程序、操作系统、支撑软件及应用中间件等。
嵌入式系统的组成部分是嵌入式系统硬件平台、嵌入式操作系统和嵌入式系统应用。嵌入
式系统硬件平台为各种嵌入式器件、设备(如ARM 、PowerPC、Xscale、MIPS等);嵌入
式操作系统是指在嵌入式Linux、uCLinux、WinCE等。
1-3.ARM7处理器使用的是(ARMv4)指令集。ARM7内核采用冯·诺依曼体系结构,数据
和指令使用同一条总线。内核有一条3级流水线,执行ARMv4指令集。
1-6.ARM9采用的是(5)级流水线设计。存储器系统根据哈佛体系结构(程序和数据空间
独立的体系结构)重新设计,区分数据总线和指令总线。
第二章
2-1.简述ARM可以工作在几种模式。
ARM处理器共有7种工作模式:用户模式(User)、快速终端模式(FIQ)、外部中断模式(IRQ)、特权模式(svc)、数据访问中止模式(Abort)、未定义指令中止模式(Undef)、系统模式(System)。除用户模式外其他6种模式称为特权模式。在特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式切换。再除去系统模式,其余5种模式又称为异常模式。
2-2.ARM核有多少个寄存器?
ARM处理器有如下37个32位长的寄存器:
(1)30个通用寄存器;
(2)6个状态寄存器:1个CPSR(Current Program Status Register,当前程序状态寄存器),5个SPSR(Saved Program Status Register,备份程序状态寄存器);
(3)1个PC(Program Counter,程序计数器)。
2-3.什么寄存器用于存储PC和LR寄存器?
寄存器R15称为程序计数器(Program
Counter,PC),寄存器R14又被称为连接寄
存器(Link Register,LR)。
2-4.R13通常用来存储什么?
R13(the Stack Point,SP,栈指向),用于存
储堆栈指针。
2-5.系统模式使用的寄存器最少。(不确定)
2-6.CPSR的(第5位T位)反映了处理器的
状态。P15
2-7.ARM有哪几个异常类型?P20
ARM体系结构中,存在7种异常处理。
复位异常、未定义指令异常、软中断、预取指令异常、数据访问中止异常、外部中断请求、快速中断请求。
2-8.复位后,ARM处理器处于何种模式、何种状态?
ARM状态?!(不清楚)
2-9.BIC指令有什么作用?
BIC(Bit Clear)位清零指令,将寄存器Rn的值与第2个源操作数shifter_operand的值的反码按位做“逻辑与”操作,结果保存到Rd中。指令的语法格式
BIC{
2-10.当指令SWI指令时,会发生什么?
软件中断指令(Software Interrupt,SWI)用于产生软中断,从而实现从用户模式变换到管理模式,CPSR保存到管理模式的SPSR中,执行转移到SWI向量,在其他模式下也可以使用SWI指令,处理器同样切换到管理模式。
3-2.如何从ARM状态切换到Thumb状态?P54
对于汇编程序来说,可以有两种方法来实现程序状态的切换。第一种方法是利用连接器提供的交互子程序Veneer来实现程序状态的切换,这时用户可以使用指令BL来调用子程序;第二种方法是用户自己编写状态切换的程序。
BX指令
ARM状态下的BX指令,使程序跳转到指令中指定的参数Rm所指定的地址执行程序,Rm的第0位复制到CPSR 中的T位,bits[31∶1]移入PC。
指令的语法格式如下:
BX{
3-3.在ARM汇编中如何定义一个全局的数字变量?P61
GBLA、GBLL和GBLS伪操作用于定义一个ARM程序中的全局变量并将其初始化。其中GBLA伪操作用于定义一个全局的数字变量并初始化为0。格式为:
GBLA
3-5.AAPCS过程调用标准的内容是什么?(书上没有,一下为网上收集的内容,如果有听课的同学,请更正并通知大家)过程调用标准ATPCS(ARM-Thumb Produce Call Standard)规定了子程序间相互调用的基本规则,ATPCS规定子程序调用过程中寄存器的使用规则、数据栈的使用规则及参数的传递规则。
●寄存器使用规则
(1)子程序间通过寄存器R0~R3传递参数,寄存器R0~R3可记作A1~A4。被调用的子程序在返回前无须恢复寄存器R0~R3的内容。
(2)在子程序中,ARM状态下使用寄存器R4~R11来保存局部变量,寄存器R4~R11可记作V1~V8;Thumb 状态下只能使用R4~R7来保存局部变量。
(3)寄存器R12用作子程序间调用时临时保存栈指针,函数返回时使用该寄存器进行出栈,记作IP;在子程序间的链接代码中常有这种使用规则。
(4)通用寄存器R13用作数据栈指针,记作SP。
(5)通用寄存器R14用作链接寄存器;
(6)通用寄存器R15用作程序计数器,记作PC 。
●数据栈使用规则
过程调用标准规定数据栈为FD类型,并且对数据栈的操作时要求8字节对齐的。
●参数传递规则
1.参数个数可变的子程序参数传递规则
对于参数个数可变的子程序,当参数个数不超过4个时,可以使用寄存器R0~R3来传递;当参数个数超过4个时,还可以使用数据栈进行参数传递。
2.参数个数固定的子程序参数传递规则
如果系统不包含浮点运算的硬件部件且没有浮点参数时,则依次将各参数传送到寄存器R0~R3中,如果参数个数多于4个,将剩余的字数据通过数据栈来传递;
如果包括浮点参数则要通过相应的规则将浮点参数转换为整数参数,然后依次将各参数传送到寄存器R0~R3中。如果参数多于4个,将剩余字数据传送到数据栈中,入栈的顺序与参数顺序相反,即最后一个字数据先入栈。
⏹如果系统包含浮点运算的硬件部件,将按照如下规则传递:
各个浮点参数按顺序处理
为每个浮点参数分配寄存器。分配方法是:找到编号最小的满足该浮点参数需要的一组连续的FP寄存器进行参数传递。
⏹子程序结果返回规则
(1)结果为一个32位的整数时,通过寄存器R0返回;结果为一个64位整数时,通过寄存器R0,R1返回。
(2)结果为一个浮点数时,可以通过浮点运算部件的寄存器F0、D0或者S0来返回;结果为复合型的浮点数(如复数)时,可以通过寄存器F0~Fn或者D0~Dn来返回。
(3)对于位数更多的结果,需要通过内存来传递。
3-7.汇编代码中如何调用C代码中定义的函数?P90
如C中定义函数int g(int,int,int);先在汇编程序开始处声明C程序g(),如:IMPORT g
汇编中调用指令为:BL g
网上资料:在ARM开发工具编译环境下,汇编程序中要使用IMPORT伪操作声明将要调用的C程序。