嵌入式系统开发不难,保证可靠性有这几大技巧

2017-07-04 13:32:12 来源:21ic电子网
分享到:
标签:

目前嵌入式系统开发应用非常的广泛,在很多领域都有应用,而且技术更新很快。

嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。

嵌入式系统的设计技术主要包括硬件设计技术和软件设计技术两大类。其中,硬件设计领域的技术主要包括芯片级设计技术和电路板级设计技术两个方面。

芯片级设计技术的核心是编译/综合、库/IP、测试/验证。编译/综合技术使设计者用抽象的方式描述所需的功能,并自动分析和插入实现细节。库/IP技术将预先设计好的低抽象级实现用于高级。测试/验证技术确保每级功能正确,减少各级之间反复设计的成本。

下面我们先来介绍一些基本的开发流程.

 


嵌入式系统开发流程
第一步:建立开发环境

操作系统一般使用Redhat Linux,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如,arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的相关交叉编译器;

第二步:配置开发主机

配置MINICOM,一般的参数为波特率115200 Baud/s,数据位8位,停止位为1,9,无奇偶校验,软件硬件流控设为无。在Windows下的超级终端的配置也是这样。MINICOM软件的作用是作为调试嵌入式开发板的信息输出的监视器和键盘输入的工具。配置网络主要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。

第三步:建立引导装载程序BOOTLOADER

从网络上下载一些公开源代码的BOOTLOADER,如U.BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如,三星的ARV17、ARM9系列芯片,这样就需要编写开发板上FLASH的烧写程序,可以在网上下载相应的烧写程序,也有Linux下的公开源代码的J-FLASH程序。如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果用户购买了厂家的仿真器比较容易烧写FLASH,虽然无法了解其中的核心技术,但对于需要迅速开发自己的应用的人来说可以极大提高开发速度。

第四步:下载已经移植好的Linux操作系统

如MCLiunx、ARM-Linux、PPC-Linux等,如果有专门针对所使用的CPU移植好的Linux操作系统那是再好不过,下载后再添加特定硬件的驱动程序,然后进行调试修改,对于带MMU的CPU可以使用模块方式调试驱动,而对于MCLiunx这样的系统只能编译内核进行调试。

第五步:建立根文件系统

下载使用BUSYBOX软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的程序。由于默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本,它的存放位置位于/etc目录下,包括:/etc/init.d/rc.S、/etc/profile、/etc/.profile等,自动挂装文件系统的配置文件/etc/fstab,具体情况会随系统不同而不同。根文件系统在嵌入式系统中一般设为只读,需要使用mkcramfs genromfs等工具产生烧写映像文件。

第六步:建立应用程序的FLASH磁盘分区

一般使用JFFS2或YAFFS文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性FLASH(NOR型)512KB~32MB,有的系统使用非线性FLASH(NAND型)8MB~512MB,有的两个同时使用,需要根据应用规划FLASH的分区方案。

第七步:开发应用程序

可以放入根文件系统中,也可以放入YAFFS、JFFS2文件系统中,有的应用不使用根文件系统,直接将应用程序和内核设计在一起,这有点类似于μC/OS-II的方式。

第八步:烧写内核

根文件系统和应用程序,发布产品。

推荐阅读:嵌入式系统开发实践经验分享


提升可靠性的七大技巧
从规范完善的开发周期到严格执行和系统检查,开发高可靠性嵌入式系统的技术有许多种。本文介绍了7个易操作且可以长久使用的技巧,它们对于确保系统更加可靠地运行并捕获异常行为大有帮助。

 


技巧1——用已知值填充ROM
软件开发人员往往都是非常乐观的一群人,只要让他们的代码忠实地长时间地运行就可以了,仅此而已。微控制器跳出应用程序空间并在非预想的代码空间中执行这种情况似乎是相当少有的。然而,这种情况发生的机会并不比缓存溢出或错误指针失去引用少。它确实会发生!发生这种情况后的系统行为将是不确定的,因为默认情况下内存空间都是0xFF,或者由于内存区通常没有写过,其中的值可能只有上帝才知道。

