1、嵌入式系统概念
嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应用软件等部分组成。它具有“嵌入性”、“专用性”与“计算机系统”的三个基本要素 。
2、嵌入式系统应用
人们平常所广泛使用的手机、PDA、MP3、机顶盒都属于嵌入式系统设备;而车载 GPS 系统、机器人也是属于嵌入式系统。
3、嵌入式系统的特点
(1)面向特定应用的特点。嵌入式系统与通用型系统的最大区别就在于嵌入式系统大多工作在为特定用户群设计的系统中,因此它通常都具有低功耗、
体积小、集成度高等特点,并且可以满足不用应用的特定需求。
(2)嵌入式系统的硬件和软件都必须进行高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择更具有竞争力。
(3)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,从事嵌入式系统开发的人才也必须是复合型人才。
(4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘中。
(5)嵌入式开发的软件代码尤其要求高质量、高可靠性,其代码必须有更高的要求。
(6)嵌入式系统本身不具备二次开发能力,即设计完成后用户通常不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行再次开发。
4、嵌入式系统的体系结构
嵌入式系统作为一类特殊的计算机系统,一般包括以下 3 个方面:硬件设备、嵌入式操作系统和应用软件。它们之间的关系如图 4.2 所示。
外围设备是嵌入式系统中用于完成存储、通信、调试、显示等辅助功能的其他部件。目前常用的嵌入式外围设备按功能可以分为存储设备(如 RAM、SRAM、Flash 等)、通信设备(如 RS-232 接口、SPI 接口、以太网接口等)和显示设备(如显示屏等)3 类。
5、几种主流嵌入式操作系统分析
嵌入式 Linux 同 Linux 一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式 Linux 还在 Linux 基础上做了部分改进,如下所示
· 改善的内核结构
在嵌入式系统经常采用的是另一种称为微内核(Microkernel)的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。
· 提高的系统实时性
利用 Linux 作为底层操作系统,在其上进行实时化改造加快系统的运行和响应速度 ,从而构建出一个具有实时处理能力的嵌入式系统 。
6、ARM处理器硬件开发平台
6.1 ARM处理器简介
ARM 是一类嵌入式微处理器,同时也是一个公司的名字。ARM 公司于 1990 年 11 月成立于英国剑桥,它是一家专门从事 16/32 位 RISC 微处理器知识产权设计的供应商。ARM 公
司本身不直接从事芯片生产,而只是授权 ARM 内核,再给生产和销售半导体的合作伙伴,同时也提供基于 ARM 架构的开发设计技术。世界各大半导体生产商从 ARM 公司处购买其
设计的 ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的 ARM 微处理器芯片进入市场 。
6.2 ARM处理器特点
· 体积小、低功耗、低成本、高性能。
· 支持 Thumb(16 位)/ARM(32 位)双指令集,能很好的兼容 8 位/16 位器件。
· 大量使用寄存器,指令执行速度更快。
· 大多数数据操作都在寄存器中完成。
· 寻址方式灵活简单,执行效率高。
· 指令长度固定。
6.3 ARM体系结构简介
1.ARM 微处理器工作状态
ARM 微处理器的工作状态一般有两种,并可在两种状态之间切换。
· 第一种为 ARM 状态,此时处理器执行 32 位的字对齐的 ARM 指令。
· 第二种为 Thumb 状态,此时处理器执行 16 位的、半字对齐的 Thumb 指令。
2.ARM 体系结构的存储格式
· 大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
· 小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
3.ARM 处理器模式
ARM 微处理器支持 7 种运行模式,分别如下。
· 用户模式(usr):ARM 处理器正常的程序执行状态。
· 快速中断模式(fiq):用于高速数据传输或通道处理。
· 外部中断模式(irq):用于通用的中断处理。
· 管理模式(svc):操作系统使用的保护模式。
· 数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储及存储保护。
· 系统模式(sys):运行具有特权的操作系统任务。
6.4 ARM 微处理器系列简介
7、交叉编译
交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。
8、交叉调试
嵌入式系统的交叉调试有多种方法,主要可分为软件方式和硬件方式两种
(1)软件方式
软件方式调试主要是通过插入调试桩的方式来进行的。调试桩方式进行调试是通过目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。该方式的典型调试器有 Gdb 调试器。
(2)硬件调试
硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行情况。目前嵌入式系统开发中最常用到的硬件调试器是 ROMMonitor、
ROMEmulator、In-CircuitEmulator 和 In-CircuitDebugger。
问题一、从各方面比较嵌入式系统与通用计算机的区别。
答:(1)嵌入式系统与通用型系统的最大区别就在于嵌入式系统大多工作在为特定用户群设计的系统中,因此它通常都具有低功耗、体积小、集成度高等特点,并且可以满足不用应用的特定需求。
(2)嵌入式系统的硬件和软件都必须进行高效地设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能 。
(3)嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,从事嵌入式系统开发的人才也必须是复合型人才。
(4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘中。
(5)嵌入式开发的软件代码尤其要求高质量、高可靠性,由于嵌入式设备所处的环境往往是无人职守或条件恶劣的情况下,因此,其代码必须有更高的要求。
(6)嵌入式系统本身不具备二次开发能力,即设计完成后用户通常不能对其中的程序功能进行修改,必须有一套开发工具和环境才能进行再次开发
问题二、ARM9有哪些优于ARM7的特性?
答:(1)ARM7 处理器采用的 3 级流水线设计,而 ARM9 则采用 5 级流水线设计.
通过使用 5 级流水线机制,在每一个时钟周期内可以同时执行 5 条指令。这样就大大提高了处理性能。
在同样的加工工艺下,ARM9 处理器的时钟频率是 ARM7 的 1.8~2.2 倍。
(2)ARM9采用的是哈佛结构,ARM7采用的是冯诺依曼结构
冯·诺依曼结构共用数据存储空间和程序存储空间,它们共享存储器总线,这也是以往设计时常用的方式;
而哈佛结构则具有分离的数据和程序空间及分离的访问总线。所以哈佛结构在指令执行时,取址和取数可以并行,因此具有更高的执行效率 。
(3)ARM9引入了高速缓存和写缓存提高了存储器的访问速度。
(4)支持MMU
MMU 是内存管理单元,它把内存以“页”为单位来进行处理。一页内存是指一个具有一定大小的连续的内存块,通常为 4096B 或 8192B。操作系统为每个正在运行的程序
建立并维护一张被称为进程内存映射的表,表中记录了程序可以存取的所有内存页以及它们的实际位置。
每当程序存取一块内存时,它会把相应的虚拟地址(virtual address)传送给 MMU,而MMU 会在 PMM 中查找这块内存的实际位置,也就是物理地址(physical address),物理地
址可以在内存中或磁盘上的任何位置。如果程序要存取的位置在磁盘上,就必须把包含该地址的页从磁盘上读到内存中,并且必须更新 PMM 以反映这个变化(这被称为 pagefault,即
页错)。只有拥有了 MMU 才能真正实现内存保护。例如当 A 进程的程序试图直接访问属于 B 进程的虚拟地址中的数据,那么 MMU 会产生一个异常(Exception)来阻止 A 的越界操作。这样,通过内存保护,一个进程的失败并不会影响其他进程的运行,从而增强了系统的稳定性,
ARM9 也正是因此拥有了 MMU,比 ARM7 有了更强的稳定性和可靠性。
问题三、什么是交叉编译?为什么要进行交叉编译?
答:交叉编译就是在一个平台上生成可以在 另一个平台上执行的代码 。
编译的最主要的工作就在将程序转化成运行该程序的 CPU 所能识别的机器代码,由于不同的体系结构有不同的指令系统。因此,不同
的 CPU 需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译称不同的CPU 对应语言。
问题四、嵌入式开发常用的调试手段有哪几种?说出它们各自的优缺点?
答:嵌入式系统常用的调试手段时交叉调试,主要分为软件调试和硬件调试两种方式。
软件方式调试主要是通过插入调试桩的方式来进行的。调试桩方式进行调试是通过目标操作系统和调试器内分别加入某些功能模块,二者互通信息来进行调试。该方式的典型调试器有 Gdb 调试器。
硬件调试器的基本原理是通过仿真硬件的执行过程,让开发者在调试时可以随时了解到系统的当前执行情况。目前嵌入式系统开发中最常用到的硬件调试器是 ROMMonitor、ROMEmulator、In-CircuitEmulator 和 In-CircuitDebugger。
问题五、嵌入式硬件系统一般由哪几部分组成?核心是什么?核心由哪几部分组成?他们的关系是怎样的(请用图表示出来)?
答:嵌入式系统一般由嵌入式处理器、存储器和输入/输出部分组成。
其中嵌入式微处理器是嵌入式硬件系统的核心,通常由三大部分组成:控制单元、算术逻辑单元和寄存器
问题六、Boot loader在嵌入式系统中主要起什么作用?完成哪些主要的工作?
答: Boot Loader是在操作系统运行之前执行的一段程序,通过这段程序,初始化硬件设备,建立内存空间的映射表,从而建立适当的系统软硬件环境,为最终
调用操作系统内核做好准备。
Boot Loader的stage1通常包括以下工作:
(1)硬件设备初始化。
(2)加载BootLoader的stage2准备RAM空间。
(3)拷贝BootLoader的stage2到RAM空间。
(4)设置堆栈
(5)跳转到stage2的C入口点。
Boot Loader的stage2通常包括以下工作:
(1)初始化本阶段要使用的硬件设备
(2)检测系统内存映射
(3)将内核映像和根文件系统映像从flash设备上复制到RAM空间中
(4)设置内核启动参数
(5)调用启动内核