《嵌入式系统原理及接口技术》复习资料

《嵌入式系统原理及接口技术》复习资料

文章目录

1 什么是嵌入式系统?嵌入式系统的构成?

定义嵌入在其他设备中,起智能控制作用的专用计算机系统
构成硬件层软件层驱动层执行机构

image-20240507191357998

2 嵌入式处理器的种类?各有什么特点?

  1. 嵌入式微控制器(MCU, microcontroller unit):集成到一个芯片中应用方便,集成了ROM, RAM, PWM, 看门狗;价格便宜
  2. 嵌入式微处理器(MPU, microprocessor unit):体积小、功耗低;举例:ARM, Power PC, MIPS
  3. 嵌入式数字信号处理器(DSP, Digital Signal Processor):采取了特殊的设计,使它适合执行数字信号处理算法,比如:数字滤波、FFT、频谱谱分析
  4. 片上系统 (SoC, System on Chip):集成在一个芯片上;Soc中的模块是可以使用HDL语言(硬件描述语言)设计的,单片机不可以

3 嵌入式操作系统的种类?各有什么特点?

  1. Windows CE与PC机上使用的Windows操作系统相似
  2. VxWorks可靠性实时性可裁减性较好,通常用于高端的嵌入式系统产品中。
  3. 嵌入式Linux免费;具有开放性支持多用户支持多任务为用户提供了完善的、强大的网络功能
  4. μC/OS-Ⅱ免费支持多任务处理,最多可管理64个任务;支持调度机制支持多级中断机制
  5. Android操作系统以嵌入式Linux为基础

4 ARM9处理器支持哪些工作模式

用户模式;系统模式;管理模式;中止模式;未定义模式;IRQ模式;FIQ模式

image-20240507193849434

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数值的寄存器。

image-20240507200104405

状态标志包括 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微处理器的工作模式.

image-20240507205639655

8 ARM9处理器能够响应的异常事件有哪些?这些异常事件的处理程序入口地址?这些异常事件的优先级?

  1. 复位异常:(a) 产生条件: 系统上电或人为复位;(b) 入口地址: 0x0000 0000;©工作模式: 管理模式
  2. 未定义指令异常:(a) 产生条件: 执行未定义指令;(b) 入口地址: 0x0000 0004;©工作模式: 未定义模式
  3. 软件中断异常:(a) 产生条件: 执行SWI指令;(b) 入口地址: 0x0000 0008;©工作模式: 管理模式
  4. 指令预取中止异常:(a) 产生条件: 读取指令失败;(b) 入口地址: 0x0000 000C;©工作模式: 中止模式
  5. 数据中止异常:(a) 产生条件: 数据读/写失败;(b) 入口地址: 0x0000 0010;©工作模式: 中止模式
  6. IRQ异常:(a) 产生条件: 接收到有效的IRQ中断请求信号;(b) 入口地址: 0x0000 0018;©工作模式: IRQ模式
  7. FIQ异常:(a) 产生条件: 接收到有效的FIQ中断请求信号;(b) 入口地址: 0x0000 001C;©工作模式: FIQ模式

image-20240507211318854

9 ARM9处理器处理异常事件的流程?

(1)进入异常(保护现场):

  1. 断点处的下一条指令地址保存到相应的R14寄存器中;
  2. CPSR的值复制到相应的SPSR备份的程序状态寄存器中;
  3. 根据异常事件的类型,把CPSR当前程序状态寄存器[4 : 0]设置为对应的数值;
  4. 把异常事件处理程序的入口地址加载到PC寄存器

(2)退出异常(恢复现场):

  1. R14(LR)寄存器的值复制到R15(PC)寄存器中;
  2. SPSR 备份的程序状态寄存器的值复制到CPSR当前程序状态寄存器
  3. 清除中断禁止控制位(如果在响应中断请求时,禁止了中断请求)

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指令可以使用的条件码助记符有哪些?它们对应的条件?

​ 条件码助记符:用于表示指令的执行条件

image-20240507223701428

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 后变址寻址

image-20240507224732328

指令功能:

​ 单一数据加载指令 LDR:从主存储器(RAM)中,读取一个操作数,并将该操作数放在一个通用寄存器中
​ 单一数据存储指令 STR:将一个通用寄存器中的数据写入主存储器(RAM)中。

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

image-20240508084939935

3 单一数据交换指令 SWP
​ 指令功能:在寄存器和存储器之间交换数据
​ 语法格式:SWP{条件码}{Type} Rd,Rm, [Rn]

2 数据处理类指令

1 数据传送指令

  • 常规的数据传送指令 MOV

    语法格式:MOV{条件码}{S} Rd, Op
    指令功能:寄存器与寄存器之间的传送指令

  • 取反的数据传送指令 MVN
    语法格式: MVN{条件码}{S} Rd, Op
    指令功能:寄存器与寄存器之间传送取反值的指令;传送数据前,对操作数按位取反

2 算术运算指令

  • 不带进位的加法指令 ADD
image-20240508090543973
  • 带进位的加法指令 ADC

    image-20240508090629887
  • 不带借位的减法指令 SUB

image-20240508090728001
  • 带借位的减法指令 SBC
image-20240508090754879
  • 不带借位的反向减法指令 RSB
image-20240508090815910
  • 带借位的反向减法指令 RSC
image-20240508090831934
  • 32位乘法指令 MUL
image-20240508090915117
  • 32位乘加指令 MLA
image-20240508091049483

3 逻辑运算指令

  • 与运算指令 AND
image-20240508091204730
  • 或运算指令 ORR

  • 异或运算指令 EOR

  • 位清除指令 BIC

image-20240508091241609

4 比较指令

  • 常规的比较指令 CMP
image-20240508100408550
  • 与取负数的比较指令 CMN

image-20240508100426848

5 测试指令

  • 位测试指令 TST

image-20240508100508673

  • 相等测试指令 TEQ

image-20240508100525987

3 分支指令
  • 普通的分支指令 B

image-20240508100626461

  • 带链接的分支指令 BL

image-20240508100646776

  • 带状态切换的分支指令 BX

image-20240508100706982

4 程序状态寄存器访问指令
  • 程序状态寄存器读指令 MRS

image-20240508100753525

  • 程序状态寄存器写指令 MSR

image-20240508100840929

5 软件中断指令 SWI

image-20240508100926865

15 常用的指示符和伪指令有哪些?它们的语法格式?功能?

常用的指示符有:

  • AREA:用于定义一个程序段(代码段或数据段)
    AREA 段名, 属性1, 属性2, …
    image-20240508101627624

  • 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种总线定时方式的原理和特点

  • 同步定时

image-20240508105651653

  • 异步定时

image-20240508105700110

  • 半同步定时

image-20240508105707128

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)处理中断请求的过程

image-20240508122047193

24 看门狗定时器的用途和使用方法

用途:
看门狗定时器是一种为了解决某个具体问题而设计的定时部件
看门狗定时器解决的问题:系统程序功能错乱,导致嵌入式系统“死机”
使用看门狗定时器,可以使处于“死机”状态的嵌入式系统恢复到正常的状态下运行(它是通过让处理器复位(reset),使嵌入式系统摆脱“死机”状态的。)
使用方法
image-20240508123112853

​ (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内核时间片所需的毫秒计时中断
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值