《嵌入式系统原理及接口技术》复习资料
文章目录
- 《嵌入式系统原理及接口技术》复习资料
- 1 什么是嵌入式系统?嵌入式系统的构成?
- 2 嵌入式处理器的种类?各有什么特点?
- 3 嵌入式操作系统的种类?各有什么特点?
- 4 ARM9处理器支持哪些工作模式?
- 5 什么是大端存储和小端存储?怎样设置ARM9处理器的存储模式?
- 6 ARM9内部共有37个32位的寄存器?其中31个通用寄存器?有6个状态寄存器?R13、R14、R15寄存器有什么特殊的用途?
- 7 CPSR和SPSR的全称是什么?CPSR和SPSR的格式定义?(即寄存器中的每一位有什么用途)
- 8 ARM9处理器能够响应的异常事件有哪些?这些异常事件的处理程序入口地址?这些异常事件的优先级?
- 9 ARM9处理器处理异常事件的流程?
- 10 ARM9处理器支持的寻址方式有哪些?
- 11 ARM指令集和Thumb指令集的区别,精简指令集(RISC)和复杂指令集(CISC)的区别
- 12 ARM指令集中,大多数指令是条件执行的。这里所说的条件执行指的是什么?
- 13 ARM指令可以使用的条件码助记符有哪些?它们对应的条件?
- 14 常用的ARM指令有哪些?它们的语法格式?功能?
- 15 常用的指示符和伪指令有哪些?它们的语法格式?功能?
- 16 系统引导程序有什么用途?
- 17 存储器的分类?SRAM存储器和DRAM存储器的区别?NAND Flash存储器和NOR FLASH存储器的区别?
- 18 总线的种类?
- 19 了解AMBA总线规范
- 20 了解3种总线定时方式的原理和特点
- 21 K9F6408 Nand Flash芯片的存储单元组织方式、数据读写过程、数据读写方式的特点
- 22 S3C2410 ARM9处理器的存储器控制器(Memory Controller)的功能和特点
- 23 S3C2410 ARM9处理器的中断控制器(Interrupt Controller)处理中断请求的过程
- 24 看门狗定时器的用途和使用方法
- 25 S3C2410 ARM9处理器的RTC部件的用途和特点
1 什么是嵌入式系统?嵌入式系统的构成?
定义:嵌入在其他设备中,起智能控制作用的专用计算机系统
构成:硬件层、软件层、驱动层和执行机构

2 嵌入式处理器的种类?各有什么特点?
- 嵌入式微控制器(MCU, microcontroller unit):集成到一个芯片中;应用方便,集成了ROM, RAM, PWM, 看门狗;价格便宜
- 嵌入式微处理器(MPU, microprocessor unit):体积小、功耗低;举例:ARM, Power PC, MIPS
- 嵌入式数字信号处理器(DSP, Digital Signal Processor):采取了特殊的设计,使它适合执行数字信号处理算法,比如:数字滤波、FFT、频谱谱分析
- 片上系统 (SoC, System on Chip):集成在一个芯片上;Soc中的模块是可以使用HDL语言(硬件描述语言)设计的,单片机不可以
3 嵌入式操作系统的种类?各有什么特点?
- Windows CE:与PC机上使用的Windows操作系统相似。
- VxWorks:可靠性、实时性和可裁减性较好,通常用于高端的嵌入式系统产品中。
- 嵌入式Linux:免费;具有开放性;支持多用户;支持多任务;为用户提供了完善的、强大的网络功能
- μC/OS-Ⅱ:免费;支持多任务处理,最多可管理64个任务;支持调度机制;支持多级中断机制
- Android操作系统:以嵌入式Linux为基础
4 ARM9处理器支持哪些工作模式?
用户模式;系统模式;管理模式;中止模式;未定义模式;IRQ模式;FIQ模式

