嵌入式系统重点复习

  • 格式:doc
  • 大小:466.00 KB
  • 文档页数:9

1 嵌入式微处理器SDRAMROMI/OA/DD/A人机交互接口通用接口实时操作系统(RTOS)图形用户接口BSP/HAL 硬件抽象层/板极支持包任务管理文件系统应用程序嵌入式计算机系统硬件层软件层中间层功能层复习提纲:

第一章:

1、 嵌入式的定义

嵌入式系统的定义:嵌入式系

统是以应用为中心,以计算机

技术为基础,软硬件可裁剪,

适应应用系统对功能、可靠性、

成本、体积和功耗等严格要求

的专用计算机系统。

2、 嵌入式的组成结构

嵌入式系统的组成结构 :

硬件层、中间层、

软件层和功能层。

3、 嵌入式系统的分类

按照嵌入式软件结构分类:嵌入式系统可分为循环轮询系统、前后台系统和多任务系统。

系统分类 优点 缺点

循环轮询系 统 1、编程简单

2、没有中断,不会出现随机问题 1、应用领域有限

2、不适合有大量输入/输出的服务

3、程序规模增大后,不便于调试

前后台

系 统 1、可并发处理不同的异步事件

2、设计简单,无须学习操作系统相关知识 1、对于复杂系统,其主程序设计复杂,可靠性降低

2、实时性只能通过中断来保证,一旦主程序介入处理事件,其实时性难以保证

3、中断服务程序与主程序之间共享、互斥的问题需要自身解决

多任务

系 统 1、复杂的系统被分解成相对独立的多个任务,降低了系统的复杂度

2、可以保证系统的实时性

3、系统模块化,可维护性高 1、需要引入新的软件设计方法

2、需要对每个共享资源进行互斥

3、任务间存在竞争

4、嵌入式操作系统的使用将会增加系统开销

4、 与通用PC的区别

答:嵌入式系统一般是专用系统,而PC是通用计算平台 2 嵌入式系统的资源比PC少得多

嵌入式系统软件故障带来的后果比PC机大得多

嵌入式系统一般采用实时操作系统

嵌入式系统大都有成本、功耗的要求

嵌入式系统得到多种微处理体系的支持

嵌入式系统需要专用的开发工具

什么是多任务系统?多任务系统的特点有哪些?

答:多任务系统的软件由多个任务、多个中断服务程序以及嵌入式操作系统组成。

特点:(1)每个任务都是一个无限循环的程序,等待特定的输入,从而执行相应的处理。

(2)这种程序模型将系统分成相对简单、相互合作的模块。

(3)不同的任务共享同一个CPU和其它硬件,嵌入式操作系统对这些共享资源进行管理。

(4)多个顺序执行的任务在宏观上看并行执行,每个任务都运行在自己独立的CPU上。

第二章

1、ARM的工作模式表 2.3ARM处理器模式

处理器模式 说明 处理器模式

用户 usr 程序正常执行模式 中止 abt 虚拟存储器或存储器悍护

FIQ fiq 支持高速数据传输或通道处理 未定义 und 支持硬件协处理器的软件仿真

IRQ irq 通用中断处理 系统 sys 运行特权操作系统任务

管理 svc 操作系统悍护模式

2、 指令集(分成ARM和THUMB)

ARM 标准32位指令集

THUMB 16位压缩形式,与多数CISC相比,编码密度更高,在流水线中进行动态压缩

特点:①所有指令长度为 32位 .②多数指令在单周期内执行./在单时钟周期内执行Shift

& ALU 操作③每条指令都有执行条件(load/store 结构,数据处理指令仅作用在寄存器上,三个操作数格式,合并 ALU和移位器,用于高速的位操作,特殊的记忆接入指令,强大的 自动检索地址模式,32 位和 8位的数据类型,v4.中有16位的数据类型,灵活的多个寄存器

load和 store指令)④通过一个压缩器扩展指令

3、 ARM型号的识别,有几种变种 ARM体系结构的版本

1)Thumb指令集(T变种)

2)长乘法指令(M变种) 3)增强型DSP指令(E变种)

4)Java加速器Jazelle(J变种) 5)ARM媒体功能扩展(SIMD变种)

4、寄存器组,特别是几种特殊的寄存器,R13,R14,R15…..还有程序状态寄存器各个bit的含义。 核体系结构 ARM1 V1 ARM2 V2 ARM2aS、ARM3 V2a ARM6、ARM600、ARM610 V3 ARM7、ARM700、ARM710 V3 ARM7TDMI、ARM710T、ARM710T、ARM740T V4T Strong ARM、ARM8、ARM810 V4 ARM9TDMI、ARM920T、ARM940T V4T ARM9E-S V5TE ARM10TDMI、ARM1020E V5TE ARM11、ARM1156T2-S、ARM1156T2F-S、ARM1176JZ-S、ARM11JZF-S V6 3

寄存器r13和r14的用途比较特殊:

1.寄存器R13常作为堆栈指针(SP),被初始化成指向异常模式分配的堆栈。处理异常时,在程序入口处将异常处理程序用到的其他寄存器的值压入堆栈,返回时重新将这些值加载到寄存器中。这样就可以保证出现异常时不导致程序状态不可靠。

2.R14通常用作子程序链接寄存器(LR),当执行分支指令BL时,r15的内容拷贝到r14中,从而成为子程序调用后的返回地址。采用这种方式可以类似地用来处理异常的返回。

