嵌入式练习题12Word下载.docx
- 文档编号:17849534
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:13
- 大小:258.50KB
嵌入式练习题12Word下载.docx
《嵌入式练习题12Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式练习题12Word下载.docx(13页珍藏版)》请在冰豆网上搜索。
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)数据访问中止(DataAbort)(中止模式);
(6)外部中断请求(IRQ)(IRQ模式);
(7)快速中断请求(FIQ)(FIQ模式)。
异常返回指令:
(1)SWI,未定义的返回:
MOVSPC,R14;
(2)数据中止返回并重新存取:
SUBSPC,R14,#8
(3)IRQ,FIQ,预取中止的返回:
SUBSPC,R14,#4
14.什么是小端和大端存储器组织?
(1)小端存储系统中,字的地址对应该字最低有效字节所对应的地址;
半字的地址对应该半字最低有效字节所对应的地址
(2)大端存储系统中,字的地址对应该字最高有效字节所对应的地址;
半字的地址对应该半字最高有效字节所对应的地址
15.什么是数据的边界对齐?
默认情况下,ADS编译器使用的是数据类型的自然边界对其方式。
数据的自然对其方式是指:
如果该数据类型是n个字节的,那么该数据类型就按n字节对齐。
16.ARM核现在有哪几种?
ARM7、ARM9、ARM9E、ARM10E,、SecurCore、StrongARM、Xscale
17.ARM的寻址方式有哪些?
各写一条说明。
(1)立即寻址:
ADDR6,R6,#128;
R6=R6+128
(2)寄存器寻址:
ADDR2,R3,R5;
R2=R3+R5
(3)寄存器移位寻址:
ADDR0,R1,R2.LSL#3;
R0=R1+8*R2
(4)寄存器间接寻址:
LDRR6,[R7];
R6=[R7]
(5)变址寻址:
LDRR2,[R3,#128];
R2=[R3+128]
LDRR2,[R3,#4]!
;
R2=[R3+4],R3=R3+4
LDRR2,[R3],#4;
R2=[R3],R3=R3+4
(6)多寄存器寻址:
LDMIAR2,{R3,R5,R7};
R3=[R2],R5=[R2+4],R7=[R2+8]
(7)堆栈寻址:
STMFDSP!
{R1-R7,LR}
LDMFDSP!
{R1-R7,LR}
(8)块拷贝寻址:
LDMIAR0!
{R2-R9}
STMIAR1,{R2-R9}
(9)相对寻址
18.在ARM的立即寻址方式下其立即数如何在指令编码中表示?
在ARM数据处理指令中,当参与操作的第二操作数为立即数型时,每个立即数都是采用一个8位的常数循环右移偶数位而间接得到。
其中循环右移的位数由一个4位二进制的两倍表示,如果立即数记作<
immediate>
,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.指令LDRR1,=0xFFF是如何将立即数0xfff读入到R1的?
由于需要读取的寄存器的数据超过了MOV及MVN指令可操作的围,编译器将该常数放在数据缓冲区中,同时用一条基于PC的LDR指令读取该常数。
LDRR1,[PC,offset_to_LPOOL]
LTORG;
声明数据缓冲池
LPOOLDCDOxFFF;
OxFFF放在数据缓冲池中。
21.如何在c语言程序中嵌汇编?
嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定义,数据交换必须通过ATPCS进行。
嵌入式汇编在形式上表现为独立定义的函数体
22.如何在汇编语言程序访问C语言的全局变量?
汇编程序可以通过地址间接访问在C语言程序中声明的全局变量。
通过使用IMPORT关键词引人全局变量,并利用LDR和STR指令根据全局变量的地址可以访问它们。
对于不同类型的变量,需要采用不同选项的LDR和STR指令,如下所示:
(1)unsignedchar——LDRB/STRB
(2)unsignedshort——LDRH/STRH
(3)unsignedint——LDR/STR
(4)char——LDRSB/STRSB
(5)Short——LDRSH/STRSH
23.在C语言程序如何调用汇编语言程序?
为了保证程序调用时参数的正确传递,汇编程序的设计要遵守ATPCS。
在汇编程序中需要使用EXPORT伪操作来声明,使得本程序可以被其它程序调用。
同时,在C程序调用该汇编程序之前需要在C语言程序中使用extern关键词来声明该汇编程序。
24.汇编语言程序调用C语言程序?
在C程序中不需要使用任何关键字来声明将被汇编语言调用的C程序,但是在汇编程序调用该C程序之前需要在汇编语言程序中使用IMPORT伪操作来声明该C程序。
在汇编程序过BL指令来调用子程序。
25.在嵌入式C语言程序设计中为提高程序效率的相关设计技巧。
变量定义;
参数传递;
循环条件;
以空间换时间;
数学方法解决问题;
使用位操作;
嵌入汇编。
24.Linux操作系统的核、文件系统、编程接口等。
P192P201
25.嵌入式Linux操作系统的特点。
广泛的硬件支持、核高效稳定、开放源码,软件丰富、优秀的开发工具、完善的网络通信和文件管理机制。
26.WindowsCE操作系统及其特点。
WindowsCE是一个32位、多任务、多线程的操作系统,其开放式的设计结构适用于各种各样的设备,其主要特点:
CE是一种压缩并可升级的软件系统,即使在小存条件下,也能提供较高的性能;
CE具有便于携带的优点,可以运行于多种微处理器上;
CE拥有很好的电源管理系统,能延长移动设备的电池寿命;
CE支持标准的通讯系统,可以非常方便地访问Internet,发送和接受电子,浏览万维网。
27.程序解释
(1)
AREACOPYBS,CODE,READONLY;
定义一个代码段
ENTRY;
程序入口
LDRRO,=SRC;
取得原数据表的表头
LDRR1,=DST;
取得目标数据表的表头
MOVR2,#20;
R4作为循环控制
BCOPYMOVSR3,R2,LSR,#3;
R3=R2<
3逻辑右移3位
BEQCWORD;
若Z=1,跳转到CWORD
OCOPYLDMIAR0!
{R4-R11};
加载R0指向的地址上的多字数据,保存到R4~R11中,R0值更新
STMIAR1!
将R4-R11的数据存储到R1指向的地址上,R1值更新
SUBSR3,R3,#1;
R3=R3-1
BNEOCOPY;
若Z=0,跳转到OCOPY
CWORDANDR2,R2,#7;
R2=R2&
7
BEQSTOP;
若Z=1,跳转到STOP
WCOPYLDRR3,{R0},#4;
将R3中的字数据读入以R0为地址的存储器中,并将新地址R0+4写入R1
STRR3,{R1},#4;
将R3中的字数据写入以R1为地址的存储器中,并将新地址R1+4写入R1
SUBSR2,R2,#1;
R2=R2-1
BNEWCOPY;
若Z=0,跳转到WCOPY
STOP……
……
(2)
在程序中常常需要根据一定的参数选择执行不同的子程序。
跳转表中存放的是各子函数的地址,选择不同的子程序的参数是该子程序在跳转表中的偏移量。
在本例中R3寄存器中存放的是跳转表的基地址(首选地址,其中存放的是第一个子程序的地址)。
R0寄存器的值用于选择不同的子程序;
当R0为0时,选择的是子程序DoAdd;
当R0为1时,选择的是子程序DoSub。
在ADS编译环境程序如下:
AREAJump,CODE,READONLY;
设置本程序的名称及属性
NUMEQU2;
跳转表中的子程序个数
程序执行的入口点
StartMOVR0,#0;
设置3个参数,R0选择调用哪个子程序
MOVR1,#3;
R1为子程序要用的参数
MOVR2,#2;
R2为子程序要用的参数
BLFunc;
调用子程序Func,进行算术运算
StopMOVR0,#0x18;
本条与下条指令的作用是参数传递
LDRR1,=&
20026
SWI0x123456;
将CPU的控制权交给调试器
FuncCMPR0,#NUM;
判断R0是否在有效围之
MOVHSPC,LR;
如果超出围则程序返回
ADRR3,JTable;
读取跳转表的基地址
LDRPC,【R3,R0,LSL#2】;
根据参数R0的值跳转到相应的子程序
JTableDCDDoAdd;
当参数R0为0时上面的代码将选择DoAdd
DCDDoSub;
当参数R0为1时上面的代码将选择DoSub
DoAddADDR0,R1,R2;
子程序DoAdd执行加法操作
MOVPC,LR;
子程序返回
DoSubSUBR0,R1,R2;
子程序DoSub执行减法操作
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微处理器在上电或复位后首先运行BootBlock中的一段代码;
启动程序是在运行引导程序后,正式运行用户main函数之前,还需要运行一段代码
引导程序由芯片厂商固化在芯片中,功能包括:
判断运行哪个存储器上的程序、检查用户代码是否有效、判断芯片是否被加密、芯片的在应用编程(IAP)以及在系统编程功能(ISP)。
启动程序由用户添加,功能包括:
向量表定义、堆栈初始化、系统变量初始化、中断系统初始化、I/O初始化、外围初始化,地址重映射等操作。
4、试比较说明JATG工具和ISP工具的异同点?
两者都可以将程序下载到开发板上,
JATG通过计算机的并口和开发板的JATG口下载程序;
ISP通过计算机的串口和开发板的UART0下载程序。
5、下图是ARM处理器的当前程序状态寄存器,请简单说明各位的功能。
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系统存储器映射图,试对该映射图进行简单的描述说明。
8、下图是ARM系统中断向量控制器(VIC)部结构示意图,试说明VIC的功能特点。
9、下图是ARM系统每个I/O端口的部寄存器控制结构示意图,看图填写下表的寄存器功能说明容。
序号
通用名称
功能说明
1
IOPIN
从该寄存器中可以读出引脚的当前状态,和方向模式无关
2
IOSET
该寄存器控制引脚输出高电平,为1时高电平,为0无效
3
IODIR
该寄存器单独控制每个IO口的方向,为1时输出,为0时输入
4
IOCLR
该寄存器控制引脚输出低电平,为1时低电平为0无效
10、下图是ARM7系统部的定时器结构示意图,试说明部定时器的功能特点。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 练习题 12