5 什么是大端存储和小端存储?怎样设置ARM9处理器的存储模式?
ARM9存储单元与地址的对应方式有两种:大端存储模式、小端存储模式。
- 大端存储模式:较高的有效字节存放在较低的存储器地址, 较低的有效字节存放在较高的存储器地址
- 小端存储模式:较高的有效字节存放在较高的存储器地址, 较低的有效字节存放在较低的存储器地址
设置存储模式:S3C2440处理器芯片,BIGEND引脚接低电平,小端存储模式; BIGEND引脚接高电平,大端存储模式
6 ARM9内部共有37个32位的寄存器?其中31个通用寄存器?有6个状态寄存器?R13、R14、R15寄存器有什么特殊的用途?
- R13寄存器:也被称作堆栈指针寄存器,用于保存堆栈的栈顶指针。严格按照“先进后出”的原则存取堆栈中的数据。
- R14寄存器:被称为链接寄存器,简称为LR(Link Register)寄存器。 调用子函数、处理中断或处理异常事件时,R14寄存器用于存放断点地址。
- R15(PC)寄存器:用于存放取指指针
7 CPSR和SPSR的全称是什么?CPSR和SPSR的格式定义?(即寄存器中的每一位有什么用途)
CPSR: 当前程序状态寄存器
SPSR: 备份的程序状态寄存器;在异常模式下,用于备份CPSR数值的寄存器。

状态标志包括 N标志 、Z标志 、C标志 和 V标志
N标志位:指令执行结果是带符号的二进制补码时,若结果为负数,则N标志位置1;若结果为正数或0,则N标志位置0。
Z标志位:又称零标志位,当指令执行结果为0时,Z标志置1;否则Z标志置0。
C标志位:又称进位标志位。处理器执行加法指令或比较指令CMN时,若指令执行结果产生进位时,则C标志置1,否则C标志置0;处理器执行减法指令或比较指令CMP时,若指令执行结果产生借位时,则C标志置0;否则C标志置1。
V标志位:又称溢出标志位。处理器执行加法或减法指令时,若指令执行结果产生带符号溢出时,V标志置1。
CPSR当前程序状态寄存器的第7位~第0位分别是I、F、T和M[4:0],它们均用做控制位。
I 和 F 分别是 IRQ 中断和 FIQ 中断的禁止/允许位:当 I =1时,禁止IRQ中断,否则I=0时允许IRQ异常;当F=1时,禁止FIQ中断,否则F=0时允许FIQ异常。
T 位是微处理器状态控制位:当T=0时,指示为ARM状态;当T=1时,指示Thumb状态。ARM状态下执行的指令是ARM指令,Thumb状态下执行的指令是Thumb指令.
M4、M3、M2、M1、M0是工作模式控制位,它们决定了ARM9微处理器的工作模式.
8 ARM9处理器能够响应的异常事件有哪些?这些异常事件的处理程序入口地址?这些异常事件的优先级?
- 复位异常:(a) 产生条件: 系统上电或人为复位;(b) 入口地址: 0x0000 0000;©工作模式: 管理模式
- 未定义指令异常:(a) 产生条件: 执行未定义指令;(b) 入口地址: 0x0000 0004;©工作模式: 未定义模式
- 软件中断异常:(a) 产生条件: 执行SWI指令;(b) 入口地址: 0x0000 0008;©工作模式: 管理模式
- 指令预取中止异常:(a) 产生条件: 读取指令失败;(b) 入口地址: 0x0000 000C;©工作模式: 中止模式
- 数据中止异常:(a) 产生条件: 数据读/写失败;(b) 入口地址: 0x0000 0010;©工作模式: 中止模式
- IRQ异常:(a) 产生条件: 接收到有效的IRQ中断请求信号;(b) 入口地址: 0x0000 0018;©工作模式: IRQ模式
- FIQ异常:(a) 产生条件: 接收到有效的FIQ中断请求信号;(b) 入口地址: 0x0000 001C;©工作模式: FIQ模式
9 ARM9处理器处理异常事件的流程?
(1)进入异常(保护现场):
- 把断点处的下一条指令地址保存到相应的R14寄存器中;
- 把CPSR的值复制到相应的SPSR备份的程序状态寄存器中;
- 根据异常事件的类型,把CPSR当前程序状态寄存器[4 : 0]设置为对应的数值;
- 把异常事件处理程序的入口地址加载到PC寄存器中
(2)退出异常(恢复现场):
- 把R14(LR)寄存器的值复制到R15(PC)寄存器中;
- 把SPSR 备份的程序状态寄存器的值复制到CPSR当前程序状态寄存器中
- 清除中断禁止控制位(如果在响应中断请求时,禁止了中断请求)
10 ARM9处理器支持的寻址方式有哪些?
(1)立即寻址;(2)寄存器寻址;(3)寄存器移位寻址;(4)寄存器间接寻址;(5)变址寻址;(6)堆栈寻址;(7)相对寻址
11 ARM指令集和Thumb指令集的区别,精简指令集(RISC)和复杂指令集(CISC)的区别
**Thumb指令集(16位指令集)中的汇编指令助记符与ARM指令集(32位指令集)**中的汇编指令助记符是相同的,功能也基本相识。区别主要是以下几个方面:
(1)在分支指令方面,Thumb指令集在转移范围上有更多的限制;
(2)在数据处理指令方面,大多数情况下,Thumb指令集的数据处理指令的通用寄存器进行操作,操作的结果应该放入其中一个操作数寄存器中,而不是放入第三个寄存器中。
(3)在单寄存器加载/存储指令方面,Thumb指令集中的这些指令只能访问内部寄存器R0—R7中。
(4)在多寄存器加载/存储指令方面, Thumb指令集中是采用PUSH指令和POP指令来实现,指令执行时以R13作为堆栈指针,其内容为基础,实现满递减堆栈。
(5)Thumb指令集中没有协处理器指令、信号量指令以及访问CPSR寄存器或SPSR寄存器的指令。
精简指令集(RISC, Reduced Instruction Set Computing):指令数量少,每个指令的长度相同,译码机制简单;
复杂指令集(CISC, Complex Instruction Set Computing):指令数量多,每个指令的长度不相同,译码机制复杂
12 ARM指令集中,大多数指令是条件执行的。这里所说的条件执行指的是什么?
ARM条件执行是指根据指令中的条件码来决定是否执行这条指令。指令执行的条件是根据CPSR当前程序状态寄存器中的状态标志位和指令的条件域决定的,条件域确定指令在什么条件下执行。如果CSPR寄存器的标志为C、N、Z和V的值满足条件域的条件,则指令被执行,否则不执行。
13 ARM指令可以使用的条件码助记符有哪些?它们对应的条件?
条件码助记符:用于表示指令的执行条件

