【系统架构设计】嵌入式系统设计(1)
嵌入式系统概论
嵌入性、专用性、计算机系统是嵌入式系统的三个基本的核心要素。典型的嵌入式系统具有特点如下:
- 系统专用性强
- 系统实时性强
- 软硬件依赖性高
- 处理器专用
- 多种技术紧密结合
- 系统透明性
- 系统资源受限
嵌入式系统的组成
一般由软件和硬件两部分组成,其中嵌入式处理器、存储器和外部设备构成整个系统的硬件基础,嵌入式系统的软件部分可以分为3个层次:系统软件、应用支撑软件、应用软件。其中,系统软件和支撑软件是基础,应用软件是最能体现整个嵌入式系统的特点和功能的部分。
硬件
如图是一个嵌入式系统的基本硬件架构,其中,微处理器是整个嵌入式系统的核心,负责控制系统的执行;外部设备是嵌入式系统同外界交互的通道,常见的外部设备有Flash存储器、键盘、输入笔、触摸屏、液晶显示器等输入/输出设备;存储器主要用于存放系统的程序代码、数据和系统运行的结果。
嵌入式处理器
嵌入式处理器可分为嵌入式微处理器(Embedded Micro Processing Unit,EMPU)、嵌入式微控制器(Embedded Micro Controlling Unit,EMCU)、嵌入式数字信号处理器(Embedded Digital Signal Processor,EDSP)、嵌入式片上系统(Embedded System On Chip)。
- EMPU具有体积小、功耗低、质量轻、成本低、可靠性高等优点;
- EMCU相比前者,具有体积更小、功耗和成本更低、可靠性更高的特点,目前,嵌入式微控制器的品种和数量最多,约占嵌入式系统市场份额的 70%;
- EDSP是一种专门用于信号处理的处理器;
- 嵌入式片上系统是一种在一块芯片上集成很多功能模块的复杂系统,可以大幅度缩小了系统的体积,降低了系统的复杂度,增强系统的可靠性。
总线
总线是连接计算机系统内部各个部件的共享高速通路。
存储器
嵌入式系统的存储器主要包括主存和外存,嵌入式系统的存储器主要分为三种:高速缓存(Cache)、片内主存和片外主存、外存。
- 高速缓存是存放当前使用最多的程序代码和数据的,即主存中部分内容的副本。
- 主存是处理器能够直接访问的存储器,用来存放系统和用户的程序和数据,系统上电后,主存中的代码直接运行,主存的主要特点是速度快。
- 外部存储器是不与运算器直接联系的后备存储器,用来存放不常用的或暂不使用的信息,外存一般以非易失性存储器构成,数据能够持久保存,即使掉电,也不消失。
I/O 设备与接口
嵌入式系统中接口电路的设计需要首先考虑的是电平匹配问题,嵌入式系统微处理器所提供与接收信号的电平,必须与所连接的设备的电平相匹配,否则将导致电路损坏或逻辑判定错误。其次,还要考虑驱动能力和干扰问题等因素。
软件
嵌入式开发平台与调试环境
交叉平台开发环境
嵌入式系统的软件开发方法采用的不是通用的开发方法,而是交叉平台开发方法(Cross Platform Development,CPD),即软件在一个通用的平台上开发,而在另一个嵌入式目标平台上运行。这个用于开发嵌入式软件的通用平台通常叫作宿主机系统,被开发的嵌入式系统称为目标机系统。而当软件执行环境和开发环境一致时的开发过程则称为本地开发(Native Development,ND)。
交叉编译环境
宿主机提供的基本开发工具是交叉编译器、交叉链接器、源代码调试器。作为目标机的嵌入式系统则可能提供一个动态装载器、链接装载器、监视器、一个调试代理等。在目标机和宿主机之间有一组连接,通过这组连接程序代码映像从宿主机下载到目标机,这组连接同时也用来传输宿主机和目标机调试代理之间的信息。
通常,一个目标文件包含:
- 关于目标文件的通用信息,如文件尺寸、启动地址、代码段和数据段等。
- 机器架构特定的二进制指令和数据。
- 符号表和重定位表。
- 调试信息。
ps: 以上部分其实很好理解,就是平时的开发和编译过程,下面的调试要注意一下,跟平时调试有点区别,只是有时为图方便也在用。
调试
通用系统与嵌入式系统的软件调试过程存在着明显的差异。对于通用系统,调试工具与被调试的程序位于同一台计算机上,调试工具通过操作系统的调试接口来控制被调试的程序。但是在嵌入式系统中,由于资源的限制,不能直接在其上开发应用程序,调试过程通常也以交叉方式进行的。在实际开发实践中,经常采用的调试方法有直接测试法、调试监控法、在线仿真法、片上调试法、模拟器法等。
- 直接调试法:将目标代码下载到目标机上,让其执行,通过观察指示灯来判断程序的运行状态;
- 调试监控法也叫插桩法。目标机和宿主机一般通过串行口、并行口或以太网相连接,采用这种方法还需要在宿主机的调试器内和目标机的操作系统上分别启动一个功能模块,然后通过这两个功能模块的相互通信来实现对应用程序的调试。在目标机上添加的模块叫作桩,也叫调试服务器或调试监控器,主要有两个作用:其一,监视和控制被调试的程序;其二,跟宿主机上调试程序通信,接收控制指令,返回结果等。在进行调试的时候,宿主机上的调试器通过连接线路向调试监控器发送各种请求,实现目标机内存读/写和寄存器访问、程序下载、单步跟踪和设置断点等操作。
- 在线仿真法:是一种用于替代目标机上 CPU 的设备。
- 片上调试法:是 CPU 芯片内部的一种用于支持调试的功能模块。这种芯片的外面有跟调试相关的引脚,这些引脚在调试的时候被引出,形成一个与外部相连的调试接口,这种 CPU 具有调试模式和执行模式两种不同的运行模式。当满足了特定的触发条件时,CPU 进入调试模式,在调试模式下,CPU 不再从内存中读取指令,而是通过其调试端口读取指令,通过调试端口还可以控制 CPU 进入和退出调试模式。
- 模拟器法:是运行于宿主机上的一个纯软件工具,它通过模拟目标机的指令系统或目标机操作系统的系统调用来达到在宿主机上运行和调试嵌入式应用程序的目的。
ps: 简单讲,直接调试法就看目标机硬件响应;调试监控法宿主机和目标机分别开客户端通信控制操作;在线仿真法就是做一个目标机的模拟系统来调试;片上调试法就是目标机有调试和运行模式;模拟器法就是常用的目标机上开模拟器使用。