嵌入式练习题1,2

更新时间:2024-04-20 03:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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 处理器的当前程序状态寄存器,请简单说明各位的功能。

3130292827876543210IFTM4M3M2M1M0ARM7当前程序状态寄存器NZCV

N:负标志位,运算结果的第31位值,记录标志设置的结果。

Z:零标志位,如果标志设置操作的结果为0,则置位。

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

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

T:控制位,置位时处理器运行在Thumb状态下,清零时处理器运行在ARM状态下。 M0~M4:模式控制位,定义处理器的7中模式。 其余位为保留位,留作将来使用。

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

存储器地址Flash存储器组0ARM7局部总线总线接口预取指缓存Flash存储器组1预取指缓存分支跟踪缓存分支跟踪缓存2×128位2×128位数据缓存区选择存储器数据/指令

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

程序顺序执行时,一个Flash组包含当前正在取指的指令和包含该指令的整个Flash

行,而另一个Flash组则包含或正在预取指下一个连续的代码行。

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

存着程序跳转后可执行到的指令。

程序获取数据时,如果数据不在MAM的数据缓冲区,那么MAM会执行一次Flash读操

作,把一个128位的数据行存入数据缓冲区,这样就加快了按顺序访问数据的速度。 7、 下图是ARM 系统存储器映射图,试对该映射图进行简单的描述说明。

4.0GB3.75GB3.5GB3.0GB2MBAHB外设保留2MBVPB外设0xFFFF FFFF0xF000 00000xE000 00000xC000 00000x8400 00000x8300 00000x8200 00000x8100 00000x8000 00000x7FFF E0000x4000 40000x4000 00000x0004 00000x0002 00000x0000 0000

保留给片外存储器2.0GB16MBBank316MBBank216MBBank116MBBank08KBBoot Block(片内ROM存储器重映射)保留给片内RAM存储器16KB 片内静态RAM保留给片内FLASH存储器256KB 片内非失忆性存储器(LPC2124/2214)1.0GB0.0GB128KB 片内非失忆性存储器(LPC2114/2212)ARM7系统存储器映射8、下图是ARM 系统中断向量控制器(VIC)内部结构示意图,试说明VIC 的功能特点。

软件中断使能寄存器VICSoftInt软件中断清零寄存器VICSoftIntClear中断源[31:0]IRQ中断状态寄存器VICIRQStatus中断状态寄存器VICRawIntr中断使能清零寄存器VICIntEnClrFIQIRQFIQ中断状态寄存器VICFIQStatusFIQ中断信号中断使能寄存器VICIntEnable中断选择寄存器VICIntSelect高向量IRQ0向量IRQ0控制寄存器VICVectCntl0向量IRQ0使能中断源IRQ0VectAddr0优先级向量IRQ15向量地址0寄存器VICVectAddr0硬件优先级选择IRQ0IRQ中断信号向量IRQ15控制寄存器VICVectCntl15向量IRQ15使能中断源IRQ15VectAddr15向量地址15寄存器VICVectAddr15IRQ15DefIRQ向量地址寄存器VICVectAddr低非向量IRQ默认向量地址寄存器VICDefVectAddrDefIRQDefVectAddr

9、下图是ARM 系统每个I/O 端口的内部寄存器控制结构示意图,看图填写下表的寄存器功能说明内容。 序号 1 2 3 4 通用名称 IOPIN IOSET IODIR IOCLR 功能说明 从该寄存器中可以读出引脚的当前状态,和方向模式无关 该寄存器控制引脚输出高电平,为1时高电平,为0无效 该寄存器单独控制每个IO口的方向,为1时输出,为0时输入 该寄存器控制引脚输出低电平,为1时低电平为0无效 outinIOxDIRIOxDIRIOxCLRIOxSET10向量地址选择PINSELxPINSELxIOxPIN 10、下图是ARM7系统内部的定时器结构示意图,试说明内部定时器的功能特点。

中断标志寄存器(IR)匹配功能匹配寄存器0(MR0)匹配寄存器1(MR1)匹配寄存器2(MR2)匹配寄存器3(MR3)匹配控制寄存器(MCR)MAT[3:0]外部匹配寄存器(EMR)0x0000 0000比较器定时器计数值捕获功能捕获寄存器0(CR0)捕获寄存器1(CR1)捕获寄存器2(CR2)捕获寄存器3(CR3)CAP[3:0]捕获控制寄存器(CCR)定时器、计数器(TC)复位定时器控制寄存器(TCR)使能预分频器(PR、PC)PCLK

中断标志寄存器(IR)匹配功能匹配寄存器0(MR0)匹配寄存器1(MR1)匹配寄存器2(MR2)匹配寄存器3(MR3)匹配控制寄存器(MCR)MAT[3:0]外部匹配寄存器(EMR)0x0000 0000比较器定时器计数值捕获功能捕获寄存器0(CR0)捕获寄存器1(CR1)捕获寄存器2(CR2)捕获寄存器3(CR3)CAP[3:0]捕获控制寄存器(CCR)定时器、计数器(TC)复位定时器控制寄存器(TCR)使能预分频器(PR、PC)PCLK

本文来源:https://www.bwwdw.com/article/7dvp.html

Top