14 常用的ARM指令有哪些?它们的语法格式?功能?
1 寄存器加载及存储指令
1 单一数据加载/存储指令 LDR/STR
语法格式:
(1)LDR/STR{条件码}{Type} Rd,[Rn] 寄存器间接寻址
(2)LDR/STR{条件码}{Type} Rd,[Rn,Flexoffset] {!} 前变址寻址
(3)LDR/STR{条件码}{Type} Rd,label 相对寻址
(4)LDR/STR{条件码}{Type} Rd,[Rn],Flexoffset 后变址寻址

指令功能:
单一数据加载指令 LDR:从主存储器(RAM)中,读取一个操作数,并将该操作数放在一个通用寄存器中。
单一数据存储指令 STR:将一个通用寄存器中的数据写入主存储器(RAM)中。
2 多数据加载/存储指令 LDM/STM
指令功能:
从主存储器中,连续读取几个操作数(32位,字),并把这些操作数放在几个通用寄存器中。或者,把几个寄存器中的数值,连续写入存储器中。
低地址的字,读到序号小的寄存器中;高地址的字,读到序号大的寄存器中
序号小的寄存器中的字,写入地址小的存储单元;序号大的寄存器中的字,写入地址大的存储单元
语法格式:
LDM/STM{条件码}寻址模式 Rn{!}, 寄存器列表{^}

3 单一数据交换指令 SWP
指令功能:在寄存器和存储器之间交换数据
语法格式:SWP{条件码}{Type} Rd,Rm, [Rn]
2 数据处理类指令
1 数据传送指令
-
常规的数据传送指令 MOV
语法格式:MOV{条件码}{S} Rd, Op
指令功能:寄存器与寄存器之间的传送指令 -
取反的数据传送指令 MVN
语法格式: MVN{条件码}{S} Rd, Op
指令功能:寄存器与寄存器之间传送取反值的指令;传送数据前,对操作数按位取反
2 算术运算指令
- 不带进位的加法指令 ADD

-
带进位的加法指令 ADC
-
不带借位的减法指令 SUB

- 带借位的减法指令 SBC

- 不带借位的反向减法指令 RSB

- 带借位的反向减法指令 RSC

- 32位乘法指令 MUL

- 32位乘加指令 MLA

3 逻辑运算指令
- 与运算指令 AND

-
或运算指令 ORR
-
异或运算指令 EOR
-
位清除指令 BIC

4 比较指令
- 常规的比较指令 CMP

