第五章 嵌入式系统开发过程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.3 嵌入式系统的开发流程
嵌入式系统的应用开发是按照如下图所示的流程进行的, 一般由5个阶段构成:需求分析、体系结构设计、硬件/软件 设计、系统集成和代码固化。各个阶段之间往往要求不断地 反复和修改,直到完成最终完成设计目标。
1. 需求分析阶段
在需求分析阶段需要分析系统的需求,系统的需求一般分 功能需求和非功能需求两方面。根据系统的需求,确定设 计任务和设计目标,并提炼出设计规格说明书,作为正式 指导设计和验收的标准。
2. 体系结构设计
需求分析完成后,根据提炼出的设计规格说明书,进行体 系结构的设计。系统的体系结构描述了系统如何实现所述 的功能和非功能需求,包括对硬件、软件的功能划分,以 及系统的软件、硬件和操作系统的选型等。
·如,开发便携式GPS导航系统
·
➢能够存储电子地图信息并在LCD显示屏上显示
➢ 能够接收GPS信号,根据GPS收到的信息可以确定 当前在地图中所处的位置
1.模拟器方式 调试工具和待调试的嵌入式软件都在主机上运行,通过软 件手段模拟执行为某种嵌入式处理器编写的源程序。简单的 模拟器可以通过指令解释方式逐条执行源程序,分配虚拟存 储空间和外设,进行语法和逻辑上的调试。
2.在线仿真器方式
在线仿真器ICE是一种完全仿造调试目标CPU设计的 仪器,目标系统对用户来说是完全透明的、可控的。 仿真器与目标板通过仿真头连接,与主机有串口、并 口、以太网口或USB口等连接方式。该仿真器可以 真 正地运行所有的CPU动作,并且可以在其使用的 内存 中设置非常多的硬件中断点,可以实时查看所有需要 的数据,从而给调试过程带来很多便利。由于仿真器 自成体系,调试时可以连接目标板,也可以不接目标 板。
对于一些复杂的系统,在系统设计的初期阶段就要对系 统的需求进行分析,确定系统的功能,然后将系统的功 能映射到整个系统的硬件、软件和执行装置的设计过程 中,这个过程称为系统的功能实现。
5.2嵌入ቤተ መጻሕፍቲ ባይዱ软件开发特点
与通用PC相比,嵌入式系统有以下主要差别:
•并发处理,及时响应 •接口方便,操作容易 •稳定可靠,维护简便 •功耗管理,降低成本 •功能实用,便于升级
4 S 建立嵌入式Linux交叉开发环境(QTE for x86 S Q T E for ARM)
二、根据需要选用RTOS开发平台
对简单系统可以用传统方法,即从底层用汇编语 言编写程序,利用在线仿真器(ICE)、在线调试器 (ICD)等开发工具进行软件的调试。
对于那些复杂的嵌入式系统,需要在优化级可控 的情况下预测其运行状态,不利用实时操作系统和 嵌入式系统开发平台进行开发,是很难、甚至是不 可能达到预定要求的。为了合理地调度多任务、利 用系统资源,用户尽量选配RTOS开发平台,这样才 能尽最大程度保证程序执行的实时性、可靠性,并 减少开发时间,保证软件质量。
嵌入式软件的开发与传统的软件有许多共同点,它继承了许 多传统软件开发的开发习惯。但由于嵌入式软件运行于特定的 目标环境,与传统软件的开发又有着很大的不同。
嵌入式系统开发的最大特点就是需要软硬件综合开发
一、采用宿主机/目标机方式
嵌入式系统的软件使用交叉开发平台进行开发。
系统软件和应用软件在主机开发平台上开发
3. 硬件/软件设计 基于体系结构,对系统的软、硬件进行详细设计。对于一 个完整的嵌入式应用系统的开发,应用系统的程序设计是嵌 入式系统设计一个非常重要的方面,程序的质量直接影响整 个系统功能的实现,好的程序设计可以克服系统硬件设计的 不足,提高应用系统的性能,反之,会使整个应用系统无法 正常工作。 4. 系统集成 把系统中的软件、硬件集成在一起,进行调试,发现并改 进单元设计过程中的错误。 5. 代码固化 嵌入式软件开发完成以后,大多数要在目标环境的非易失 性存储器中运行,程序写入到Flash中固化,保证每次运行 后下一次运行无误,所以嵌入式软件开发与普通软件开发相 比,增加了固化阶段。
近年来,各种PLD(Programmable Logic Device,可 编程逻辑器件)的出现,改变了硬件设计方法,出现了 “可重构计算”的概念。通过改写PLD,允许在不改变硬 件结构的情况下,实现不同的接口和功能。20世纪80年 代中期以后出现了FPGA(Field-programmable gate array,现场可编程门阵列)器件,这是是一种大规模可 编程逻辑器件,具有保密性好、体积小、重量轻、可靠性 高等一系列ASIC的优点。FPGA的出现使得一个电子系 统可以仅仅由三种标准模块构成,即微处理器、存储器和 可编程逻辑器件。前两种模块都已标准化,系统中大量的 控制逻辑由FPGA实现。这使得硬件的设计更具有灵活性和 扩展性,并降低了后续产品开发的成本。
➢给定起点和终点可以计算出合理的行进路线 ➢可以通过以太网下载更新电子地图或系统软件 ➢有USB主端接口,满足USB1.1规范,可以挂接键盘 、鼠标和存储设备等
➢手持的电池供电系统
➢ 根据系统功能,可以确定该系统需要: ➢ ARM9 ➢ 32MB Flash存储器,用于存储电子地图信息
➢4MB Flash存储器,用于存储系统软件 ➢64MB SDRAM,用作系统运行内存 ➢ TFT-LCD接口,支持16位颜色,6.4英寸TFTLCD显示屏 ➢ RS232接口,用于与GPS模块通讯 ➢10M以太网接口 ➢ USB主端接口 ➢支持6.4英寸四线电阻式触摸屏
硬件层由嵌入式微处理器、外围电路和外设组成。在一片 嵌入式微处理器基础上增加电源电路、复位电路、调试接口 和存储器电路,就构成一个嵌入式核心控制模块。其中操作 系统和应用程序都可以固化在ROM或者Flash中。为方便使用 ,有的模块在此基础上增加了LCD、键盘、USB接口,以及其 他一些功能的扩展电路。
系统软件和应用软件在嵌入式硬件平台上运行。
宿主机(Host)是用来开发嵌入式软件的系统。
目标机(Target)是被开发的目的嵌入式系统。
交叉编译器(Cross-compiler)是进行交叉平台开发的主
要软件工具。它是运行在一种处理器体系结构上,但是可以
生成在另一种不同的处理器体系结构上运行的目标代码的编
操作系统的引入大大提高了嵌入式系统的功能,方便了 应用软件的设计,但同时也占用了宝贵的嵌入式系统资 源。一般在大型的或需要多任务的应用场合才考虑使用 嵌入式操作系统。
功能层由基于操作系统开发的应用程序组成,用来完成 对被控对象的控制功能。功能层是面向被控对象和用户 的,为了方便用户操作,往往需要具有友好的人机界面。
4.在线调试器方式
使用ICD和目标板的调试端口连接,发送调试命令和接 收调试信息,可以完成必要的调试功能。一般情况下, 在ARM芯片的开发板上采用JTAG边界扫描口进行调试。 摩托罗拉公司采用专用的BDM调试接口。
使用合适的开发工具可以利用这些接口。例如,ARM开 发板,可以将JTAG调试器接在开发板的JTAG口上, 通过JTAG口与ARM处理器核进行通信。由于JTAG调 试的目标程序是在目标板上执行,仿真更接近于目标硬 件,因此许多接口问题,如高频操作限制、电线长度的 限制等被最小化了。该方式是目前采用最多的一种调试 方式。
纯粹的BSP所包含的内容一般说来是与系统有关的驱动程序, 如网络驱动程序和系统中的网络协议有关,串口驱动程序和系 统的下载调试有关,等等。离开这些驱动程序系统就不能正常 工作。
软件层主要是操作系统,有的还包括文件系统、图形用 户接口和网络系统等。操作系统是嵌入式应用软件的基 础和开发平台,实际上是一段程序,系统复位后首先执 行,相当于用户的主程序,用户的其他应用程序都建立 在操作系统之上。操作系统是一个标准的内核,将中断、 I/O、定时器等资源都封装起来,以方便用户使用。
使用ICE同使用一般的目标硬件一样,只是在ICE上完 成调试后,需要把调试好的程序重新下载到目标系统 上而已。由于ICE价格昂贵,而且每种CPU都需要一 种与之对应的ICE,使得开发成本非常高。
3.监控器方式 主机和目标板通过某种接口(通常是串口)连接,主机上 提供调试界面,被调试程序下载到目标板上运行 监控程序是一段运行于目标机上的可执行程序,主要负责 监控目标机上被调试程序的运行情况,与宿主机端的调试器 一起完成对应用程序的调试。监控程序包含基本功能的启动 代码,并完成必要的硬件初始化,等待宿主机的命令。被调 试程序通过监控程序下载到目标机,就可以开始进行调试。 监控器方式操作简单易行,功能强大,不需要专门的调试硬 件,适用面广,能提高调试的效率,缩短产品的开发周期, 降低开发成本。正因为以上原因,监控器方式才能够广泛应 用于嵌入式系统的开发之中。 监控器调试主要用于调试运行在目标机操作系统上的应用 程序,不适宜用来调试目标操作系统。有的微处理器需要在 目标板工作正常的前提下,事先烧制监控程序,而且功能有 限,特别是硬件调试能力较差。
第5章 嵌入式系统开发过程
5.1 嵌入式系统的总体结构
在不同的应用场合,嵌入式系统呈现出的外观和形式各不相 同。但通过对其内部结构进行分析,可以发现,一个嵌入式系 统一般都由嵌入式微处理器系统和被控对象组成,如图所示。 其中嵌入式微处理器系统是整个系统的核心,由硬件层、中间 层、软件层和功能层组成。被控对象可以是各种传感器、执行 机构(如继电器、电机等),可以接受嵌入式微处理器系统发 出的控制命令,执行所规定的操作或任务。
5.4 调试嵌入式系统
调试是任何项目开发过程中必不可少的一部分,特别是在 软硬件结合非常紧密的嵌入式系统开发中。一般来说,大多 数的调试工作是在RAM中进行的,只有当程序完成并能运 行后才切换到ROM上。嵌入式系统的调试有多种方法,可 分为模拟器方式、ICE(In-Circuit Emulator,在线仿真器 方式、ICD(In-Circuit Debugger,在线调试器)方式和监 控器方式。
三、生成代码需要固态化存储
嵌入式应用程序开发环境是PC机,但运行的目标环境却 千差万别,可以是PDA,也可以是仪器设备。而且应用 软件在目标环境下必须存储在非易失性存储器中,保证 系统在掉电重启后仍能正常使用。所以,应用软件在开 发完成以后,应生成固化版本,并固化在目标环境的 Flash中运行。
四、软件代码具有高质量、高可靠性
硬件层与软件层之间为中间层,也称为BSP(Board Support Package,板级支持包),将系统软件与底层硬件部 分隔离,使得系统的底层设备驱动程序与硬件无关,一般应具 有相关硬件的初始化、数据的输入/输出操作和硬件设备的配置 等功能。BSP是主板硬件环境和操作系统的中间接口,是软件平 台中具有硬件依赖性的那一部分,主要目的是为了支持操作系 统,使之能够更好地运行于硬件主板上。
译器。
RJ45(TCP/IP)
目标机 (ARM)
RS232 Minicom
宿主机(PC)
1 s 选择嵌入式微处理器(ARM7sARM9),构建主板(可直接 购买),开发应用电路板;
2 s 在宿主机(PC)上安装Redhat Linux9.0;
3 s 向目标板上依次写入Bootload(vivi)sLINUX Kernel S 文件系统(yaffsSjffs2Sramdisk等)
嵌入式系统的硬件层是以嵌入式处理器为核心的,最初的 嵌入式处理器都是为通用目的而设计的。后来随着微电子技术 的发展出现了ASIC(Application specific integrated circuit,专用的集成电路),ASIC是一种为具体任务而特殊 设计的专用集成电路。由于ASIC在设计过程中进行了专门优 化,其性能、性价比都非常高。采用ASIC可以减少系统软硬 件设计的复杂度,降低系统成本。有的嵌入式微处理器利用 ASIC来实现,但ASIC的前期设计费用非常高,而且ASIC一 旦设计完成,就无法升级和扩展,一般只有在一些产量非常 大的产品设计中才考虑使用ASIC。