不过有相当完备的linker或IDE技巧可以用来帮助识别这样的事件并从中恢复系统。技巧就是使用FILL命令对未用ROM填充已知的位模式。要填充未使用的内存,有很多不同的可能组合可以使用,但如果是想建立更加可靠的系统,最明显的选择是在这些位置放置ISR fault handler。如果系统出了某些差错,处理器开始执行程序空间以外的代码,就会触发ISR,并在决定校正行动之前提供储存处理器、寄存器和系统状态的机会。

技巧2——检查应用程序的CRC
对嵌入式工程师来说一个很大的好处是,我们的IDE和工具链可以自动产生应用程序或内存空间校验和(Checksum),从而根据这个校验和验证应用程序是否完好。有趣的是,在许多这些案例中,只有在将程序代码加载到设备时,才会用到校验和。

然而,如果CRC或校验和保持在内存中,那么验证应用程序在启动时(或甚至对长时间运行的系统定期验证)是否仍然完好是确保意外之事不会发生的极好途径。现在一个编程过的应用程序发生改变的概率是很小的,但考虑每年交付的数十亿个微控制器以及可能恶劣的工作环境,应用程序崩溃的机会并不是零。更有可能的是,系统中的一个缺陷可能导致某一扇区发生闪存写入或闪存擦除,从而破坏应用程序的完整性。

技巧3——在启动时执行RAM检查
为了建立一个更加可靠和扎实的系统,确保系统硬件正常工作非常重要。毕竟硬件会发生故障。(幸运的是软件永远不会发生故障,软件只会做代码要它做的事,不管是正确的还是错误的)。在启动时验证RAM的内部或外部没有问题,是确保硬件可以如预期般运作的一个好方法。

有许多不同的方法可用于执行RAM检查,但常用的方法是写入一个已知的模式,然后等上一小段时间再回读。结果应该是所读就是所写。真相是,在大多数情况下RAM检查是通过的,这也是我们想要的结果。但也有极小的可能性检查不通过,这时就为系统标示出硬件问题提供了极好的机会。

技巧4——使用堆栈监视器
对许多的嵌入式开发者而言,堆栈似乎是一股相当神秘的力量。当奇怪的事情开始发生,工程师终于被难倒了,他们开始思考,也许堆栈中发生了什么事。结果是盲目地调整堆栈的大小和位置等等。但该错误往往是与堆栈无关的,但怎能如此确定?毕竟,有多少工程师真的实际执行过最坏情况下的堆栈大小分析?

堆栈大小是在编译时就静态分配好的,但堆栈是以动态的方式使用的。随着代码的执行,应用程序需要的变量、返回的地址和其它信息被不断存储在堆栈中。这种机制导致堆栈在其分配的内存中不断增长。然而,这种增长有时会超出编译时确定的容量极限,导致堆栈破坏相邻内存区域的数据。

绝对确保堆栈正常工作的一种方法是实现堆栈监视器,将它作为系统“保健”代码的一部分(有多少工程师会这样做?)。堆栈监视器会在堆栈和“其它”内存区域之间创建一个缓冲区域,并填充已知的位模式。然后监视器会不断的监视图案是否有任何变化。如果该位模式发生了改变,那就意味着堆栈增长得太大了,即将要把系统推向黑暗地狱!此时监视器可以记录事件的发生、系统状态以及任何其它有用的数据,供日后用于问题的诊断。

大多数实时操作系统(RTOS)或实现了内存保护单元(MPU)的微控制器系统中都提供有堆栈监视器。可怕的是,这些功能默认都是关闭状态,或者经常被开发人员有意关闭。在网络上快速搜寻一下可以发现,很多人建议关闭实时操作系统中的堆栈监视器以节省56字节的闪存空间。等等,这可是得不偿失的做法!
 

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
特斯拉挖角AMD,三星也要小心了
特斯拉挖角AMD,三星也要小心了

