南工大ARM嵌入式系统参考复习题1教程文件.docx

上传人:b****8 文档编号:13172287 上传时间:2023-06-11 格式:DOCX 页数:33 大小:29.97KB
下载 相关 举报
南工大ARM嵌入式系统参考复习题1教程文件.docx_第1页
第1页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第2页
第2页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第3页
第3页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第4页
第4页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第5页
第5页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第6页
第6页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第7页
第7页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第8页
第8页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第9页
第9页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第10页
第10页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第11页
第11页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第12页
第12页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第13页
第13页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第14页
第14页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第15页
第15页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第16页
第16页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第17页
第17页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第18页
第18页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第19页
第19页 / 共33页
南工大ARM嵌入式系统参考复习题1教程文件.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

南工大ARM嵌入式系统参考复习题1教程文件.docx

《南工大ARM嵌入式系统参考复习题1教程文件.docx》由会员分享,可在线阅读,更多相关《南工大ARM嵌入式系统参考复习题1教程文件.docx(33页珍藏版)》请在冰点文库上搜索。

南工大ARM嵌入式系统参考复习题1教程文件.docx

南工大ARM嵌入式系统参考复习题1教程文件

 

南工大ARM嵌入式系统参考复习题1

ARM嵌入式系统设计参考复习题(2017-11)

主要知识点:

第1章

1.嵌入式系统:

“以应用为中心,以计算机技术为基础,软硬件可裁减,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统”

根据应用的要求,沿着“体积小、低功耗、高可靠”方向发展,对运算速度、存储容量没有统一要求。

三要素:

嵌入、专用、计算机。

2.嵌入式系统有哪些部分组成?

一般由硬件层,中间层(HAL或BSP)和软件层组成。

粗略划分:

嵌入式处理器、外围设备、嵌入式操作系统(可选)、嵌入式应用软件

稍细划分:

嵌入式处理器、外围设备、驱动程序、嵌入式操作系统、应用接口、嵌入式应用软件

3.嵌入式系统特点:

①系统内核小②专用性强③系统精简④高实时性。

4.嵌入式处理器的分类:

嵌入式微处理器(MPU):

就是和通用计算机的处理器对应的CPU,可以认为是“增强型”通用微处理器。

嵌入式微控制器(MCU):

就是将整个计算机系统的主要硬件集成到一块芯片中,芯片内部集成ROM/EPROM、RAM、总线,总线逻辑、定时/计数器、Watchdog、I/O、串行口、A/D等各种必要功能和外设。

嵌入式DSP处理器(DSP):

是专门用于信号处理方面的处理器,在系统结构和指令算法方面进行了特殊设计,具有很高的编译效率和指令执行速度。

嵌入式片上系统(SOC):

是追求产品系统最大包容的集成器件。

绝大多数系统构件都在一个系统芯片内部。

第二章

1.ARM:

是AdvanceRISCMachine的缩写,既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

2.在ARM9TDMI中“9TDMI”的含义:

9:

采用版本为9的ARM微处理器T:

支持16为压缩指令集Thumb,D:

支持片上Debug,称为D变种

M:

内嵌硬件乘法器Multiplier,称为M变种I:

嵌入式ICE,支持片上断点和调试,称为I变种。

3.ARMCortex-A8处理器的三种工作状态:

ARM状态,处理器执行32位的字对齐的ARM指令;Thumb状态:

处理器执行16位的半字对齐的Thumb指令和ThumbEE状态:

执行16位的半字对齐的Thumb指令集变种。

8种工作模式:

用户模式(usr)、快速中断模式(fiq)、外部中断模式(irq)、管理模式(svc)、中止模式(abt)、未定义模式(und)、系统模式(sys)和监控模式(mon)。

特权模式:

除usr之外的其它的7种工作模式都是特权模式。

异常模式:

除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的返回值。

5.CPSR各位是意义:

N:

正负号/大小标志位0表示:

正数/大于;1表示:

负数/小于Z:

零标志位0表示:

结果不为零;1表示:

结果为零C:

进位/借位/移出位0表示:

未进位/借位/移出0;1表示:

进位/未借位/移出1V:

溢出标志位0表示:

结果未溢出;1表示:

结果溢出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

6.ARM异常响应过程(进入异常)执行哪些操作。

①保存返回地址、②保存当前状态寄存器CPSR的内容、③设置当前状态寄存器CPSR中的相应位、④转去执行中断处理程序。

