(1) 零偏移;(2) 前索引偏移;(3) 程序相对偏移;(4) 后索引偏移。LDRB就是读出指定地址的数据并存入指定寄存器,LDRSB读出指定地址的数据,并高24位用符号位扩展,再存入指定寄存器。
(5)请指出MOV指令与LDR加载指令的区别及用途。
MOV 将 8 位图(pattern)立即数或寄存器(operand2)传送到目标寄存器(Rd),可用于移位 运算等操作。读取指定地址上的存储器单元内容,执行条件AL.
(6)CMP指令的操作是什么?写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。
CMP 指令将寄存器Rn 的值减去operand2 的值,根据操作的结果更新CPSR 中的相应条 件标志位,以便后面的指令根据相应的条件标志来判断是否执行。 CMP R1,0x30
SUBHI 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 FFFF0000),使其执行两个寄存器的加法操作。调试程序,每执行一次加法 操作就将标志位的状态记录下来,并将所得结果与您预先计算得出的结果相比较。如果两个 操作数看作是有符号数,如何解释所得标志位的状态?同样,如果这两个操作数看作是无符数,所得标志位又当如何理解?
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 ;声明代码段Examplel
第 页 共 21 页
16
ENTRY ;标识程序入口
CODE32 ;声明32位ARM指令 START MOV R0,#0 ;设置参数 MOV R1,#10
LOOP BL ADD_SUB ;调用子程序ADD_SUB B LOOP ;跳转到LOOP ADD_SUB
ADDS R0,R0,R1 ;R0=R0+R1 MOV PC,LR ;子程序返回 END ;文件结束
程序清单4.2 读取SMI立即数 T_bit EQU 0X20 SWI_Handler
STMFD SP!,{R0_R3,R12,LR} ;现场保护 MRS R0,SPSR ;读取SPSR STMED SP!,{R0} ;保存SPSR TST R0,#T_bit ;测试T标志位
LDRNEH R0,[LR,#_2] ;若是Thumb指令,读取指令码(16位) BICNE R0,R0,,#0xFF00 ;取得Thumb指令的8位立即数
LDREQ R0,[LR,#_4] ;若是ARM指令,读取指令码(32位) BICEQ R0,R0,#0Xff000000 ;取得ARM指令的24位立即数 ……
LDMFD SP!,{ R0_R3,R12,PC} ;SWI异常中断返回
程序清单4.3使用IRQ中断 ENABLE_IRQ
MRS R0,CPSR
BIC R0,R0,#0x80 MSR CPSR_C,R0 MOV PC,LR
程序清单4.4禁能IRQ中断 DISABLE_IRQ
MRS R0 CPSR
ORR R0,R0,#0x80 MSR CPSR_C,R0 MOV PC,LR
程序清单4.5堆栈指令初始化 INTSTACK
WOV R0,LR ;保存返回地址 ;设置管理模式堆栈
MSR CPSR_C,#0xD3 LDR SP,stacksvc ;设置中断模式堆栈
MSR CPSR_C,#0xD2 LDR SP,Stacklrq ……
程序清单4.6小范围地址的加载 ……
ADR R0,DISP_TAB ;加载转换表地址
LDRB R1,[R0,R2] ;使用R2作为参数,进行查表
第 页 共 21 页
17
……
DISP_TAB
DCB 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90
程序清单4.7中等范围地址的加载 ……
ADR LR,RETURNI
ADRL R1,Thumb_sub+1 BX R1 RETURNI
……
CODE 16 Thumb_sub
MOV R1,#10 ……
程序清单4.8加载32位立即数 ……
LDR R0,=IOPIN ;加载GPIO的寄存器IOPIN的地址 LDR R1,[R0] ;读取IOPIN寄存器的值 ……
LDR R0,=IOSET
LDR R1,=0x00500500
STR R1,[R0] ;IOSET=0x00500500 ……
程序清单4.9软件延时 …… DELAYI NOP NOP NOP
SUBS R1,R1,#1 BNE DELAYI ……
程序清单4.10 ARM到Thumb的状态切换 ;文件名:TEST8.S
;功能:使用BX指令切换处理器状态 ;说明:使用ARMulate软件仿真调试
AREA Example8,CODE,READONLY ENTRY CODE32
ARM_CODE ADR R0,THUMB_CODE+1
BX R0 ;跳转并切换处理器状态 CODE16
THUMB_CODE
MOV R0,#10 ;R0=10 MOV R1,#20 ;R1=20
ADD R0,R1 ;R0=R0+R1 B END
(一)、填空题
1、嵌入式系统的三要素是嵌入、专用、计算机。
第 页 共 21 页
18
2、从嵌入式系统设计的角度来看,嵌入式软件结构可以分为循环轮询系统、前后台系统、单 处理器多任务系统以及多处理器多任务系统等几大类。
3、衡量系统实时性的主要指标有:响应时间、生存时间、吞吐量。 4、软件一般包括:程序、数据和文档。
5、嵌入式软件的体系结构通常包括:驱动层、操作系统层、中间件层和应用层。
6、嵌入式系统中的任务管理主要包括:创建任务、删除任务、改变任务状态和查询任务状态 等功能。
7、任务由代码、数据、堆栈和任务控制块TCB构成。
8、TCB包含操作系统用来控制任务所需要的信息,如任务状态、CPU寄存器、调度信息、内 存管理信息和I/O状态信息等。
9、任务的主要特性包括:动态性、并行性和异步独立性。
10、任务的特性可能通过优先级、周期、计算时间、就绪时间和截止时间等参数来进行描述。 11、任务的三种基本状态为:等待、就绪和执行。
12、BSP的主要特点是:硬件相关性与操作系统相关性。
13、评价实时操作系统的主要指标有:系统响应时间、任务切换时间、中断延迟等。 14、实时系统与分时以及批处理系统的主要区别是高及时性和高可靠性。
15、创建任务原语的主要功能有:为任务申请一个TCB并初始化、将新建任务设置为就绪状态 并放入就绪队列中。
16、采用优先级调度算法时,一个高优先级任务由阻塞状态变为就绪状态时,可以有非抢占式
和抢占式两种处理方式。
17、一个从磁盘上读文件的任务,在得到了所需要的文件信息后,它的状态应该从阻塞转换成
就绪。
18、存储管理中,对存储空间浪费是以内部碎片和外部碎片两种形式表现出来的。 19、地址重定位可以分为静态重定位和动态重定位两种。
20、静态重定位是在程序装入时进行,动态重定位是在程序执行时进行。
21、设备管理的主要目标是:提高外部设备的利用率、为用户提供统一的使用界面。
22、信号量的物理意义是当信号量值大于零时表示可分配资源的个数;当信号量值小于零时表
示等待该资源的任务的个数。
23、用P、V操作管理临界区时,一个任务在进入临界区前应对信号量执行P操作,退出临界区 时应对信号量执行V操作。
24、在嵌入式系统中,如果被多个任务同时操作,某些资源可能会变得不确定,这些资源包括:
共享事件结构、共享文件、共享硬件设备。
25、在对一个设备进行操作之前要完成下面三步:安装设备驱动、初始化设备、打开一个设备
并得到文件描述符。
26、块设备以块为单位传输数据,字符设备以字节为单位传输数据。__ (四)、简答题
1、什么是嵌入式系统?嵌入式系统的特点是什么?
嵌入式系统是以应用为中心,以计算机技术为基础,软件硬件可裁剪,功能、可靠性、 成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统的主要特点如下: 高实时性OS、系统内核小 专用性强 系统精简
实时性和可靠性要求高 嵌入式软件开发走向标准化
嵌入式系统需要专门的开发工具和环境 2、嵌入式软件的特点有哪些?
第 页 共 21 页
19
", 规模相对较小,开发难度大 ", 快速启动,直接运行 ", 实时性和可靠性要求高 ", 程序一体化 ", 两个平台
3、嵌入式系统的主要应用领域有哪些?
消费电子、通信设备、家庭设备、汽车电子、工业控制、军事国防、医疗电子等。 4、按实时性来分,嵌入式系统可分为几类?它们的特点是什么?
可分为硬实时系统和软实时系统。其中硬实时系统对响应时间有严格要求,如果系统
响应时间得不到满足,就会引起系统崩溃或致命的错误;软实时系统对响应时间有要求, 但系统响应时间得不到满足时,不会导致系统崩溃或致命的错误。 0 deadline time 1
Hard System Soft System
5、影响系统响应时间的主要因素有哪些? 影响系统响应时间的主要因素有: ", 任务调度算法 ", 任务执行时间 ", 事件发生的频率 ", 任务数量 ", 中断响应时间 ", 任务响应时间 ", 资源共享 ", 任务间通信
6、根据自己的理解描述嵌入式系统的发展趋势? 行业性嵌入式软硬件平台——标准化 互联网的普及——网络化
半导体技术的改善——小型化
3C技术的快速融合——功能多样化 使用者的需求——个性化
信息服务应用生活化——泛在化
28、请简述计数信号量的工作原理。
计数器信号量通常用于保护多实例访问的资源。计数信号量可以看成一个内存单元,
这个内存单元的内容保存一个计数值。当一个任务用semTake获取一个计数信号量时,会有 两种结果:
如果这个信号量的计数是非0的,那这个信号量的计数就会减1,调用semTake的任务也 会继续执行;
如果这个信号量的计数是0,调用semTake的任务会被阻塞,等待信号量的可用。如果
用semTake获取一个计数信号量时指定了超时,并且达到了超时值,这个任务会从阻塞队列 移出并移入到就绪队列,同时返回错误状态。有可能会有几个任务同时等待在一个计数信 号量上。
当一个任务调用semGive()释放一个计数信号量时,等待在这个计数信号量队列中的任 务会解除阻塞状态。如果没有任务等待,该信号量计数会加1。 29、简述消息队列的工作机制?工作模式?有何优缺点?
消息队列是任务之间传递信息的一种机制,允许多个任务,中断之间发送以指针方式
定义的变量或其他信息,指向的数据结构的变量类型也可以有所不同;可以看作多个邮箱 组成的数组,共用一个等待列表,可以用作计数型信号量。
第 页 共 21 页
20
主要的工作模式有两种:C/S模型、双工通信模型。 优点:可以携带少量信息,可以缓冲,防止峰值。
缺点:效率不高。传递指针信息,没有对消息进行复制,不能对原消息进行修改,效 率相对高(vxWorks会复制消息)。
30、简述管道的工作机制?与消息队列相比,各有什么优点?
管道是构筑于消息队列之上,由pipeDrv所控制的一个虚拟的I/O设备,具有标准的I/O 接口。
消息队列的优点:具有超时功能、消息有优先级、更快、可以被删除。
管道的优点:使用标准的I/O接口,如read(), write(),open(), close() ;可以通过io taskStdSet
()重定向;在Select()重可以使用文件描述符。 31、简要描述VxWorks中信号的定义和用途。
信号是一种软件通知,用以通知处理事件的任务。VxWorks支持软件信号功能,信号 异步地改变任务的控制流,任何任务都可以向另外一个任务发送信号。 信号多用于异常处理,很少用于任务间通信。
32、实时系统软件开发不同于其他软件工程的主要特征有哪些?
实时系统的设计是受资源约束的。时间是实时系统的首要资源,除此以外,其他系统 资源如内存大小等,在实现系统目标时都有可能与时间进行折衷。 实时系统是紧凑而复杂的,通常需要软件硬件协同设计。 实时系统的运行常常不需要用户的参与。
33、选择嵌入式系统处理器时主要考虑哪些因素?
主要考虑的因素有应用类型、I/O接口、主频、功耗、所支持的存储器类型、总线、价 格、封装、产品的生命力和厂家的实力、技术支持和第三方软件的支持。 34、选择嵌入式操作系统时主要考虑哪些因素? 是自建还是购买,或是使用开源软件;
应用对嵌入式操作系统的功能、性能的要求; 与硬件平台和开发工具的关系;
产品所属的应用领域是否有行业的标准或限制; 技术支持;
版税或服务费的问题。
第 页 共 21 页 21
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库史上最详细的嵌入式试题集(含答案)(4)在线全文阅读。
相关推荐: