嵌入式练习题

嵌入式练习题
嵌入式练习题

1. 什么是嵌入式系统?其特点有些什么?

答:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。

特点:(1)通常是面向特定应用,低功耗、体积小、集成度高;

(2)是技术密集、资金密集、高度分散、不断创新的知识集成系统;

(3)软硬件必须高效率地设计,根据应用需求量体裁衣,去除冗余;

(4)与具体应用有机结合,具有较长的生命周期;

(5)为提高执行速度和系统可靠性,软件一般固化在存储器芯片或单片机本身中;

(6)本身不具备自举开发能力,必须有一套开发工具和环境才能进行开发。

2. 嵌入式系统的BooTLoader的功能是什么?

答: BooTLoader是系统加电后,操作系统内核或用户应用程序运行之前,首先必须运行的一段程序,即引导加载程序。通过这段程序,为最终调用操作系统内核、运行用户应用程序准备好正确的环境。

3. 什么是嵌入式操作系统?为何要使用嵌入式操作系统?

答:嵌入到对象体系中的专用计算机应用系统。

4. 目前嵌入式操作系统有哪些?

答:(1)Windows CE(2)VxWorks(3)pSOS(4)QNX(5)Palm OS(6)嵌入式Linux 5. 构造嵌入式开发环境有哪几种形式?

答:(1)交叉开发环境(2)软件模拟环境(3)评估电路板

6. 嵌入式系统开发的基本流程?

答:(1)系统定义与需求分析

(2)规格说明

(3)系统结构设计

(4)构件设计

(5)系统集成

7. 什么是可编程片上系统?

答:用可编程逻辑技术把整个系统放到一块硅片上,称作可编程片上系统PSOC.它是一种特殊的嵌入式系统,首先它是SOC,即由单个芯片实现整个系统的主要逻辑功能,具有一般SOC基本属性;其次,它又具备软硬件在系统可编程的功能,是可编程系统,具有可裁剪、可扩充、可升级等灵活的设计方式。

8. 有时要使用Thumb技术的原因?

答:16位Thumb指令集是32位ARM指令集的子集,用16位代码密度的指令获得32位处理器的性能既节省存储空间及成本,又不降低处理性能,低功耗,小体积,低成本。

9. ARM处理器的工作模式有哪几种?

答:用户模式,系统模式,管理模式,中止模式,未定义模式,IRQ模式,FIQ模式

10. 寄存器R13,R14,R15的专用功能各是什么?

答:R13寄存器的作用通常是堆栈指针,SP;

R14用作子程序链接寄存器,LR;

R15的功能是程序计数器,PC。

11. 寄存器CPSR,SPSR的功能各是什么?

答:(1)CPSR寄存器称为当前程序状态寄存器,又称R16,在所有处理器模式下CPSR 都是同一个物理寄存器,保存了程序运行的当前状态。包括各种条件标志、中断禁止/允许位、处理器模式位以及其它状态和控制信息。

(2)在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR,当异常出现时,SPSR用于保存 CPSR的状态,以便异常返回后恢复异常发生时的工作状态。

12. PC和LR分别使用哪个寄存器?

答:PC使用R15,LR使用R14

13. ARM的异常有哪几种,各进入何种工作模式?他们退出各采用什么指令?

答:(1)复位异常,(管理模式);

(2)未定义指令异常,(未定义模式);

(3)软件中断(SWI)异常,(管理模式);

(4)指令预取中止异常,(中止模式);

(5)数据访问中止(Data Abort)(中止模式);

(6)外部中断请求(IRQ)(IRQ模式);

(7)快速中断请求(FIQ)(FIQ模式)。

异常返回指令:(1)SWI,未定义的返回:MOVS PC,R14;

(2)数据中止返回并重新存取:SUBS PC,R14,#8

(3)IRQ,FIQ,预取中止的返回:SUBS PC,R14,#4

14. 什么是小端和大端存储器组织?

答:(1)小端存储系统中,字的地址对应该字最低有效字节所对应的地址;半字的地址对应该半字最低有效字节所对应的地址

(2)大端存储系统中,字的地址对应该字最高有效字节所对应的地址;半字的地址对应该半字最高有效字节所对应的地址

15. 什么是数据的边界对齐?

答:默认情况下,ADS编译器使用的是数据类型的自然边界对其方式。数据的自然对其方式是指:如果该数据类型是n个字节的,那么该数据类型就按n字节对齐。

16. ARM核现在有哪几种?

答:ARM7、 ARM9、ARM9E 、ARM10E,、SecurCore、StrongARM、Xscale

17. ARM的寻址方式有哪些?各写一条说明。

答:(1)立即寻址:ADD R6,R6,#128 ;R6=R6+128

(2)寄存器寻址:ADD R2,R3,R5 ;R2=R3+R5

(3)寄存器移位寻址:ADD R0,R1,R2.LSL#3 ;R0=R1+8*R2

(4)寄存器间接寻址:LDR R6,[R7] ;R6=[R7]

(5)变址寻址:LDR R2,[R3,#128] ;R2=[R3+128]

LDR R2,[R3,#4]! ;R2=[R3+4],R3=R3+4

LDR R2,[R3],#4 ;R2=[R3],R3=R3+4

(6)多寄存器寻址:LDMIA R2,{R3,R5,R7} ;R3=[R2],R5=[R2+4],R7=[R2+8]

(7)堆栈寻址:STMFD SP! {R1-R7,LR}

LDMFD SP! {R1-R7,LR}

(8)块拷贝寻址:LDMIA R0!{R2-R9}

STMIA R1,{R2-R9}

(9)相对寻址

18. 在ARM的立即寻址方式下其立即数如何在指令编码中表示?

答:在ARM数据处理指令中,当参与操作的第二操作数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到。其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作,8位常数记作immed_8,4位的循环右移值记作rotate_imm,有效的立即数是由一个8位的立即数循环右移偶数位得到。因此有效立即数immediate可以表示成:=immed_8循环右移(2×rotate_imm)19. 指令ADR,ADRL、LDR、NOP是如何处理地址值读入到寄存器中的?

答:ADR是将基于PC或者寄存器的地址值读入到寄存器的,ADR伪指令通常被替换成一条ADD 指令或SUB指令来实现该ADR指令的功能;而ADRL伪指令与ADR指令的最大不同之处是,它可以读取更大范围内的地址,而且被编译器替换成2条数据处理指令;LDR将一个32位的立即数或者一个地址值读取到寄存器中,大范围的地址读取;NOP在汇编时将被替换成ARM中的空操作。

20. 指令LDR R1,=0xFFF是如何将立即数0xfff读入到R1的?

答:由于需要读取的寄存器的数据超过了MOV及MVN指令可操作的范围,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。

LDR R1,[PC,offset_to_LPOOL]

LTORG ;声明数据缓冲池

LPOOL DCD OxFFF ;OxFFF放在数据缓冲池中。

21. 如何在c语言程序中内嵌汇编?

答:内嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定义,数据交换必须通过ATPCS进行。嵌入式汇编在形式上表现为独立定义的函数体

22. 如何在汇编语言程序访问C语言的全局变量?

答:汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。通过使用IMPORT关键词引人全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。

对于不同类型的变量,需要采用不同选项的LDR和STR指令,如下所示:

(1)unsigned char—— LDRB/STRB

(2)unsigned short——LDRH/STRH

(3)unsigned int——LDR/STR

(4)char ——LDRSB/STRSB

(5)Short——LDRSH/STRSH

23. 在C语言程序如何调用汇编语言程序?

答:为了保证程序调用时参数的正确传递,汇编程序的设计要遵守ATPCS。在汇编程序中需要使用EXPORT伪操作来声明,使得本程序可以被其它程序调用。同时,在C程序调用该汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序。

24. 汇编语言程序调用C语言程序?

答:为了保证程序调用时参数的正确传递,汇编程序的设计要遵守ATPCS。在C程序中不需要使用任何关键字来声明将被汇编语言调用的C程序,但是在汇编程序调用该C程序之前需要在汇编语言程序中使用IMPORT伪操作来声明该C程序。在汇编程序中通过BL 指令来调用子程序。

25. 在嵌入式C语言程序设计中为提高程序效率的相关设计技巧。

答:变量定义;参数传递;循环条件;以空间换时间;数学方法解决问题;使用位操作;

嵌入汇编。

24.Linux操作系统的内核、文件系统、编程接口等。P192 P201

25.嵌入式Linux操作系统的特点。

答:广泛的硬件支持、内核高效稳定、开放源码,软件丰富、优秀的开发工具、完善的网络通信和文件管理机制。

26.Windows CE操作系统及其特点。

答:Windows CE是一个32位、多任务、多线程的操作系统,其开放式的设计结构适用于各种各样的设备,其主要特点:

CE是一种压缩并可升级的软件系统,即使在小内存条件下,也能提供较高的性能;

CE具有便于携带的优点,可以运行于多种微处理器上;

CE拥有很好的电源管理系统,能延长移动设备的电池寿命;

CE支持标准的通讯系统,可以非常方便地访问Internet,发送和接受电子邮件,浏览万维网。

27.程序解释

(1)

AREA COPYBS,CODE,READONLY ;定义一个代码段

ENTRY ;程序入口

LDR RO,=SRC ;取得原数据表的表头

LDR R1,=DST ;取得目标数据表的表头

MOV R2,#20 ;R4作为循环控制

BCOPY MOVS R3,R2,LSR,#3 ;R3=R2 <<3 逻辑右移3位

BEQ CWORD ;若Z=1,跳转到CWORD

OCOPY LDMIA R0!,{R4-R11} ;加载R0指向的地址上的多字数据,保存到R4~R11中,R0值更新

STMIA R1!,{R4-R11} ;将R4-R11的数据存储到R1指向的地址上,R1值更新

SUBS R3,R3,#1 ;R3=R3-1

BNE OCOPY ;若Z=0,跳转到OCOPY

CWORD AND R2,R2,#7 ;R2=R2&7

BEQ STOP ;若Z=1,跳转到STOP

WCOPY LDR R3,{R0},#4 ;将R3中的字数据读入以R0为地址的存储器中,并将新地址R0+4写入R1

STR R3,{R1},#4 ;将R3中的字数据写入以R1为地址的存储器中,并将新地址R1+4写入R1 SUBS R2,R2,#1 ;R2=R2-1

BNE WCOPY ;若Z=0,跳转到WCOPY

STOP ……

……

(2)

在程序中常常需要根据一定的参数选择执行不同的子程序。跳转表中存放的是各子函数的地址,选择不同的子程序的参数是该子程序在跳转表中的偏移量。在本例中R3寄存器中存放的是跳转表的基地址(首选地址,其中存放的是第一个子程序的地址)。R0寄存器的值用于选择不同的子程序;当R0为0时,选择的是子程序DoAdd;当R0为1时,选择的是子程序DoSub。在ADS编译环境程序如下:

AREA Jump,CODE,READONLY ;设置本程序的名称及属性

NUM EQU 2 ;跳转表中的子程序个数

ENTRY ;程序执行的入口点

Start MOV R0,#0 ;设置3个参数,R0选择调用哪个子程序

MOV R1,#3 ;R1为子程序要用的参数

MOV R2,#2 ;R2为子程序要用的参数

BL Func ;调用子程序Func,进行算术运算

Stop MOV R0 ,#0x18 ;本条与下条指令的作用是参数传递

LDR R1,=&20026

SWI 0x123456 ;将CPU的控制权交给调试器

Func CMP R0,#NUM ;判断R0是否在有效范围之内

MOVHS PC,LR ;如果超出范围则程序返回

ADR R3,JTable ;读取跳转表的基地址

LDR PC,【R3,R0,LSL #2】;根据参数R0的值跳转到相应的子程序

JTable DCD DoAdd ;当参数R0为0时上面的代码将选择DoAdd

DCD DoSub ;当参数R0为1时上面的代码将选择DoSub

DoAdd ADD R0,R1,R2 ;子程序DoAdd执行加法操作

MOV PC,LR ;子程序返回

DoSub SUB R0,R1,R2 ;子程序DoSub执行减法操作

MOV PC,LR ;子程序返回

END ;结束汇编、

简答题

1、什么是嵌入式处理器,嵌入式处理器可以分为几大类?

答:嵌入式处理器是为了完成特殊的应用而设计的特殊目的的处理器;

分为嵌入式微处理器、嵌入式微控制器、嵌入式DSP处理器、嵌入式片上系统(SOC)。

2、广泛使用的三种类型的操作系统?

答:多道批处理操作系统、分时操作系统以及实时操作系统。

3、ARM是什么样的公司?

答:它是一家微处理器行业的知名企业,该企业设计了大量高性能、廉价、耗能低的RISC 处理器。特点是只设计芯片,而不生产。它将技术授权给世界上许多著名的半导体、软件和OEM厂商,并提供服务。

4、什么是RISC?什么是CISC?

答:RISC是精简指令集计算机的缩写,CISC是复杂指令集计算机的缩写

5、ARM9处理器采用什么样的体系结构,其可寻址地址空间多大?

答:ARM9处理器采用冯.诺依曼体系结构,寻址空间为4GB的8位字节寻址空间(1GB的32位字寻址空间)

6、ARM9处理器采用几级流水线处理,使用何种存储器编址方式?

答:ARM9处理器采用RISC五级整数流水线结构

7、ARM处理器模式和ARM处理器状态有什么区别?

答:ARM处理器模式指用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式;

ARM处理器状态指ARM状态和Thumb状态

8、ARM9内部寄存器特点?

答:ARM9处理器内部共有37个32位的寄存器,其中31个用作通用寄存器,6个用作状态寄存器,每个状态寄存器只使用了其中的12位。

9、请说明MOV指令与LDR加载指令的区别和用途?

答:LDR的操作数既可以来源于寄存器也可以来源于存储器,MOV的操作数能来源于寄存器;LDR指令从内存中读取数据放入寄存器,用于对内存变量和数据的访问、查表、程序的跳转、外围部件的控制操作等;MOV指令将8位立即数或寄存器传送到目标寄存器(Rd),可用于移位运算等操作。

10、 ARM9微控制器内FLASH是多少位宽度的接口?它是通过哪个功能模块来提高FLASH的访问速度?

11、 FIQ、IRQ有什么不同?向量IRQ和非向量IRQ有什么不同?

答:FIQ是快速中断,具有最高优先级,中断处理转入FIQ模式;IRQ是普通中断,优先级低于FIQ,中断处理转入IRQ模式。

向量IRQ支持16个向量IRQ中断,16个优先级,能为每个中断源设置服务程序地址;非向量IRQ支持一个非向量IRQ中断,所有中断都共用一个相同的服务程序入口地址。12、什么是嵌入式处理器的最小系统?

答:最小系统是指提供嵌入式处理器运行所必须的条件的电路与嵌入式处理器共同构成的系统。

13、嵌入式处理器的最小系统包含那些基本电路?

答:最小系统包含时钟系统、供电系统、复位及其配置系统、存储器系统(可选)、调试测试系统(可选)。

基本电路包括:末级电源电路、前级电源电路、时钟电路、复位电路、程序存储器(可选)、调试接口电路(可选)。

二、问答题

1、ARM9支持哪几种指令集,各有什么特点?

答:支持ARM指令集和Thumb指令集两种。

ARM指令集:指令32位,效率高,代码密度低,所有ARM指令都是可以有条件执行的。Thumb指令集:指令16位,代码密度较高,Thumb指令仅有一条指令具备条件执行功能。保持ARM的大多数性能上的优势,是ARM指令集的子集。

2、ARM有几种处理器模式,简单介绍该几种模式的工作特点?

答:用户模式:正常程序运行的工作模式,不能直接从用户模式切换到其它模式系统模式:用于支持操作系统的特权任务等,可以直接切换到其它模式

管理模式:供操作系统使用的一种保护模式,只有在系统复位和软件中断响应时,才进

入此模式。

中止模式:用于虚拟内存和/或存储器保护。

未定义模式:支持软件仿真的硬件协处理器,只有在未定义指令异常响应时,才进入此模式。

快中断模式:用于快速中断处理,支持高速数据传输及通道处理,只有在FIQ 异常响应时,才进入此模式。

中断模式:用于通用中断处理,只有在IRQ 异常响应时,才进入此模式。 3、什么是引导程序?什么是启动程序?两者有什么区别?

答:引导程序是ARM 微处理器在上电或复位后首先运行Boot Block 中的一段代码;启动程序是在运行引导程序后,正式运行用户main 函数之前,还需要运行一段代码

引导程序由芯片厂商固化在芯片中,功能包括:判断运行哪个存储器上的程序、检查用户代码是否有效、判断芯片是否被加密、芯片的在应用编程(IAP)以及在系统编程功能(ISP)。启动程序由用户添加,功能包括:向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O 初始化、外围初始化,地址重映射等操作。 4、试比较说明JATG 工具和ISP 工具的异同点? 答:两者都可以将程序下载到开发板上,

JATG 通过计算机的并口和开发板的JATG 口下载程序;ISP 通过计算机的串口和开发

板的UART0下载程序。

5、下图是ARM 处理器的当前程序状态寄存器,请简单说明各位的功能。

167312043528293027

8ARM7当前程序状态寄存器

N :负标志位,运算结果的第31位值,记录标志设置的结果。 Z :零标志位,如果标志设置操作的结果为0,则置位。

C :进位标志位,记录无符号加法溢出,减法无错位,循环移位。 V :溢出标志位,记录标志设置操作的有符号溢出。

I :中断禁止标志位,置位时禁止IRQ 中断,否则允许IRQ 中断使能。 F :中断禁止标志位,置位时禁止FIQ 中断,否则允许FIQ 中断使能。

T :控制位,置位时处理器运行在Thumb 状态下,清零时处理器运行在ARM 状态下。 M0~M4:模式控制位,定义处理器的7中模式。

其余位为保留位,留作将来使用。

6、下图是ARM 系统内部的存储器加速模块(MAM )连接结构示意图,试针对该示意图说明MAM 如何实现存储器加速功能。

答:存储器加速模块中Flash存储器可以存放4个32位ARM指令或8个16位Thumb指令,它们被分成两组,轮番工作,及时的为CPU提供需要的指令和数据,以防止CPU取指暂停。

程序顺序执行时,一个Flash组包含当前正在取指的指令和包含该指令的整个Flash 行,而另一个Flash组则包含或正在预取指下一个连续的代码行。

程序出现分支时,在预取指缓存区中保存着将要执行的指令,在分支跟踪缓存区中保存着程序跳转后可执行到的指令。

程序获取数据时,如果数据不在MAM的数据缓冲区,那么MAM会执行一次Flash读操作,把一个128位的数据行存入数据缓冲区,这样就加快了按顺序访问数据的速度。

7、下图是ARM 系统存储器映射图,试对该映射图进行简单的描述说明。

0x8400 0000

0x0000 0000

2.0GB

1.0GB

0.0GB

3.0GB

3.5GB

4.0GB 3.75GB 0x0002 00000x0004 00000x4000 00000x4000 40000x7FFF E0000x8000 00000x8100 00000x8200 00000x8300 00000xC000 00000xE000 00000xF000 0000ARM7系统存储器映射

8、下图是ARM 系统中断向量控制器(VIC )内部结构示意图,试说明VIC 的功能特点。

9、下图是ARM 系统每个I/O 端口的内部寄存器控制结构示意图,看图填写下表的寄存器功能说明内容。

10、下图是ARM7系统内部的定时器结构示意图,试说明内部定时器的功能特点。

相关主题
相关文档
最新文档