南工大ARM嵌入式系统参考复习题Word文档格式.docx
- 文档编号:745688
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:17
- 大小:23.11KB
南工大ARM嵌入式系统参考复习题Word文档格式.docx
《南工大ARM嵌入式系统参考复习题Word文档格式.docx》由会员分享,可在线阅读,更多相关《南工大ARM嵌入式系统参考复习题Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
异常模式:
除usr和sys之外的其它的6种工作模式都是持权模式。
4.ARMA8寄存器分成哪几类?
各类有哪些寄存器?
寄存器LR有什么用途?
分两类:
33个通用寄存器和7个状态寄存器。
33个通用寄存器:
R0~R15;
R13_svc、R14_svc;
R13_abt、R14_abt;
R13_und、R14_und;
R13_irq、R14_irq;
R8_fiq-R14_fiq、R13_mon、R14_mon;
。
7个状态寄存器:
CPSR;
SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq、SPSR_fiq和SPSR_mon。
LR(R14):
也称作子程序链接寄存器或链接寄存器LR,当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。
其他情况下,R14用作通用寄存器。
与之类似,当发生中断或异常时,对应的分组寄存器R14_svc、R14_irq、R14_fiq、R14_abt、R14_und和R14_mon用来保存R15的返回值。
各位是意义:
N:
正负号/大小标志位0表示:
正数/大于;
1表示:
负数/小于Z:
零标志位0表示:
结果不为零;
结果为零C:
进位/借位/移出位0表示:
未进位/借位/移出0;
进位/未借位/移出1V:
溢出标志位0表示:
结果未溢出;
结果溢出I、I和F:
irq和fiq中断允许和禁止控制位,=1禁止irq或fiq中断=0允许irq或fiq中断。
T:
控制(标志)位——反映处理器的运行状态T=1时,程序运行于Thumb状态,T=0时,程序运行于ARM状态。
TM:
控制位——决定了处理器的运行模式
模式TM[4:
0]
用户10000
快中断10001
中断10010
管理10011
中止10111
未定义11011
系统11111
监控10110
异常响应过程(进入异常)执行哪些操作。
①保存返回地址、②保存当前状态寄存器CPSR的内容、③设置当前状态寄存器CPSR中的相应位、④转去执行中断处理程序。
第三章
指令中的第二操作数“operand2”有哪些具体形式:
三种:
寄存器、寄存器移位、8位位图立即数。
2.对于ARM的变址寻址方式,有基地址和偏倚地址两部分组成。
(1)基地址可以是哪些寄存器?
(2)偏移地址可以有哪些形式?
(3)总地址的计算方法有哪些?
怎么表示?
(4)变址寻址应用于哪些指令?
(1)基地址可以是通用寄存器R0---R15中的任意一个。
(2)偏移地址可以有三种形式:
12位立即数、寄存器、寄存器移位。
(3)总地址的计算方法有三种:
前变址(前索引):
先基址+偏址,生成操作数地址,做指令指定的操作。
如:
LDRRd,[Rn,#m]
后变址模式(修改基址寄存器):
①基址寄存器不加偏移作为操作数地址。
②完成指令操作后,用(基址+偏移)的值修改基址寄存器。
LDRRd,[Rn],#m
自动变址模式(修改基址寄存器):
①先基址+偏移,生成操作数地址,做指令指定的操作。
②然后自动修改基址寄存器。
LDRRd,[Rn,#m]!
(4)有4条指令:
LDR、STR、LDM、STM
3.ARM有寻址方式:
立即寻址、寄存器寻址、寄存器间接寻址、变址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址
4.ARM伪指令:
ADR:
小范围的地址读取伪指令、ADRL:
中等范围的地址读取伪指令、LDR:
大范围的地址读取伪指令、NOP:
空操作伪指令。
5.ARM指令集分为哪几种类型?
各类有哪些指令(可以不考虑协处理器指令)。
五类:
存器访问指令、数据处理指令、跳转指令、协处理器指令、杂项指令。
存储器访问指令:
单存储器存取指令,多存储器存取指令。
数据处理指令:
算术运算指令,逻辑运算指令,数据传送指令,比较指令,测试指令。
跳转指令:
B跳转指令BL带链接的跳转指令BX带状态切换的跳转指令BLX带链接和状态切换的跳转指令。
杂项指令:
程序状态寄存器操作指令,中断操作指令。
6.ARM有哪些条件码?
各个条件码的符号及意义。
(比较常用的应该会)。
条件码00000001001000110100010101100111
助记符EQNECS/HSCC/LOMIPLVSVC
含义相等不相等无符号数大于或等于无符号数小于负数非负数溢出没有溢出
标志Z=1Z=0C=1C=0N=1N=0V=1V=0
1000
HI
无符号数大于
C=1且Z=0
1001
LS
无符号数小于或等于
C=0或Z=1
1010
GE
有符号数大于或等于
N=V
1011
LT
有符号数小于
N!
=V
1100
GT
有符号数大于
Z=0且N=V
1101
LE
有符号数小于或等于
Z=1或N!
1110
AL
无条件执行
arm采用32位架构,基本数据类型4种,填空
Byte8位字节
HalfWord16半字2字节对齐
Word32字4
DoubleWord64双字8
内核工作模式,cortexa8,(课本8种)8种
usr
fiq
irq
svc特权模式
abt数据访问中止模式
und未定义指令中止模式
sys
mon监控模式,可在安全模式和非安全模式切换
8个模式中,除用户模式usr,其他7个全部特权模式
7个特权模式中,除了系统模式,剩下6个都属于异常模式
快速中断请求模式(FIQ)
用于高速数据传输
外部中断请求模式(IRQ)
用于通常的中断处理
特权模式(SVC)
数据访问终止模式(abt)
当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护
未定义指令中止模式(und)
用于支持硬件协处理器的软件仿真
监控模式(mon)
Arm微处理器工作模式,分别为:
1.
用户模式(Usr)
用于正常执行程序
2.
快速中断模式(FIQ)
3.
外部中断模式(IRQ)
4.
特权管理模式(SVC)
操作系统使用的保护模式(高权限),复位和软件中断进入
5.
数据访问中止模式(abt)
6.
系统模式(sys)
运行拥有特权的操作系统任务
7.
未定义指令终止模式(und)
用于支持硬件协处理器的软件仿真(浮点、微量运算)
8.监控模式(mon),可在安全模式和非安全模式切换
异常模式优先级如下:
1(最高)
SVC复位
2abt
数据中止
3FIQ(快速中断请求)
4IRQ(外部中断请求)
5abt
预取指令中止
6(最低)und未定义指令,SWI软件中断
arm7为止使用流水线3级
取指令,从寄存器装载一条指令
译码为下一周期准备控制信号
执行处理指令,结果写会寄存器
arm9,五级流水线3级+缓冲/数据回写
arm106级流水线
寄存器R13用作数据栈指针,记作SP。
寄存器R14称为链接寄存器,记作LR,它用于保存子程序的返回地址。
寄存器R15是程序计数器,记作PC,不能用作其它用途。
CPSR当前程序状态寄存器理解CPSR格式,里面标志位含义等等
跳转指令,bl跳转32mb范围,跳转pc,如ldrbpc,...可以4GB范围
AAPCS标准子程序调用,用R0-R3存储参数,R0存返回值
I2C总线,通过串行数据线(SDA)和串行时钟线(SCL)在连接到总线的器件间传递信息。
传输时包含寻址和数据信息,每个字节8位,每个字节后必须跟一个响应位。
A_D转换结束的表达式是!
(TSAADCCON0&
(1<
<
15))
获取AD转换结果的表达式是(TSDATX0&
0xfff)
LCD16M色的像素颜色的数据格式是怎样的4个字节,前3个字节分别为红,绿,蓝三原色的色号。
64K色的数据则用16位表示一个像素的颜色,三原色配比是5/6/5。
android操作系统的源码结构分为3个部分:
核心工程(CoreProject),扩展工程(ExternalProject),包(Package),应用程序(Application)在package/apps目录中。
二、简答题:
1、Cortex-A8是ARMv7-A架构的,共有哪几种工作模式,其中哪几种属于异常模式?
usr用户模式
fiq快速中断模式
irq外部中断模式
abt数据访问中止
sys系统模式
mon监控模式,安全模式切换
8种工作模式,除用户模式,都是特权模式
特权模式里面,除系统模式,其他都是异常模式。
即异常模式6种:
Fiq快速中断异常模式
Irq外部中断请求模式
mon监控模式
2.寄存器CPSR,SPSR的功能各是什么?
CPSR(当前程序状态寄存器)在任何处理器模式下被访问。
它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。
中断时,保存当前程序状态,处理器模式等等。
每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。
当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。
在异常中断退出时,可以用SPSR来恢复CPSR
CPSR格式
CPSR格式如下所示。
SPSR和CPSR格式相同。
31302928272676543210
NZCVQIT[1:
0]JIFTM4M3M2M1M0
***条件标志位***
N——n=1表示运算结果为负数,n=0表示结果为正数或零。
z——z=1表示运算的结果为零;
z=0表示运算的结果不为零。
C——进位,借位标志
V——V=1表示符号位溢出
J——ThumbEE状态位
M4-0模式位
3、简述S5PV210外部中断处理和响应的流程。
中断发生后,处理:
通过堆栈和spsr寄存器,入栈保存现场,设置cpsr模式位,处理器模式变成外部中断模式。
外部中断中断发生后,VIC0IRQSTATUS相应位置改变,中断向量地址VIC0ADDRESS相应位改变,,pc跳到向量表的特定地址,从该地址开始执行,跳转调用我们写的中断处理函数,执行中断处理程序。
/*4.使能向量地址通道16中断*/
rVIC0INTENABLE|=(1<
16);
/*5.向量地址通道16选择为IRQ中断*/
rVIC0INTSELECT|=(1<
装中断服务函数到VIC0VECTADDR16,强制转换提取EINT16_31_IRQHandler函数地址*/
rVIC0VECTADDR16=(unsignedint)EINT16_31_IRQHandler;
voidEINT16_31_IRQHandler(void)
{。
}
三、编程应用题:
(阅读分析,加注释、填空与编程)
1.将存储器中0x400000开始的200字节的数据,传送到0x400800开始的区域。
解:
MOVR0,#0x400000
LDRR1,=0x400800
MOVR7,#200
LP:
LDRBR2,[R0],#1
STRBR2,[R1],#1
SUBSR7,R7,#1
BNELP
HERE:
BHERE
2.编写一程序,查找存储器从0x400000开始的100个字中为0的数目,将其结果存到0x400190中。
MOVR0,#0x400000
MOVR1,#0
MOVR7,#100
LDRR2,[R0],#4
CMPR2,#0
BNENEXT
ADDR1,R1,#1
NEXT:
SUBSR7,R7,#1
BNELP
STRR1,[R0]
HERE:
BHERE
3.编写一简单ARM汇编程序段,实现1+2+…+100的运算。
MOVR2,#100
MOVR1,#0
LOOPADDR1,R1,R2;
R1中为累加和
SUBSR2,R2,#1;
R2控制循环
BNELOOP
5.用ARM汇编语言和C语言写一个初始值为0x6000000的延时函数。
汇编的为:
delay:
ldrr0,=0x6000000
temp:
subr0,r0,#1
cmpr0,#0
bnetemp
bxlr
上面程序参考c语言的写法
voiddelay()
{
volatileinti,j;
for(i=0;
i<
0x6000000;
i++);
6.请对如下程序解释
按k2按键,松手,led闪烁
#include"
"
#definerGPJ2CON*((volatileunsignedlong*)0xe0200280)
#definerGPJ2DAT*((volatileunsignedlong*)0xe0200284)
voidkey_init()
rGPH2CON&
=~(0xf<
0);
qunum,2
.section.text
.global_start
_start:
Reset_Handler:
movr0,#0;
/*setupthethreeparameters*/
movr1,#3
movr2,#2
blarithfunc;
/*callthefunction*/
stop:
bstop
;
#********************************************************************************************
#*AccordingR0valudetoexecutethecode*
arithfunc:
;
/*labelthefunction*/
cmpr0,#num;
/*Treatfunctioncodeasunsignedinteger*/
bhsDoAdd;
/*Ifcodeis>
=2thendooperation0.*/
adrr3,JumpTable;
/*Loadaddressofjumptable*/
ldrpc,[r3,r0,LSL#2];
/*Jumptotheappropriateroutine*/
JumpTable:
.wordDoAdd
.wordDoSub
DoAdd:
addr0,r1,r2;
/*Operation0,>
1*/
bxlr;
/*Return*/
DoSub:
subr0,r1,r2;
/*Operation1*/
bxlr
实验二>
GPIOLED接口控制实验(LED显示灯控制)
控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:
LED1亮->
LED2亮->
LED3亮->
LED4亮->
LED1灭->
LED2灭->
LED3灭->
LED4灭->
全亮->
全灭,如此反复。
/*******************************************************************************name:
*func:
led_onturnontheledsonebyone
******************************************************************************/
voidled_on(void)
inti,nOut;
nOut=0xF0;
rGPFDAT=nOut&
0x70;
100000;
rGPFDAT=nOut&
0x30;
0x10;
0x00;
led_offturnofftheledsonebyone
voidled_off(void)
nOut=0;
rGPFDAT=0;
rGPFDAT=nOut|0x80;
rGPFDAT|=nOut|0x40;
rGPFDAT|=nOut|0x20;
rGPFDAT|=nOut|0x10;
led_on_offturnonthe4ledsandthenturnoffthe4leds
******************************************************************************/voidled_on_off(void)
inti;
rGPFDAT=0;
rGPFDAT=0xF0;
led_testi/ocontroltest(led)******************************************************************************/
voidled_test(void)
rGPFCON=0x;
2n"
);
实验三>
LED数码管综合实验
#defineU8unsignedchar
unsignedcharseg7table[16]={
/*01234567*/
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
/*89ABCDEF*/
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,
};
/*****************************************************************************
.\n"
Gpio_init();
flag=1;
while((flag!
=0)&
&
(lp<
6)){
for(j=0;
j<
lp;
j++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南工大 ARM 嵌入式 系统 参考 复习题