首页 理论教育ARM嵌入式系统流程与应用

ARM嵌入式系统流程与应用

【摘要】:嵌入式系统设计与开发工作中,软件工作量约占全部工作量的80%,其中测试和验证部分的工作量占软件工作量的70%。图1.6嵌入式系统设计与开发流程1.需求分析分析用户的需求:产品的功能、性能、价格、体积、功耗等。嵌入式系统(实现)编程:选择硬件、操作系统、编程语言以及开发工具,编写程序。

嵌入式系统设计与开发工作中,软件工作量约占全部工作量的80%,其中测试和验证部分的工作量占软件工作量的70%。与常规计算机应用系统开发类似,需要经过系统分析、可行性分析、需求分析、概要设计、详细设计、编码与制作、测试等环节,如图1.6所示,但通常既涉及软件也涉及硬件设计与开发。

图1.6 嵌入式系统设计与开发流程

1.需求分析

(1)分析用户的需求:产品的功能、性能、价格、体积、功耗等。

(2)确认用户需求:制定需求文档,对需求进行评估,与用户反复交流之后,最终确认用户的需求。

(3)确定硬件和软件:确定处理器的性能,例如主频、指令集、存储空间、MIPS等。在处理大量数据时,需要考虑总线吞吐量。选择操作系统,需要实时还是非实时的操作系统,还是不需要操作系统,是否需要图形化界面。选择编程语言,例如C、汇编、Java、嵌入式C++等。选择第三方软件或函数,编译器选择商用产品则优化好、效率高、但价格贵,选择免费工具(如GNU系列工具)则编译效率不高。第三方硬件选择,选择商品化的硬件模块可缩短开发周期(但成本较高),对数量较大的产品尽量自行设计,而开发板、评估板的选择可加快研发进度。

(4)确定项目的约束条件:如工期限制、经费预算、硬件软件使用限制等。

2.体系结构设计

(1)审查分析资料,开始体系结构设计:需考虑系统的实时性、性能、成本、尺寸、功耗等因素,另外还要注意处理器的选择,例如是选择单核处理器、多核处理器还是DSP。

(2)硬件软件划分:决定哪些功能用硬件实现、哪些功能用软件实现。一般可根据需要先设计硬件、软硬件同时设计或先设计软件。

(3)硬件概要设计:采用Top-Down方法,将硬件系统分成各个模块分别设计(如CPU模块、存储器模块、以太网模块、串行并行通信模块、DSP模块等)。并进行各个模块I/O端口地址、存储器单元分配、中断和DMA等资源的统一分配。

(4)软件概要设计:采用Top-Down设计方法,将软件分解成子系统或模块(如LCD模块、UART模块、文件系统、网络等),定义软件接口(API函数调用格式),规定出错处理方案,设计看门狗(WatchDog)程序,以提高系统可靠性

3.详细设计

选择开发平台,包括选择具体的处理器产品、硬件部件、操作系统、编程语言、评估板的选择、编写板级支持包BSP代码。然后进行软件开发,包括建立交叉开发环境(如gcc、ARM SDT、Tornado等)、交叉编译和链接、重定位和下载、联机调试等工作。

(1)选择具体的处理器产品:需要考虑处理器速度(用MIPS衡量)、熟悉程度、片上I/O资源是否满足要求、操作系统是否支持、是否内置调试功能、支持服务信任度等。

(2)选择硬件部件:自己设计还是选择第三方的产品(如PC104总线的各种板卡、嵌入式模块等)。选择一般原则是:数量大的产品自行研制,数量少的产品可考虑购买现成的板卡。(www.chuimin.cn)

(3)选择操作系统:主要包括实时性、人机界面要求以及是否需要操作系统,操作系统的移植难度,对内存的要求,操作系统提供的服务是否满足要求(例如TCP/IP协议栈、文件系统、CDROM、存储卡支持等),是否包括目标硬件设备驱动程序,是否具有可裁剪性。

(4)选择编程语言:大部分系统使用C、C++、Java,有严格时间要求和访问硬件部分使用汇编语言,可视化应用可使用Embedded Visual Tools。

(5)评估板的选择:具有设计参考价值,使系统的硬件、软件开发同时进行,可加快开发进度,降低开发风险。

(6)编写板级支持包BSP代码:与硬件结构有关。不同操作系统供应商会提供BSP的开发方法和开发模板。

(7)选择嵌入式软件开发平台:包括集成开发环境、在线仿真器、各种信号处理设备、软件固化工具、实时软件调试测试工具等。

(8)嵌入式系统(实现)编程:选择硬件、操作系统、编程语言以及开发工具,编写程序。

(9)嵌入式系统的调试:通用计算机应用系统与嵌入式系统的调试环境存在明显差异。如操作系统不同、指令不兼容、数据格式不同、应用程序运行环境不同等。嵌入式系统的调试过程包括:应用程序在主机被编辑、编译(交叉编译)、连接与定位;下载应用程序到目标机;主机启动调试程序,对目标机程序进行调试;调试状态信息实时反馈给主机,如发现程序错误,需重复以上过程,直至程序全部调试成功。

4.系统集成

完整的嵌入式系统包括嵌入式硬件硬件系统和嵌入式软件系统。在详细设计完成后,需要进行集成,包括动态验证和目标集成。动态验证是在开发环境下运行模型(如UML模型),确定模型的正确性。目标集成是在目标环境中集成软件和硬件。

5.系统测试

系统测试包括硬件测试、软件测试、软硬件集成测试和性能测试。硬件测试主要实现部件功能测试、可靠性测试、电磁兼容性测试、性能指标测试(如通信系统的误码率)等。性能测试完成对系统的综合性能进行测试。软件测试则较为复杂,主要包括以下三个方面。

(1)功能测试(黑盒测试):输入测试数据,观察输出是否为预期结果;极限情况测试(如使输入通道、内存缓冲区、磁盘控制器等超载);边界测试(输入特定输入范围边界的值);异常测试(测试触发异常模式);随机测试(如测试用户界面代码的健壮性)。

(2)覆盖测试(白盒测试):尽可能使每条代码语句、判定点或判定路径都最少被执行一次;选择的测试实例至少执行一次程序中的每条语句,进行语句测试;选择的测试实例使每个分支(包括真与假分支)至少运行一次,进行判定或分支覆盖测试;选择的测试实例使每个用于判定的条件(项)具有所有可能的逻辑值,进行条件覆盖测试。

(3)灰盒测试:将黑盒测试与白盒测试结合的一种测试。只覆盖程序代码中的特定部分。

软硬件集成测试是非常重要的一项工作,首先需要初始化,使用测试仪器将系统设置在已知的初始状态;然后需要激励,即通过测试仪器代理程序给系统施加激励信号(事件、时间等);并进行数据采集,即通过数据采集器获取外界输入数据;准备工作完成后,开始模拟,并根据模拟结果判断系统的正确性、可行性等。