据外媒报道,坊间传言特斯拉正在自主研发芯片,供其自动驾驶车辆使用,因为该公司曾于去年从AMD挖角了传奇性芯片架构设计师Jim Keller。

高通PMIC 5即将问世,7成订单已被台积电霸占?

高通(Qualcomm)新一代电源管理芯片PMIC 5即将问世,由于新规格改采BCD(Bipolar CMOS DMOS)制程生产,业界传出台积电凭藉先进制程技术优势,可望拿下至少70~80%的PMIC 5芯片订单,高通每年潜在的电源管理芯片订单数量高达百万片,未来台积电可望拿下最大供应商的主导地位。

双一流名单发布,中国半导体风起云涌的清华只排名第三
双一流名单发布,中国半导体风起云涌的清华只排名第三

9月21日,教育部通过官网下发了《关于公布世界一流大学和一流学科建设高校及建设学科名单的通知》,正式对外公布了世界一流大学和一流学科(简称“双一流”)建设高校及建设学科名单。此次名单涉及一流大学建设高校42所,一流学科建设高校95所。值得注意的是,在中国半导体届最著名的院校清华大学仅仅在双份名单占到第三的位置。

中资收购Lattice被拒,美国媒体居然这么说

中资收购Lattice被美国外国投资审查委员会(CFIUS)否定后,有美国媒体撰文表达了对这件事及其后续影响的看下,与非网小编将内容整理如下

机会很多,问题也不少,中国半导体产业还有哪些选择

本土半导体企业迎来了前所未有的机遇,这一产业的蓬勃之势让我们大呼“本土半导体的黄金十年”来了。然而随之而来的,在半导体产业的这场大跃进中也开始暴露出一些问题。

更多资讯
内存再涨价,DRAM还会涨40%?
内存再涨价,DRAM还会涨40%?

在2018年,DRAM整体产量的增长是19.6%,而需求的增长是20.6%,也就是说,供不应求的局面依旧会加剧。

联电与福建晋华合作DRAM背后,为啥会惹上美光这把侵权大刀?

联电日前与大陆福建晋华合作开发DRAM技术的案子中,因有美光(Micron)的离职员工将技术带到联电任职,不只是员工个人被起诉,联电也被台中地检署根据违反营业秘密法而被起诉,理由是“未积极防止侵害他人营业秘密”,因此视为共犯。 我们可以从三大层面来探讨联电和大陆合作开发DRAM技术的案子。

东芝出售内存芯片业务子公司,苹果得到了什么?
东芝出售内存芯片业务子公司,苹果得到了什么?

据日本媒体报道,东芝最终决定将芯片业务子公司卖给美国基金贝恩资本主导的“日美韩联合体”。这部半导体业界“碟中谍”大结局,作为剧中“路人甲”的苹果成了最大赢家,库克做梦都可能会笑醒。

东芝芯片业务180亿美元出售给贝恩资本,回顾收购
东芝芯片业务180亿美元出售给贝恩资本,回顾收购

东芝今日发布公告称,已同意将芯片业务出售给贝恩资本牵头的财团,交易金额约2万亿日元(180亿美元),预计将在明年3月31日前完成。

看RRAM如何“智斗”NAND flash和DRAM

你如果问当前内存市场是谁的天下?那么答案一定是DRAM、NAND flash、NOR flash,三者牢牢控制着内存市场,当前都处于供不应求的状态。不过,在内存天下三分的大背景下,新一代存储技术3D X-point、MRAM、RRAM等开始发出声音, RRAM非易失性闪存技术是其中进展较快的一个。

微话题

年初定的哪些“小目标”没有阵亡?

2017年能耗过半,年初定的哪些“小目标”没有阵亡? ……