嵌入式系统的发展大致经历了嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器、嵌入式片上系统和以Internet为标志的嵌入式系统等阶段。嵌入式系统的出现最初是基于单片机的,这一阶段的嵌入式系统硬件是单片机,软件停留在无操作系统阶段,采用汇编语言实现系统的功能。第四阶段是以Internet为标志的嵌入式系统。......
2023-11-19
嵌入式系统设计与开发工作中,软件工作量约占全部工作量的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)灰盒测试:将黑盒测试与白盒测试结合的一种测试。只覆盖程序代码中的特定部分。
软硬件集成测试是非常重要的一项工作,首先需要初始化,使用测试仪器将系统设置在已知的初始状态;然后需要激励,即通过测试仪器代理程序给系统施加激励信号(事件、时间等);并进行数据采集,即通过数据采集器获取外界输入数据;准备工作完成后,开始模拟,并根据模拟结果判断系统的正确性、可行性等。
有关ARM嵌入式系统原理与应用的文章
嵌入式系统的发展大致经历了嵌入式微控制器、嵌入式微处理器和嵌入式数字信号处理器、嵌入式片上系统和以Internet为标志的嵌入式系统等阶段。嵌入式系统的出现最初是基于单片机的,这一阶段的嵌入式系统硬件是单片机,软件停留在无操作系统阶段,采用汇编语言实现系统的功能。第四阶段是以Internet为标志的嵌入式系统。......
2023-11-19
图8.4socket套接字发送、接收数据示意图2.套接字缓冲区的特性◆缓冲区在每个TCP套接字中单独存在;◆I/O缓冲区在创建套接字时自动生成;◆即使关闭套接字也会继续传送输出缓冲区中遗留的数据;◆关闭套接字将丢失输入缓冲区中的数据。......
2023-11-19
S5PV210是三星公司推出的一款基于Cortex-A8架构的高性能应用处理器,其启动过程由BL0、BL1和BL23部分代码实现,其中BL0在出厂时已经被固化到64 KB的iROM中。S5PV210的启动过程如图4.3所示。图4.3S5PV210的启动流程S5PV210上电后首先执行BL0,该段代码主要的工作序列如下所示:关看门狗时钟。检查是否是安全模式启动,如果是则验证BL1完整性。BL2实际上是整个BootLoader的主体部分,因此它需要完成更多的初始化工作,例如初始化网卡、Flash等,之后BL2读取操作系统镜像到内存中运行。......
2023-11-19
ARM微处理器已经遍及工业控制、消费类电子通信系统、网络系统、无线系统各类产品市场,基于ARM技术的微处理器应用占据了32位RISC微处理器80%以上的市场份额。ARM嵌入式技术在联网方面的优势,为弧焊电源实现网络化控制奠定了基础。ARM9可以达到180~200MHz的工作速率,它能驱动的周边装置比ARM7多,应用范围也比较广。ATMEL公司的AT91AM9200是基于ARM9的,具有丰富的接口功能。ARM芯片通信接口能力强,一般用于焊接过程及设备人机界面系统的核心芯片。......
2023-06-26
NFS服务允许挂载的目录以及目录对应的权限在文件/etc/exports中定义、修改和保存。配置NFS的常用方法有两种:方法一:修改etc目录下的/etc/exports脚本。图6.7NFS设置如图6.8所示,点击“添加”按钮,在弹出来的界面中点击“浏览”添加文件夹,如图6.9;主机填“?”图6.8添加NFS共享图6.9选择共享文件夹的位置图6.10设置共享文件夹的基本选项用编辑器打开/etc/exports文件,如图6.11所示:图6.11编辑/etc/exports文件可以看到,被配置的文件夹已经添加到网络共享目录中了。......
2023-11-19
相对于传统的嵌入式系统设计方法,引入了软硬件“协同设计”概念的嵌入式系统设计方法能较好地弥补传统嵌入式系统设计方法的不足。如图11.1所示为一种典型的嵌入式系统协同设计方法。从图中可以看到,嵌入式系统的“协同设计”方法与传统的嵌入式系统的设计方法相比较而言,更重视总体设计下的系统级别的仿真建模和软件、硬件综合设计方法。......
2023-11-19
数据处理指令的使用原则:●所有操作数都是32位,可以是寄存器或立即数。后缀S表示指令的操作是否影响标志位。例如:3.ADD指令ADD{cond}{S}
2023-11-19
编译完成程序后,在工程可执行程序所在文件夹下双击hello程序出现Qt版Hello World程序界面,整个Qt应用程序窗体都被一个按钮覆盖,这是程序第13行设置窗体主控件的结果。用户单击按钮后没有任何反映,这是由于没有添加QPushButton的处理函数,系统默认不做任何处理。文本界面风格的Hello World程序修改后的Hello World程序上述程序实例展示了QLabel组件的功能。Qt支持字符串使用HTML语法格式描述,Qt会解释HTML语法的含义并且显示正确的结果。......
2023-11-19
相关推荐