第三章

1.ARM指令中的第二操作数“operand2”有哪些具体形式:

三种:

寄存器、寄存器移位、8位位图立即数。

 

2.对于ARM的变址寻址方式,有基地址和偏倚地址两部分组成。

(1)基地址可以是哪些寄存器?

(2)偏移地址可以有哪些形式?

(3)总地址的计算方法有哪些?

怎么表示?

(4)变址寻址应用于哪些指令?

(1)基地址可以是通用寄存器R0---R15中的任意一个。

(2)偏移地址可以有三种形式:

12位立即数、寄存器、寄存器移位。

(3)总地址的计算方法有三种:

 

(4)前变址(前索引):

先基址+偏址,生成操作数地址,做指令指定的操作。

如:

LDRRd,[Rn,#m]

后变址模式(修改基址寄存器):

①基址寄存器不加偏移作为操作数地址。

②完成指令操作后,用(基址+偏移)的值修改基址寄存器。

如:

LDRRd,[Rn],#m

自动变址模式(修改基址寄存器):

①先基址+偏移,生成操作数地址,做指令指定的操作。

②然后自动修改基址寄存器。

如:

LDRRd,[Rn,#m]!

(5)有4条指令:

LDR、STR、LDM、STM

(6)3.ARM有寻址方式:

立即寻址、寄存器寻址、寄存器间接寻址、变址寻址、多寄存器寻址、堆栈寻址、块拷贝寻址、相对寻址

(7)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!

=V

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外部中断模式

svc特权模式

abt数据访问中止

und未定义指令中止模式

sys系统模式

mon监控模式,安全模式切换

8种工作模式,除用户模式,都是特权模式

特权模式里面,除系统模式,其他都是异常模式。

即异常模式6种:

Fiq快速中断异常模式

Irq外部中断请求模式

svc特权模式

abt数据访问中止模式

und未定义指令中止模式

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<<16);//0为fiq模式,1irq

/*5.安装中断服务函数到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

LP:

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"stdio.h"

#include"s5pv210.h"

#definerGPJ2CON*((volatileunsignedlong*)0xe0200280)

#definerGPJ2DAT*((volatileunsignedlong*)0xe0200284)

voidkey_init()

{

rGPH2CON&=~(0xf<<0);//全部清0,设置输入模式,然后按键被按值变成0

}

 

voidled_init()

{

rGPJ2CON&=~(0xf<<0);

rGPJ2CON|=(0x1<<0);

rGPJ2DAT|=(0x1<<0);

}

voiddelay()

{

inti,j;

for(i=0;i<100;i++)

for(j=0;j<100;j++);

}

intkeyled(void)

{

printf("按键灯测试\n");

key_init();

led_init();

while

(1)

{

if(((rGPH2DAT&(0x1<<0))==0))//如果按键2按下,按键值0,

{

//printf("key2putdown!

\n");delay();

if(((rGPH2DAT&(0x1<<0))==0))//重新判断消抖动影响

{

//printf("keyreallyputdown!

\n");

while(!

(rGPH2DAT&(0x1<<0)));//松手检测

rGPJ2DAT&=~(0x1<<0);//亮

delay();

rGPJ2DAT|=(0x1<<0);//led暗

}

}

}

return0;

}

ARM部分实验程序(仅供参考):

<实验一>ARM开发平台使用入门

.equnum,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;for(i=0;i<100000;i++);rGPFDAT=nOut&0x30;for(i=0;i<100000;i++);rGPFDAT=nOut&0x10;for(i=0;i<100000;i++);rGPFDAT=nOut&0x00;for(i=0;i<100000;i++);

}

/*******************************************************************************name:

*func:

led_offturnofftheledsonebyone

******************************************************************************/

voidled_off(void)

{

inti,nOut;nOut=0;

rGPFDAT=0;for(i=0;i<100000;i++);rGPFDAT=nOut|0x80;for(i=0;i<100000;i++);rGPFDAT|=nOut|0x40;for(i=0;i<100000;i++);rGPFDAT|=nOut|0x20;for(i=0;i<100000;i++);rGPFDAT|=nOut|0x10;for(i=0;i<100000;i++);

}

/*******************************************************************************name:

*func:

led_on_offturnonthe4ledsandthenturnoffthe4leds

******************************************************************************/voidled_on_off(void)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2