嵌入式系统设计复习.docx
《嵌入式系统设计复习.docx》由会员分享,可在线阅读,更多相关《嵌入式系统设计复习.docx(20页珍藏版)》请在冰豆网上搜索。
嵌入式系统设计复习
嵌入式系统设计复习
第一章嵌入式系统概述
提纲:
1、掌握嵌入式系统的定义
以应用为中心,以计算机技术为根底,软硬件可裁剪,适应应用系统对功能、可靠性、本钱、体积、功耗、实时性严格要求的专用计算机系统。
2、了解嵌入式系统的一般组成
硬件:
CPU、Memory、I/O
软件:
RTOS、文件系统、GUI和应用软件等
知识点:
1、嵌入式系统的定义与特点
以应用为中心,以计算机技术为根底,软硬件可裁剪,适应应用系统对功能、可靠性、本钱、体积、功耗、实时性严格要求的专用计算机系统。
2、RISC指令系统的特点
优点:
缩小核体积,降低功耗
缺点:
复杂功能的实现效率低
3、嵌入式系统由硬件与软件组成,其中软件的组成
RTOS、文件系统、GUI和应用软件
4、嵌入式系统的运行可靠性指标
平均无故障时间
5、嵌入式操作系统的种类,最方便移植的操作系统
Linux、VxWorks、WinCE、Palm、μC/OS-II、eCos.
最方便移植的是Linux。
6、根据嵌入式系统使用的微处理器,嵌入式系统的分类
嵌入式微控制器、嵌入式微处理器、嵌入式DSP处理器以及片上系统。
7、实时嵌入式操作系统RTOS的特点
一、时间约束性
实时系统的任务具有一定的时间约束〔截止时间〕。
根据截止时间,实时系统的实时性分为“硬实时〞和“软实时〞。
硬实时是指应用的时间需求能够得到完全满足,否那么就造成重大平安事故,甚至造成重大的生命财产损失和生态破坏,如在航空航天、军事、核工业等一些关键领域中的应用。
软实时是指某些应用虽然提出时间需求,但实时任务偶尔违反这种需求对系统运行及环境不会造成严重影响,如监控系统等和信息采集系统等。
二、可预测性
可预测性是指系统能够对实时任务的执行时间进展判断,确定是否能够满足任务的时限要求。
由于实时系统对时间约束要求的严格性,使可预测性称为实时系统的一项重要性能要求。
除了要求硬件延迟的可预测性以外,还要求软件系统的可预测性,包括应用程序的响应时间是可预测的,即在有限的时间完成必须的工作;以及操作系统的可预测性,即实时原语、调度函数等运行开销应是有界的,以保证应用程序执行时间的有界性。
三、可靠性
大多数实时系统要求有较高的可靠性。
在一些重要的实时应用中,任何不可靠因素和计算机的一个微小故障,或某些特定强实时任务〔又叫关键任务〕超过时限,都可能引起难以预测的严重后果。
为此,系统需要采用静态分析和保存资源的方法及冗余配置,使系统在最坏情况下都能正常工作或防止损失。
可靠性已成为衡量实时系统性能不可缺少的重要指标。
四、与外部环境的交互作用性
实时系统通常运行在一定的环境下,外部环境是实时系统不可缺少的一个组成局部。
计算机子系统一般是控制系统,它必须在规定的时间对外部请求做出反响。
外部物理环境往往是被控子系统,两者互相作用构成完整的实时系统。
大多数控制子系统必须连续运转以保证子系统的正常工作或准备对任何异常行为采取行动。
8、嵌入式系统与PC机的比拟
1.底层嵌入式硬件。
考虑到本钱和体积,嵌入式硬件是资源严重受限的,CPU处理速度没有一般电脑快,存储空间也没有一般电脑大。
2.嵌入式操作系统〔Threadx,Linux,VxWorks等等〕,一般都是小型化的核,体积比Windows小很多,并且可根据应用需求灵活裁剪。
3.嵌入式应用程序,基于嵌入式处理器〔ARM,PowerPC等〕架构编译出来的,不能在Windows端运行。
嵌入式系统〔简称“嵌〞〕和通用计算机〔简称“通〞〕的主要区别包括以下几点:
1.形式与类型
“通〞:
实实在在的计算机。
按其体系构造、运算速度和规模可分为大型机、中型机、小型机和微机
“嵌〞:
“看不见〞的计算机,形式多样,应用领域广泛,按应用进展分类
2.组成
“通〞:
通用处理器、标准总线和外设、软硬件相对独立
“嵌〞:
面向特定应用的微处理器,总线和外设一般集成在处理器部,软硬件严密结合
3.系统资源
“通〞:
系统资源充足,有丰富的编译器、集成开发环境、调试器等
“嵌〞:
系统资源紧缺,没有编译器等相关开发工具
4.开发方式
“通〞:
开发平台和运行平台都是通用计算机
“嵌〞:
采用穿插编译方式,开发平台一般是通用计算机,运行平台是嵌入式系统
5.二次开发性
“通〞:
应用程序可重新编程
“嵌〞:
一般不能重新编程开发
6.开展目标
“通〞:
编程功能电脑,普遍进入社会
“嵌〞:
变为专用电脑,实现“普及计算〞
第二章ARM体系构造
提纲:
1、掌握ARM的7种工作模式,熟悉其模式的工作入口表3-2
用户模式〔usr〕
快速中断模式〔fiq〕
外部中断模式〔irq〕
特权模式〔sve〕
数据访问中止模式〔abt〕
未定义指令终止模式〔und〕
系统模式〔sys〕
地址
异常
异常发生后核进入的模式
异常的优先级〔6最低〕
0x0000
复位
管理模式
1
0x0004
未定义指令
未定义模式
6
0x0008
软件中断
管理模式
6
0x000C
中止〔预取指令〕
中止模式
5
0x0010
中止〔数据〕
中止模式
2
0x0014
保存
保存
保存
0x0018
IRQ
IRQ模式
4
0x001C
FIQ
FIQ模式
3
2、熟悉不同模式下存放器的应用
P72图3-2
3、掌握通用存放器的组成,尤其是R13、R14、R15
31个通用存放器,R0~R7是所有处理器模式共用的一组存放器,R8~R14为备份存放器
R13:
堆栈指针R14:
存放器R15:
PC〔PC=PC+4〕
4、掌握状态存放器的组成,尤其是NZCV四位的作用
N=1:
结果为负;
Z=1:
结果为零;
C=1:
有进位;
V=1:
结果溢出;
T=0:
ARM状态;T=1:
Thumb状态;
ARM指令集32位,Thumb指令集16位,Thumb不能直接在CPU里运行,需要解压缩。
CPSR各模式共有,异常模式下才有SPSR。
5、熟悉ARM支持的存储器构造,大尾端与小尾端
ARM默认小尾端。
小尾端:
高位数据放高位地址,低位数据放低位地址。
大尾端:
高位数据放低位地址,低位数据放高位地址。
知识点
1、ARM存储器时的大尾端与小尾端构造
小尾端:
数据0x11223344从地址0x100开场存放,那么0x100存放0x44,0x101存放0x33,0x102存放0x22,0x103存放0x11
2、ARM的7种工作模式
正常模式:
用户模式〔usr〕
系统模式〔sys〕(特权模式,不通过异常进入)
异常模式:
快速中断模式〔fiq〕
外部中断模式〔irq〕
特权模式〔sve〕
数据访问中止模式〔abt〕
未定义指令终止模式〔und〕
3、ARM存放器组,通用存放器个数,状态存放器个数
37个存放器,31个通用存放器,6个状态存放器
4、程序状态存放器CPSR的重要标志位与控制位
N=1:
结果为负;
Z=1:
结果为零;
C=1:
有进位;
V=1:
结果溢出;
T=0:
ARM状态;T=1:
Thumb状态;
CPSR各模式共有,异常模式下才有SPSR。
第三章ARM处理器
提纲:
1、了解ARM版本的开展过程,从V1到V8
V1:
ARM1〔寻址空间:
64MB〕
V2:
ARM2、ARM3(V2版架构与版本V1相比,增加了以下功能:
乘法和乘加指令(32位);
支持协处理器操作指令;
快速中断模式;
SWP/SWPB的最根本存储器与存放器交换指令;
寻址空间仍为:
64MB)
V3:
ARM6〔V3版架构〔目前已废弃〕对ARM体系构造作了较大的改动:
寻址空间增至32位〔4GB〕;
当前程序状态信息从原来的R15存放器移到当前程序状态存放器CPSR中〔Current Program Status Register〕;
增加了程序状态保存存放器SPSR〔Saved Program Status Register〕;
增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。
;
增加了MRS/MSR指令,以访问新增的CPSR/SPSR存放器;
增加了从异常处理返回的指令功能。
寻址空间:
4GB〕
V4:
ARM7\8\9、StrongARM〔V4版架构是目前应用最广的ARM体系构造
指令集中增加了以下功能:
符号化和非符号化半字及符号化字节的存/取指令;
增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集;
完善了软件中断SWI指令的功能;
处理器系统模式引进特权方式时使用用户存放器操作;
把一些未使用的指令空间捕获为未定义指令〕
V5:
ARM10、Xscale〔新增命令有:
带有和交换的转移BLX指令;
计数前导零CLZ指令;
BRK中断指令;
增加了数字信号处理指令〔V5TE版〕;
为协处理器增加更多可选择的指令;
改进了ARM/Thumb状态之间的切换效率;
E---增强型DSP指令集,包括全部算法操作和16位乘法操作;
J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。
)
V6:
ARM11〔此架构在V5版根底上增加了以下功能:
THUMBTM:
35%代码压缩;
DSP扩大:
高性能定点
DSP功能;
JazelleTM:
Java性能优化,可提高8倍;
Media扩大:
音/视频性能优化,可提高4倍。
〕
V7:
ARMCortex〔采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的根底上开展出来的,并且保持了对已存ARM解决方案的完整的代码兼容性。
Thumb-2技术比纯32位代码少使用31%的存,降低了系统开销,同时却能够提供比已有的基于Thumb技术的解决方案高出38%的性能表现。
ARMv7架构还采用了NEON技术,将DSP和媒体处理能力提高了近4倍,并支持改进的浮点运算,满足下一代3D图形和游戏物理应用以及传统的嵌入式控制应用的需求。
此外,ARMv7还支持改进的运行环境,来迎合不断增加的JIT和DAC技术的使用。
〕
V8:
苹果A7处理器〔ARMv8架构包含两个执行状态:
AArch64和AArch32。
AArch64执行状态针对64位处理技术,引入了一个全新指令集A64;而AArch32执行状态将支持现有的ARM指令集。
目前的ARMv7架构的主要特性都将在ARMv8架构中得以保存或进一步拓展,如:
TrustZone技术、虚拟化技术及NEONadvancedSIMD技术,等。
〕
2、熟悉ARM处理器核家族的开展过程
3、熟悉ARM处理器命名规那么,如TDMI、J、E、S
T:
支持16位压缩指令集Thumb
D:
支持片上Debug
M:
嵌硬件乘法器〔Multiplier〕
I:
嵌入式ICE,支持片上断点和调试点
J:
Java加速器Jazelle
E:
增强型DSP指令
S:
可综合版本
5、熟悉流水线机制,作用,以及不同处理器核所支持的流水线等级
ARM7:
3级流水线
ARM9:
5级流水线
ARM11:
8级流水线
6、了解改善处理器核的方法
增加流水线级数、指令与数据分开存储、增加最高时钟速率、降低CPI〔每条指令的平均时钟数〕
知识点:
1、ARM处理器命名规那么
T:
支持16位压缩指令集Thumb
D:
支持片上Debug
M:
嵌硬件乘法器〔Multiplier〕
I:
嵌入式ICE,支持片上断点和调试点
J:
Java加速器Jazelle
E:
增强型DSP指令
S:
可综合版本
2、决定CPU执行程序时间T的大小的因素
主频时钟、指令复杂程度、CPI〔每条指令占据时钟数〕
3、PC在CPU取出一条指令后增加的值
pc=pc+4
4、互斥的定义
互斥是指某一资源同时只允许一个访问者对其进展访问,具有唯一性和排它性。
但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
5、流水线的作用,不同处理器核所支持的流水线等级
作用:
提高执行速度,提高cpu的工作效率,ARM7采用了3级流水线;ARM95级流水线;ARM9E5级流水线;ARM10E采用了6级流水线;ARM118级流水线;
第四章总线与存储扩展
提纲:
1、了解ARM处理器核外部的总线构造
2、掌握ARM外扩存储器的方法,地址线、数据线、控制线
知识点:
1、RAM与ROM的作用与区别:
访问时间、掉电后信息是否丧失,使用场合
2、根据字节编址时,给定地址,会计算存储空间大小
3、PCI总线
位数:
32/64位
4、不同存储构造的访问速度,由高到低:
存放器组、cache、RAM、ROM
5、给定地址线与数据线,会计算存储构造的容量
6、存储管理
第五章ARM指令集
提纲:
1、理解ARM汇编指令的作用及适用场合
2、熟悉ARM汇编指令的特点
所有指令都是32bit。
大多数指令都在单周期完成。
所有指令都可以条件执行。
load/store体系构造。
指令集可以通过协处理器扩展。
3、熟悉ARM指令的格式,大体了解32个比特各个域的作用
Cond:
指令的条件码。
Opcode:
指令操作码。
S:
操作是否影响cpsr。
Rn:
包含第一个操作数的存放器编码。
Rd:
目标存放器编码。
Operand2:
第2操作数。
3、掌握ARM的四种寻址方式:
立即数、存放器、存放器间接、存放器移位
P80
4、对于立即数寻址,能够判别立即数合法与否
在0x00-0xFF围,都是合法的;超过这个围的,就要看那个数如果能通过8位常数通过偶数位的循环右移得到,那么是合法的,否那么不合法
6、掌握常用指令的用法,能够分析出小段代码执行后的结果及其对CPSR的影响。
知识点:
1、ARM指令集的分类
数据处理指令:
数据传输指令,算术指令,逻辑指令,比拟指令,乘法指令,前导零计数。
程序状态访问指令:
mrs和msr。
跳转指令:
b和bl。
访存指令:
单数据访存指令,多数据访存指令,信号量操作指令。
异常中断产生指令:
swi和bkpt。
协处理器指令
2、常用的ARM指令
P83表3-3
3、常用的寻址方式
立即寻址,存放器寻址,存放器间接寻址,基址变址寻址,多存放器寻址,相对寻址、堆栈寻址。
4、ARM支持两种指令集,分别是ARM指令集和Thumb指令集,位数?
ARM指令集32位,Thumb指令集16位,Thumb不能直接在CPU里运行,需要解压缩。
5、伪指令的作用
伪指令在源程序中的作用是为完成汇编程序作各种准备工作,也就是说这些伪指令仅在汇编过程中起作用,一旦汇编完毕,伪指令的使命就完成了。
6、堆栈的作用,对于堆栈的操作
现场保护〔子程序调用、中断〕
传参数
7、ARM指令集中,程序控制类指令的主要功能
用于在程序状态存放器和通用存放器之间传送数据,程序状态存放器访问指令包括以下两条:
—MRS程序状态存放器到通用存放器的数据传送指令
—MSR通用存放器到程序状态存放器的数据传送指令
8、掌握给定一段汇编程序,读懂,知道各存放器的结果,尤其是CPSR
第六章嵌入式开发环境的搭建与开发工具使用
提纲:
1、掌握穿插编译的定义
2、理解掌握嵌入式系统设计中,如何搭建ARM所采用的穿插编译环境,熟悉JTAG、、以太口的作用,以及NFS的作用,熟悉搭建过程。
3、熟悉课本124页图5-1ARM硬件平台构造图,熟悉超级终端的设置方法,熟悉Linux虚拟机的安装步骤,NFS效劳的配置方法
4、掌握GCC的使用,几个参数
gcc的使用语法如下:
gcc[options]filenames...
其中options就是编译器所需要的参数,必须以“-〞开场
常用参数:
-c、-o、-E、-v、-S
5、掌握make命令的作用,与GCC指令的区别,掌握简单的makefile文件书写,并理解何谓文件依赖关系
知识点:
1、GCC由哪个公司推出,假设不指定文件名,默认输出的文件
由sun公司推出,默认文件名为a.out。
2、make工具与Makefile的关系,各自的作用
make能实现这样的功能:
它读入一个文件,叫makefile,这个文件不仅决定了源文件之间的依赖关系,而且还决定了源文件什么时候该编译,什么时候不应该编译。
make本质思想为:
检查源代码和目标文件,以确定哪个源文件需要重新编译以创立新的目标文件。
3、穿插编译环境的作用与搭建过程
4、简单Makefile的编写,文件之间的依赖关系
一个简单的makefile
prog:
prog1.oprog2.o
gcc-oprog1.oprog2.oprog
prog1.o:
prog1.clib.h
gcc-c-I.-oprog1.oprog1.c
prog2.o:
prog2.c
gcc-cprog2.c
第七章引导程序B.L
提纲:
1、掌握B.L的作用功能
初始化硬件和建立存映射等,为操作系统核的启动准备必要的硬件环境。
BootLoader的主要运行任务就是将核映象从硬盘上读到RAM中,然后跳转到核的入口点去运行,也即开场启动操作系统。
2、熟记课本171页图7-3,熟悉各局部烧录的过程
3、熟悉B.L启动时的两种模式:
启动加载、下载
4、熟悉B.L的启动流程,课本173页图7-4
5、掌握一个特例VIVI主要完成的工作,分几个阶段,每个阶段完成的功能
Vivi的主要完成的工作有:
①检测目标板;
②下载代码保存到Flash中;
③初始化硬件;
④将代码从Flash复制到RAM中并且启动代码;
设置CPU的速度和时钟频率;
ViviRAM初始化;
初始化LED;
CPU部指令/数据cache。
putstr(vivi_banner)打印出Vivi的版本;
对开发板进展初始化〔board_init函数〕;
存映射初始化和存管理单元的初始化工作;
初始化堆栈,heap_init(),具体定义在\vivi\lib\heap.c文件中;
Vivi初始化MTD设备,mtd_dev_init();
初始化私有数据,init_priv_data(),具体定义在\vivi\lib\priv_data\rw.c
初始化置命令,init_builtin_cmds();
boot_or_vivi()。
6、了解VIVI的调试与烧写方法
知识点:
1、B.L的作用、阶段、每个阶段的功能
作用:
硬件初始化;导入操作系统。
阶段及功能:
引导加载程序〔JTAG〕:
完成硬件的一些根本配置,引导嵌入式操作系统核启动;
嵌入式操作系统核():
定制操作系统核以及核启动参数;
文件系统(RJ45):
根文件系统和Flash存上的文件系统;
用户应用程序(驱动):
特定于用户。
2、B.L的启动方式与存储器的关系
网络启动方式:
不需要配置较大的存储介质,需要把Bootloader安装到板上的EPROM或者Flash中。
目标板要有串口、以太网接口或者其他连接方式,开发主机和开发板两端都需要相应接口的驱动程序,还要在效劳器上配置启动相关网络效劳,TFTP、DHCP等。
磁盘启动方式:
主要用于PC机中的BIOS使用磁盘作为存储介质。
Flash启动方式:
一种直接从Flash启动,另一种将压缩的存映像文件从Flash中复制、解压到RAM,再从RAM启动。
Flash分为NORFlash和NANDFlash,NORFlash使用最为普遍。
第八章嵌入式Linux驱动开发根底
提纲:
1、理解程序调用与驱动程序的作用
系统调用是操作系统核和应用程序之间的接口,设备驱动程序是操作系统核和机器硬件之间的接口。
它们都有一个共同的特点:
屏蔽了底层的某个具体效劳的实现细节,比方,系统调用屏蔽了操作系统核某个具体功能的实现细节,设备驱动程序那么屏蔽了底层硬件设备的细节。
设备驱动是操作系统核中最接近硬件设备,是操作系统核和底层硬件设备之间的接口。
也就是说,操作系统核就是通过调用这些接口函数来完成对底层硬件设备的使用。
2、理解课本265页的驱动程序功能
3、了解Linux下的设备管理机制
Linux的一个重要特点就是将所有的设备都当做文件进展处理,这一类特殊文件就是设备文件。
块设备文件〔磁盘〕
字符设备文件〔并口、虚拟控制台〕
设备文件分类网络设备文件〔网卡〕
杂项设备文件〔IIC、USB〕
设备号是一个数字,它是设备的标志。
就如前面所述,一个设备文件〔也就是设备节点〕可以通过mknod命令来创立,其中指定了主设备号和次设备号。
主设备号说明某一类设备,用于标识设备对应的驱动程序,一般对应着确定的驱动程序,主设备号一样的设备使用一样的驱动程序;次设备号一般是用于区分标明不同属性〔例如不同的使用方法,不同的位置,不同的操作等〕,它标志着某个具体的物理设备。
4、熟悉Linux下的模块编程流程,理解主要接口函数的作用:
open、release、kmalloc、kfree、read、write
翻开设备:
open函数
释放设备:
release函数
操纵存:
kmalloc和kfree函数
读写设备:
read和write函数
5、三个构造的名称和作用
file_operations(文件操作):
存储驱动核模块提供的对设备进展这种操作的函数指针,也就是设备驱动程序的入口点
file(文件):
只出现在核代码中,从不出现在用户程序中,代表一个翻开的文件描述符,不是专门给驱动程序使用,系统中每个翻开的文件在核中都有一个关联的structfile,由核在open时创立,并传递给文件上操作的任何函数
inode(节点):
表示具体的文件,对于单个文件,可能会有许多个表示翻开的文件描述符file构造,但是它们都是指向单个的inode构造。
知识点:
1、在软件开发过程中,“汇编〞的定义
把汇编语言翻译成机器语言的过程称为汇编。
2、I/O接口的作用
1、I/O地址译码与设备选择
2、信息的输入输出,并对外设随时进展检测、控制和管理,必要时还可以通过I/O接口向CPU发出中断请求
3、命令、数据和状态的缓冲与锁存,缓解CPU与外设之间工作速度的差异,保证信息交换的同步
4、信号电平与类型的转换,实现信息格式变换、电平转换、码制转换、传送管理以及联络控制等功能
3、A/D与D/A接口
4、DMA接口
它允许不同速度的硬件装置来沟通,而不需要依于CPU的大量中断负载
5、中断接口
6、解压文件使用的LINUX命令
gzip,压缩文件名:
zip或gz,解压命令:
unzip
bzip2,压缩文件名:
bz,解压命令:
bzip2-d
上面两个是最常用的压缩方式,一般在linux下可以通过tar命令实现打包和压缩〔或解压〕。
例如:
tar-zcvffilefile.tar.gz打包并压缩成gzip格式,其中-c命令是创立tar包,-z参数是指定压缩成gzip格式;
tar-zxvffile.tar.gz解包命令,其中-x是解包命令,-z指定解压缩格式是gzip
tar-jcvffilefile.tar.bz2打包并压缩成bzip2格式,其中-c是创立tar包,-j参数指定压缩成bzip2格式;
tar-jxvffile.ta