12嵌入式复习资料.docx
《12嵌入式复习资料.docx》由会员分享,可在线阅读,更多相关《12嵌入式复习资料.docx(17页珍藏版)》请在冰豆网上搜索。
12嵌入式复习资料
1.嵌入式系统的定义:
嵌入式系统是以应用为中心,以计算机技术为基础,软、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。
2.嵌入式系统的组成结构:
一般可划分为硬件层、中间层、软件层和功能层。
嵌入式系统的组成结构
3.嵌入式处理器可以分为:
嵌入式微控制器(MCU),嵌入式微处理器(MPU),嵌入式DSP,嵌入式片上系统(SOC)。
4.嵌入式系统是专用的计算机系统,具有代码固化、实时性要求、可靠性要求和操作系统支持、专门的开发工具、环境和方法等特点。
5.ARM7采用32位架构,ARM指令集,冯诺依曼体系结构,其3级流水线分别是取址、译码、执行。
6.ARM7TMDI是目前使用最广泛的32位嵌入式RISC处理器,属于低端ARM处理器核。
ARM7TMDI的名称含义为:
ARM732位ARM体系结构v4T版本,ARM632位整型核的3V兼容的版本
T支持16为压缩指令集Thumb
D支持片上Debug
M内嵌硬件乘法器(Multiplier)
I嵌入式ICE,支持片上断点和调试点
ARM7TDMI-S:
ARM7TMDI的可综合(Synthesizable)版本(软核)
7.为了精确表述在每个ARM实现中所使用的指令集,迄今为止,将其定义了6种主要版本,分别用版本号v1~v6表示
8.ARM体系结构的演变
⑴Thumb指令集(T变种)
⑵长乘法指令(M变种)
⑶增强型DSP指令(E变种)
⑷Java加速器Jazelle(J变种)
⑸ARM媒体功能扩展(SIMD变种)
9.基本字符串ARMv;
ARM指令集的版本号,目前是1~6的数字字符;
表示变种的字符(T、E、J除了M变种)。
使用字符x表示排除某种功能
如:
ARMv4T表v4版有T、M变种,ARMv4TxM表v4版有T无M
ARMv5TE表v5版有T、E、M变种
10.写出下列缩写的英文全称与中文含义?
CISC:
Complexinstructionsetcomputer,复杂指令集系统计算机
RISC:
Reducedinstructionsetcomputer,精简指令集计算机
ARM:
AdvancedRISCMachine:
先进精简指令集设计。
RTOS:
realtimeoperationsystem,实时操作系统
SOC:
SystemonChip,片上系统
MMU:
memorymanagementunit,内存管理单元
UML:
UnifiedModelLanguage,统一建模语言
DMA:
DirectMemory-Access,直接存储器访问
RAM:
RandomAccessMemory,随机存储器
SRAM:
StaticRAM,静态随机存储器
DRAM:
DynamicRAM,动态随机存储器
ROM:
Read-OnlyMemory,只读存储器
EEPROM:
ElectricalErasableProgrammedROM,电可擦可编程ROM
LCD:
LiquidCrystalDisplay,液晶显示
UART:
UniversalAsynchronousReceiverandTransmitter,通用异步收发器
CSMA/CD:
CarrierSenseMultipleAccesswithCollisionDetection,载波检测多路存取/冲突检测
HAL:
HardwareAbstractionLayer,硬件抽象层
BSP:
BoardSupportPackage,板级支持包
OS:
OperatingSystem,操作系统
11.ARM处理器支持下列数据类型:
▪字节8位
▪半字16位(必须分配为占用两个字节)
▪字32位(必须分配为占用4个字节)
12.ARM微处理器的工作状态一般有两种:
ARM状态---处理器执行32位的字对齐的ARM指令;
Thumb状态---处理器执行16位的、半字对齐的Thumb指令。
处理器状态切换:
进入ARM状态:
当操作数寄存器的状态位(位[0])为0时执行BX指令进入ARM状态。
当处理器进行异常处理是时,进入ARM状态从异常向量地址处开始执行。
进入Thumb状态:
当操作数寄存器的状态位(位[0])为1时,执行BX指令进入Thumb状态。
如果处理器在Thumb状态进入异常,则当异常处理返回时,自动转换到Thumb状态。
除用户模式外,其它模式均为特权模式。
除了用户和系统模式外的五种模式称为异常模式。
它们除了可以通过程序切换进入外,也可以由特定的异常进入。
当特定的异常出现时,处理器进入相应的模式。
每种异常模式都有一些独立的寄存器,以避免异常退出时用户模式的状态不可靠。
13.寄存器组织
寄存器R13为堆栈指针SP(thestackpointer,SP)
寄存器R14为子程序链接寄存器LR(linkregister,LR)
寄存器R15为程序计数器PC(theprogramcounter,PC),它指向正在取指的地址。
ARM处理器有的37个寄存器,分成两大类:
31个通用32位寄存器;6个状态寄存器。
8个通用寄存器R0~R7,为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。
寄存器R8~R12有两个分组的物理寄存器。
一个用于除FIQ模式之外的所有寄存器模式,另一个用于FIQ模式。
这样在发生FIQ中断后,可以加速FIQ的处理速度。
寄存器R13、R14分别有6个分组的物理寄存器。
一个用于用户和系统模式,其余5个分别用于5种异常模式。
正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。
ARM指令总是以字为单位,R15寄存器的最低两位总是为00。
Thumb指令总是以半字为单位,R15寄存器的最低两位总是为10。
下图为重点:
大多数“数值处理指令”可以选择是否影响条件代码标志位(指令带S后缀);但有些指令执行总是影响条件代码标志。
所有ARM指令都可按条件来执行,而Thumb指令中只有分支指令可按条件执行。
保留位被保留将来使用。
为了提高程序的可移植性,当改变CPSR标志和控制位时,请不要改变这些保留位。
另外,请确保您程序的运行不受保留位的值影响,因为将来的处理器可能会将这些位设置为1或者0。
最低8位为控制位,当发生异常时,这些位被硬件改变。
当处理器处于一个特权模式时,可用软件操作这些位。
N:
运算结果的最高位反映在该标志位。
对于有符号二进制补码,结果为负数时N=1,结果为正数或零时N=0;
Z:
指令结果为0时Z=1(表示比较结果“相等”),否则Z=0;
C:
当进行加法运算,并且最高位产生进位时C=1,否则C=0。
当进行减法运算,并且最高位产生借位时C=0,否则C=1。
对于移位操作指令,C为从最高位最后移出的值,其它指令C通常不变;
V:
当进行加法/减法运算,并且发生有符号溢出时V=1,否则V=0,其它指令V通常不变。
在Thumb状态中,高寄存器(R8~R15)不是标准寄存器集的一部分。
汇编语言程序员对它们的访问受到限制,但可以将它们用于快速暂存。
可以使用MOV、CMP和ADD指令对高寄存器操作。
第二章重点指令:
寄存器移位寻址,多寄存器寻址,块拷贝寻址。
(见笔记)
14.全部存储系统分为四级,即寄存器组、高速缓存、内存和外存。
它们在存取速度上依次递减,而在存储容量上逐级递增。
15.嵌入式系统的硬件除了核心部件——嵌入式处理器,还包括存储器、通信模块以及连接各种设备的I/O单元电路。
16.为了实现各种中断请求,中断系统应具有以下功能:
实现中断及返回,能够实现优先级排队,高级中断源能够中断低级的中断处理。
17.驱动层软件分为三种类型:
1)板级初始化程序:
在系统上电后,初始化系统的硬件环境,包括嵌入式微处理器、存储器、中断控制器、DMA和定时器等。
2)与系统软件相关的驱动程序:
用于支持操作系统和中间件等系统软件所需的驱动程序。
3)与应用软件相关的驱动程序:
这类驱动不一定需要与操作系统连接,其设计和开发由应用所决定。
18.驱动层软件有两个重要的概念:
硬件抽象层(HAL,HardwareAbstractionLayer)和板级支持包(BSP,BoardSupportPackage)。
它们的区别、概念及各自的作用:
硬件抽象层
1)目的:
将硬件抽象化,即通过程序来控制诸如CPU、I/O、存储器等硬件的操作,从而使得系统的设备驱动程序与硬件无关。
2)好处:
有利于移植和软硬件并行测试。
3)功能:
实现相关硬件初始化、数据的I/O操作、硬件设备的配置操作
设计板级支持包
1)目的:
主要是为驱动程序提供访问硬件设备寄存器的函数包,从而实现对操作系统的支持。
2)功能:
在系统启动时完成对硬件的初始化,为驱动程序提供访问硬件的手段。
19.嵌入式系统的初始化过程是一个同时包括硬件初始化和软件(主要是操作系统及系统软件模块)初始化的过程;而操作系统启动以前的初始化操作是BSP的主要功能之一。
20.初始化过程总是可以抽象为三个主要环境,按照自底向上、从硬件到软件的次序依次为:
片级初始化、板级初始化和系统级初始化。
21.嵌入式操作系统的特点
1)微内核、模块化、可方便裁减
2)实时性,尤其对于控制系统
3)强大的网络功能
4)稳定性强、不依赖于交互操作
5)代码固化
6)可以执行好,适应多种体系结构
22.每一个任务都是一个无限的循环,可处在以下五种状态之一:
休眠态、就绪态、运行态、挂起态(等待事件态)、被中断态。
23.调度是内核的主要职责之一,就是决定该轮到哪个任务运行。
大多数实时内核是基于优先级调度法,即CPU总是让处于就绪态的、优先级最高的任务先运行。
基于优先级调度法的内核有两种:
占先式内核和非占先式内核。
24.任务间的通信,有两个途径:
共享数据结构和消息机制。
任务间的同步分为单向同步和双向同步。
25.嵌入式广泛使用了两种不同的范型,即状态机和循环缓冲区。
状态机
例1:
安全带控制器
✹输入:
✹坐位占用:
{seat,noseat}
✹安全带:
{belt,nobelt}
✹计时器:
{timing,timedout}
✹输出:
✹蜂鸣器:
{buzzeron,buzzeroff}
#defineIDLE0
#defineSEATED1
#defineBELTED2
#defineBUZZER3
switch(state){
caseIDLE:
if(seat){state=SEATED;timer_on=TRUE;}
break;
caseSEATED:
if(belt)state=BELTED;
elseif(timer)state=BUZZER;
break;
…
}
例2:
电话机系统
✹在开发电话系统时,根据分析,可以将应用划分为几个任务:
空闲任务(没有其它任务运行时运行)、
接收输入任务(按下键盘的按键,如数字键、拨号键等)
通话任务(电话处于工作状态)
显示任务(显示电话号码、日期、时间等)。
✹每个任务都是通过接收相应的输入事件(例如按键、对方接通等),改变电话机的状态,从而完成相应的功能。
例3:
设计交通信号灯控制系统
✹本系统要求在主干道和支干道的十字路口处实现交通无人自动管理。
由于主干道车流量大,为了保证道路的畅通,平时处于主干道绿灯、支干道红灯的状态。
为此,在支干道两边安装探测器来监测汽车的情况[3],控制支干道的交通灯。
具体要求为:
✹1)只有在支干道上发现汽车时,主干道上的交通灯才可能转为红灯。
2)当有汽车行驶在支干道上时,支干道上的交通灯保持为绿灯,但不能超过给定的最长时间间隔TG。
✹3)主干道的交通灯转为绿灯后,即使支干道上有汽车出现,而主干道并无汽车,也必须保证主干道绿灯亮的最短时间为TG。
✹4)紧急情况下紧急状态显示灯开启,只允许主干道上的汽车通行,即主干道交通灯转为绿灯,支干道交通灯转为红灯。
✹5)每次主干道或支干道黄灯亮的时间间隔为TY。
✹本系统根据主干道和支干道的交通灯从绿、黄再
✹变成红,或从红变成绿,可定义4种状态:
✹S0,开始状态,即主干道交通灯为绿色,支干道交通灯为红色;
✹S1,主干道交通灯为黄色,支干道交通灯为红色;
✹S2,主干道交通灯为红色,支干道交通灯为绿色;
✹S3,主主干道交通灯黄色,支干道交通灯红色;
✹交通灯变化的规律是遵循“主干道优先,支干道
✹其次”的原则,并对主、支干道的交通灯的亮灯时间进行控制,所有这些可作为触发条件:
Car表示支干道上有车;Ex表示紧急状态;TG表示绿灯所允许的亮灯时间;TY表示黄灯所允许的亮灯时间。
循环缓冲区
嵌入式系统中,不仅要实时输出结果,而且要尽量少地使用内存,用循环缓冲区是处理流数据的最有效方式.
说明了使用循环寻址实现FIR滤波器的方法。
对于N级FIR滤波器,在数据存储区开辟一个称为滑窗的具有N个单元的缓冲区,滑窗中存放最新的N个输入样本值。
每次输入新的样本时,新的样本将改写滑窗中最老的数据,其他数据则不需要移动。
intcirc_buffer[N],circ_buffer_head=0;
intc[N];/*coefficients*/
…
intibuf,ic;
for(f=0,ibuff=circ_buff_head,ic=0;
ic0:
ibuff++),ic++)
f=f+c[ic]*circ_buffer[ibuf];
26.CDFG框图:
代表控制和数据.
if(cond1)bb1();
elsebb2();
bb3();
switch(test1){
casec1:
bb4();break;
casec2:
bb5();break;
casec3:
bb6();break;
}
27.嵌入式程序的优化
⏹执行时间优化
⏹能量优化
⏹长度的优化
嵌入式程序设计中,可以对不同的对象进行优化,如程序执行时间的优化、程序代码长度的优化、程序功耗的优化。
28.程序执行时间的优化
(1)代码移出,把在循环体中不必要的代码移到循环体外。
(2)降低运算强度
⏹对于类似乘法运算语句:
y=x*2,
⏹可以用数值x左移1位替代乘2运算,因为左移指令比乘法指令执行速度快。
例如:
Y=x<<1
i=i×5可以用i=(i<<2)+i来代替。
⏹利用与运算代替求余运算:
有时可以通过用与
(AND)指令代替求余操作(%)来提高效率。
例如:
i=i%8可以用i=i&0x07来代替。
(3)归纳变量的优化方法:
归纳变量实际上是一个变量,其值由循环迭代变量的值计算而得。
在循环嵌套程序中采用归纳变量,可以有效地减弱循环迭代的开销。
for(i=0;ifor(j=0;ja[i][j]=b[i][j];
改为:
int*aptr=a;int*bptr=b;
for(i=0;ifor(j=0;jc=i*M+j;
*(aptr+c)=*(bptr+c);
}
29.把不提供共享内存的通信的交互方式称为基于网络设计的嵌入式系统,
优点如下:
分布式处理,可以有效地减少需要处理的数据,在网络的各个节点中完成任务,减少处理器的工作量。
基于网络的设计可以更好地进行模块化
容易测试,被用于容错系统中。
设计基于网络的嵌入式系统的原因
1)计算机和处理器资源的分散性
2)减少处理器的数据量
3)模块化设计要求
4)系统可靠性要求
30.OSI模型
物理层(PhysicalLayer)负责在网络上传输数据比特流。
这与数据通信的物理或电气特性有关。
31.I2C总线
32.CSMA/CD算法(书本P215)
课后题:
第二章13、14、18、19
第三章14(见资料16)
第五章7(见笔记)
I2C是全部要掌握的,起始信号格式,总线事务,怎么样进行总线仲裁?
ARM协处理器和杂项指令要了解,因为程序题里头,你要是有点印象,即使不会也可以猜出来程序是让你干嘛。
实验的内容你看04卷子也可以吧。