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

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 )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
中国半导体市场:欠缺的这些技术,你什么时候才能给我?
中国半导体市场:欠缺的这些技术,你什么时候才能给我?

进入到千禧年后的信息时代,巨量的半导体芯片需求,使得中国成为全世界最大的半导体市场,根据相关数据显示,2017年我国集成电路市场规模高达到13050亿元人民币。

北京首条大规模量产8英寸集成电路产线项目启动,今年年底投产

近日,列入2018年北京科创中心建设重点项目清单的燕东微电子8英寸集成电路研发产业化及封测平台项目举办上梁仪式,该项目预计于今年底在开发区投产。

打破ARM、英特尔的铁幕,树莓派的成功能带给国产芯片怎样的启示

ARM、Intel与微软、苹果、谷歌的同盟似乎是一道铁幕,压迫着几乎所有试图在通用计算平台上做出努力的国家与厂商。然而,铁幕之下并非寸草不生,仍然有一些项目从阴影下探出头来,比如“树莓派”。

发布Ali-NPU收购中天微,阿里就能实现硬件自主化?

继4月18日阿里达摩院宣布正在研发一款用于图像视频分析、机器学习等AI推理计算领域的神经网络芯片——Ali-NPU之后;4月20日,阿里宣布收购芯片公司杭州中天微系统有限公司。

NB-IoT年内有何进展,三大运营商:新增30万个基站够不够

工信部信息通信发展司司长闻库介绍:“目前全国全网近40万个NB-IoT的基站的建设逐步实现了全国范围内的广泛覆盖。今年看,三家基础电信运营企业有望再增加30万个基站。”

更多资讯
壁垒森严的3D NVM专利领域,中国企业靠怎样的金融手段改变格局?

3D非易失性存储领域飞速发展,中国厂商能否争得一席之地?

存储项目进展不利七成利润靠补贴,上市公司国科微已穷途末路?
存储项目进展不利七成利润靠补贴,上市公司国科微已穷途末路?

在上市之后,国科微主营业务增长潜力有限,新兴业务短期内难以突破,同时公司还在大力扩展新业务,前景堪忧。在国科微上市后的首个半年报中,营收下滑利润亏损;2017年全年营收持续下滑,利润微增却是靠政府补贴;2018年第一季度,预计净利润亏损超40%。

STM32中国峰会继续聚焦物联网,多款MCU新品曝光
STM32中国峰会继续聚焦物联网,多款MCU新品曝光

北京时间2018年4月25日,一年一度的STM32中国峰会暨粉丝狂欢节在深圳举办,意法半导体和生态系统合作伙伴共同发布主题演讲,探讨物联网前沿科技发展和重要应用。

将eFPGA应用于嵌入式360度视域视觉系统中

2018年4月11日,工业和信息化部、公安部和交通运输部联合发布“关于印发《智能网联汽车道路测试管理规范(试行)》的通知”,为我国智能网联汽车道路测试提供了相关法律依据。三部委在赋予智能网联汽车上路资格的同时,也提出了若干严格的条件。

美光的40年经验,大陆存储器能短期赶上去吗?

中国大陆积极发展存储器,并向美商美光大举挖角,美光全球制造资深副总裁艾伦(Wayne Allan)昨(24)日表示,发展存储器的门槛难度高,美光拥有40年制造经验与丰富知识产权(IP),以及优秀人才,不是大陆短期内就能赶上。

Moore8直播课堂
电路方案