程序计数器r15。寄存器r15通常备用作程序计数器PC。在ARM状态下,由于ARM指令始终是字对准的,因此PC的值保存在位[31:2],而位[1:0]位0;在Thumb状态下,由于Thumb指令时半字对准的,因此PC的值保存在位[31:1],而位[0]位0。P39

①读程序计数器PC:用指令读出的 r15的值为指令地址加 8个字节。读PC主要用于快速对临近的指令和数据进行位置无关的寻址。

②写程序计数器 PC:写 r15的结果是将写到 r15的值作为指令地址,并根据这个地址

发生转移。

当前程序状态寄存器 CPSR。当前程序状态寄存器(CPSR)在用户级编程时用于存储条件码。例如,使用 CPSR的相应位来记录比较操作的结果和控制转移的条件。此外,CPSR还包含了中断禁止位、当前处理器模式以及其他的一些状态和控制信息。同时,为了在异常 4 出现时能够保存CPSR的状态,每种异常模式都设置了一个程序状态保存寄存器(SPSR)。

3、 指令集,ARM有特色的指令,比如条件执行,块传送指令,ARM和THUMB的切换(一些常见的编程格式错误,详见PPT),区别

ARM指令集

条件执行是指只有在当前程序状态寄存器CPSR中的条件码标志满足指定的条件时,带条件码的指令才能执行。条件转移是绝大多数指令集的标准特征,但ARM指令集将条件执行扩展到所有指令,包括监控调用和协处理器指令。条件域占据32个指令域的高岑位,如图2.17所示。

Cond

图2.17 ARM的条件代码域

条件域共有16个值,即16个条件码,如表2-5所示,其中AL阻lways涤件是缺省条件。

条件码:主要

操作码[31:28] 助记符后缀 标志 含义

0000 EQ Z置位 相等

0001 NE Z清零 不等

0100 MI N置位 负

0101 PL N清零 正或零

ARM存储器访问指令

1) LDR、STR

2) LDM、STM P52

句法: op{cond}mode Rn{!},reglist{^}

符号说明: mode:包括

IA每次传送后地址加1 IB一每次传送前地址加1

DA每次传送后地址减1 DB——每次传送前地址减1

FD--满递减堆栈 ED--空递减堆栈

FA——满递增堆栈 EA空递增堆栈

Reglist:加载或存储的寄存器列表,包含在括号中,也可以包含寄存器的范围,必须用

逗号隔开。

^:可选后缀。不允许在用户模式或系统模式下使用。用途包括以下两点:若op是LDM,且reglist中包含R15,则进行多寄存器传送时,也将SPSR拷贝到CPSR;用于从异常返回,仅在异常模式下使用。数据传送的是用户模式的寄存器,而不是当前模式的寄存器。

指令说明:

指令用于加载或存储多个寄存器,可传送R0~R15的任何组合。

指令忽略地址的位[1:0]。

到R15的加载将引起处理器转移到加载地址处的指令。

如果Rn包含在寄存器列表中,且用“!”表明要写回,那么若op是STM,且Rn是寄

存器列表中数字最小的寄存器,则Rn的初值被保存;否则,Rn的加载和存储值不可预知。

例:LDMIA R8,{R0,R2,R9}

STMDB R1!,{R3-R6,R11,R12}

STMFD R13!,{R0,R4-R7,LR} ;寄存器进栈

LDMFD R13!,{R0,R4-R7,PC} ;寄存器出栈,从子程序返回

STMIA R5!,{R5,R4,R9} ;错误,R5的值不可预知

LDMDA R2,{} ;错误,列表中至少要有一个寄存器 5 ARM分支指令 P57-62

Thumb指令集 P62 Thumb状态切换 P63

CPSR的T位决定ARM处理器执行的是ARM指令流还是Thumb指令流。若T置1,则认为是Thumb指令流;若T置巳则认为是ARM指令流。

⑴进入Thumb状态。系统复位后,处理器处于ARM状态。执行BX指令,将转移地址寄存器的位[0]置1,其他位放入PC,即可进入Thumb状态。由于BX指令引起转移,因此流水线被刷新,已在流水线上的指令将被丢弃。

⑵退出Thumb状态。退出 Thumb状态的方法与进入Thumb状态的方法相对应,使用BX指令,将转移地址寄存器的位[1:0]置为b00,即可退出Thumb状态。如果发生异常,无论处理器当前的工作状态如何,异常都会使处理器返回到ARM状态。

Thumb指令集与ARM指令集的区别

⑴Thumb指令除了分支B指令外大多是无条件执行的。

⑵大多数Thumb指令采用 2地址格式,即目的寄存器和源寄存器。

⑶Thumb指令集没有协处理器指令、信号量(semaphore)指令和访问PSR的指令。

⑷Thumb分支指令与ARM分支指令相比,在寻址范围上有更多限制。

⑸Thumb数据处理指令访问R8~R15受限。除MOV和ADD指令访问R8~R15外,数据处理指令总是更新CPSR的ALU状态标志。访问RS~R15的Thumb数据处理指令不

能更新标志。

⑹Thumb的寄存器Load/Store指令只能访问R0~R7。 PUSH和POP指令使用堆栈指

针R13(SP)作为基址实现满递减堆栈。除传送R0~R7外,PUSH还可用于存储链接寄存器R14(LR)POP还可用于加载程序计数器指针PC。