- 与取负数的比较指令 CMN
5 测试指令
- 位测试指令 TST
- 相等测试指令 TEQ
3 分支指令
- 普通的分支指令 B
- 带链接的分支指令 BL
- 带状态切换的分支指令 BX
4 程序状态寄存器访问指令
- 程序状态寄存器读指令 MRS
- 程序状态寄存器写指令 MSR
5 软件中断指令 SWI
15 常用的指示符和伪指令有哪些?它们的语法格式?功能?
常用的指示符有:
-
AREA:用于定义一个程序段(代码段或数据段)
AREA 段名, 属性1, 属性2, …
-
ENTRY:
(1)用于指定程序的入口点
(2)在一个完整的ARM汇编程序中,至少使用一个ENTRY指示符。如果一个ARM汇编程序中使用了多个ENTRY指示符,可在链接的过程中指定入口点。 -
END:
(1)源程序结尾标识符
(2)告诉汇编器哪里是源程序的结尾 -
**EQU:**为程序中的常量、标号定义一个等效的字符名称
字符名称 EQU 表达式;实例:abc EQU 50 -
EXPORT:声明一个全局标号,该标号可以在其它源文件中引用
EXPORT 标号 -
IMPORT:引用一个全局标号,该标号是在其它源文件中定义的
IMPORT 标号 -
**GET:**把一个文件包含在当前文件中<,与C语言和C++语言中的”include”相似
-
**CODE16:**告诉汇编器,后面的指令序列是32位的ARM指令
-
**CODE32:**告诉汇编器,后面的指令序列是16位的Thumb指令
常用的伪指令:
-
ADR:
将标号(或标号表达式)代表的相对地址读取到寄存器,它能加载的相对地址的范围与地址的对齐方式有关:
按字节对齐,-255B~255B;按字对齐, -1020B~1020B
ADR{条件码} Rd, label表达式 -
**ADRL:**将标号(标号表达式)代表的相对地址读取到寄存器,它能加载的相对地址的范围与地址的对齐方式有关:
-
按字节对齐,-64KB~64KB;按字对齐, -256KB~256KB
ADRL{条件码} Rd, label表达式 -
**LDR:**将32位的常数或常数表达式读取到寄存器中
LDR{条件码} Rd, = 常数或常数表达式——与单一数据加载指令LDR的区别,有 =
16 系统引导程序有什么用途?
系统引导程序需要完成的功能:
(1)系统上电时,关闭看门狗定时器,关闭中断
(2)设置好堆栈指针,即为堆栈指针寄存器赋初值。5种异常模式下使用的堆栈指针寄存器不同,因此需要根据应用的具体情况,为不同的堆栈指针寄存器赋初值。
(3)如果系统中使用了DRAM,需要设置相关的寄存器
(4)初始化所需的存储空间。
(5)将处理器的工作模式切换到用户模式
17 存储器的分类?SRAM存储器和DRAM存储器的区别?NAND Flash存储器和NOR FLASH存储器的区别?
存储器的分类
(1)按存储器的用途分类
寄存器:存放正在执行的指令使用的数据,及执行结果
高速缓存器Cache:存放经常使用的指令和数据
主存储器:存放正在执行的代码块和正使用的数据块(PC内存条)
辅助存储器:存放所有的代码和数据(PC中的硬盘,手机中的Flash)
(2)按存储器的存取方式分类:
随机访问存储器:RAM
只读存储器:ROM
SRAM存储器和DRAM存储器的区别?
随机访问存储器RAM:(1)静态随机访问存储器SRAM(SR锁存器);(2)动态随机访问存储器DRAM(电容器)
SRAM存储器:读写速度快、功耗大
DRAM存储器:需要周期性刷新、集成度高
NAND Flash存储器和NOR FLASH存储器的区别?
NOR Flash存储器:读取速度快、接口简单
NAND Flash存储器:集成度高
18 总线的种类?
- 片内总线:连接处理器内核、片内存储器、外部存储器接口、DMA总线控制器、定时器、其他I/O部件等。
- 板级总线:连接处理器芯片和其他芯片
- 系统级总线:连接不同的系统
19 了解AMBA总线规范
它是一种开放的、用于高性能嵌入式处理器中的总线规范,它在ARM处理器中被广泛采用。AMBA总线规范包含4个部分 :定义了3种总线和1种测试方法
AHB:是Advanced High Performance Bus的缩写,是用于连接芯片内高性能模块的总线,支持突发式数据传输和事物处理。
ASB:是Advanced System Bus的缩写,它是一种早期的总线,现在已经由AHB取代。
APB:是Advanced Peripheral Bus的缩写,用于连接芯片内性能较低的模块,通常作为ARM处理器芯片中的二级总线使用。
Test Methodology:是AMBA总线规范中所制定的测试方法。
20 了解3种总线定时方式的原理和特点
- 同步定时
- 异步定时
- 半同步定时
21 K9F6408 Nand Flash芯片的存储单元组织方式、数据读写过程、数据读写方式的特点
存储单元组织方式:
- 所有的存储单元被划分为1024个Block
- 每个Block被划分为16个Page
- 每个Page包含528个Byte(字节),其中512个字节用于存放数据,16个字节用于存放ECC编码(差错控制)
数据读写流程:
- 处理器通过IO引脚向K9F6408发送命令,命令被锁存到Flash中
- 处理器通过IO引脚向K9F6408发送地址,地址被锁存到Flash中
- 处理器通过IO引脚向K9F6408发送数据,或者K9F6408向处理器发送数据
K9F6408的特点:
- 读和写操作,以Page为单位
- 擦除操作,以Block为单位
22 S3C2410 ARM9处理器的存储器控制器(Memory Controller)的功能和特点
功能:生成存储器(SROM和SDRAM存储器)的控制信号
特点:
- 将存储空间划分为8个Bank(存储子空间),(在使用时,要注意这些Bank的区别)
- 提供了一个nWAIT信号,所以支持半同步总线定时方式
- 提供了一对握手信号线(nXBREQ和nXBACK),所以支持异步总线定时方式
- 支持SDRAM的自刷新(Self-refresh mode)和省电模式(Power down mode)
23 S3C2410 ARM9处理器的中断控制器(Interrupt Controller)处理中断请求的过程
24 看门狗定时器的用途和使用方法
用途:
看门狗定时器是一种为了解决某个具体问题而设计的定时部件
看门狗定时器解决的问题:系统程序功能错乱,导致嵌入式系统“死机”
使用看门狗定时器,可以使处于“死机”状态的嵌入式系统恢复到正常的状态下运行(它是通过让处理器复位(reset),使嵌入式系统摆脱“死机”状态的。)
使用方法:
(1)系统上电时,由系统引导程序为减法计数器中的用于存放当前计数值的寄存器(看门狗计数寄存器WTCNT)赋初值。
(2)系统处于运行状态时,减法计数器每接收到1个计数脉冲,看门狗计数寄存器WTCNT中的数值就会减1。看门狗计数寄存器WTCNT中的数值由应用程序定期地设置为初值。这样,只要系统程序未出现功能错乱,看门狗计数寄存器WTCNT中的数值就不会归零。
(3)当系统程序未出现功能错乱时,看门狗计数寄存器WTCNT中的数值很快就会减小为0(归零)。这种情况下,看门狗定时器中的“复位信号发生器”就可以向处理器核发送复位信号,也可以向处理器核发送中断请求信号。
注意:当减法计数器归零时,看门狗定时器是否向处理器核发送中断请求信号和复位信号,是可以人为控制的。即可以通过配置特殊功能寄存器的数值,来决定。
25 S3C2410 ARM9处理器的RTC部件的用途和特点
RTC用途:Real Time Clock(实时时钟):用于提供年、月、日、时、分、秒、星期几等实时信息
RTC部件的特点:
- 年、月、日、时、分、秒、星期等信息以BCD码格式输出(二进制数的一种编码形式)
- 具有闰年发生器,可以根据年、月、日的BCD码确定每个月份的天数是28,29,30还是31天。
- 具有报警功能,能提供报警中断或者系统在节电模式下的唤醒(手机的闹钟和定时关机、开机)
- 拥有独立的电源引脚,为RTC提供后备电池供电。
- 支持RTOS内核时间片所需的毫秒计时中断。
flowerblue’>提供年、月、日、时、分、秒、星期几等实时信息
RTC部件的特点:
- 年、月、日、时、分、秒、星期等信息以BCD码格式输出(二进制数的一种编码形式)
- 具有闰年发生器,可以根据年、月、日的BCD码确定每个月份的天数是28,29,30还是31天。
- 具有报警功能,能提供报警中断或者系统在节电模式下的唤醒(手机的闹钟和定时关机、开机)
- 拥有独立的电源引脚,为RTC提供后备电池供电。
- 支持RTOS内核时间片所需的毫秒计时中断。