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

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字节的闪存空间。等等,这可是得不偿失的做法!
 

 

继续阅读
关于瑞芯微被创业板打脸这件事,没有比这篇文章更好的解释了

就在昨天,瑞芯微,这个专门设计芯片的公司,创业板IPO被否。这个芯片公司,客户不乏英特尔、华硕、惠普等大牌,年营收接近13亿,净利近9000万,综合毛利率也有39.66%,最终还是止步A股。而被否原因也很直接:多项财务数据都存在异常,却又没有披露原因。

联发科P23芯片发力,OPPO、vivo的订单又要回来了?

欧系外资表示,虽然市场依旧竞争,联发科最坏状况已过去,今年底的P23芯片应可迎回OPPO/VIVO订单,明年出货量可望看增,而力拼的物联网业务未来5年营收占比将可达20~25%,将评等从减码上调至持有。

比亚迪仅仅就是造车的?芯片业务也这么逆天
比亚迪仅仅就是造车的?芯片业务也这么逆天

谈到比亚迪,大家更熟悉的是其汽车。尤其是最近几年推出的几款电动车,因而其汽车制造商的名头更为大家所熟知,但其实比亚迪是靠做电池起家的。根据比亚迪财报,他们还从事二次充电池及光伏业务、手机部件及组装业务、以及包含传统燃油汽车及新能源汽车在内的汽车业务。

你以为比亚迪只会造车?其实芯片也不差
你以为比亚迪只会造车?其实芯片也不差

谈到比亚迪,大家更熟悉的是其汽车。尤其是最近几年推出的几款电动车,因而其汽车制造商的名头更为大家所熟知,但其实比亚迪是靠做电池起家的。根据比亚迪财报,他们还从事二次充电池及光伏业务、手机部件及组装业务、以及包含传统燃油汽车及新能源汽车在内的汽车业务。

眼红英伟达靠AI芯片发财?富士康参战并推出“杀手锏”
眼红英伟达靠AI芯片发财?富士康参战并推出“杀手锏”

各方预期人工智能(AI)将成未来科技主流,芯片厂 Nvidia 沾光,股价一路暴冲。 不过近来新对手逐渐浮现,日厂富士通(Fujitsu)准备参战,替该公司 AI 微处理器设下超高目标,预期效能为竞争对手的 10 倍。

更多资讯
芯原推出CC8400计算引擎,这计算能力还有谁?
芯原推出CC8400计算引擎,这计算能力还有谁?

CC8000系列IP是专业的解决方案,能在降低能耗并大大缩减裸片面积的基础上保证计算性能。

东芝存储器出售案再增疑云,日美韩联盟合伙“坑”SK海力士?

关系人士指出,SK Hynix 会撤销上述要求,“可能是因为签约时间延迟,因此害怕一旦东芝和西部数据(WD)和解的话,SK Hynix 恐会被踢开至联盟之外。”

中国大陆IC行业“挖人”、“养人”两不误,中国IC威胁论这次将成真?
中国大陆IC行业“挖人”、“养人”两不误,中国IC威胁论这次将成真?

近年来,得益于国家大力发展半导体的政策与资金支持,我国半导体业发展驶上了高速公路。拓墣产业研究院指出,由于大陆本土晶圆厂的扩张及先进制程的推进使人才需求孔急,多数新建厂的投片计划集中在2018年下半年,预估2017年人才挖角将更趋白热化。

靠紫光国芯融资行不通了?紫光存储器产业风暴刚开始

近期大陆紫光集团抛出旗下紫光国芯终止对长江存储的股权收购,成为两岸存储器产业震撼弹,紫光国芯原本要100%收购专职3D NAND业务的长江存储,但紫光内部评估长江存储未来要进入获利阶段,可能要等上5年,因此,紫光国芯暂停该收购案。

一文读懂机械硬盘发展史,就这样一步步被SSD取代了?
一文读懂机械硬盘发展史,就这样一步步被SSD取代了?

自计算机诞生的那一刻起,存储设备就扮演着不可或缺的角色。从某种程度上来讲,电脑性能的好坏只是影响运算数据的速度,而存储设备的使命则是保证大家的研究所得以及运算数据得以延续。不夸张地说,现代文明很大程度上都是存在硬盘里面……

微话题

积累三年工作经验使用二十年,你敢吗?

最近见了我的朋友白东,他们公司要扩大规模,招很多程序员……
Moore8直播课堂
想提升硬“见”实力?快,看过来!这里有你想要的

想提升硬“见”实力?快,看过来!这里有你想要的

2017-07-24 14:00:00
众创时代,要让创业变得越来越容易,就离不开完善的创新创业服务链;以此为使命,成立一年以来,云创硬见一直致力于为双创者打造更加完整的创新服务生态圈,帮助双创者解决从创意到产品过程中的难题。2017年7月
【第六幕】万人FPGA大赛系列培训课程——基于FPGA的UART串口通信系统设计

【第六幕】万人FPGA大赛系列培训课程——基于FPGA的UART串口通信系统设计

2017-07-24 16:00:00
关键词:FPGA万人大赛(想想就心潮澎湃)柒月,蝉声缭绕,数以万计FPGA工程师和爱好者摩拳擦掌,掀起一场FPGA的热浪。在这个夏天,一切都将改变!让学生利用FPGA平台学习数字电路设计,就像写代码看
【第二弹】闭关修炼已成,来听听老道备战国赛的一些心得

【第二弹】闭关修炼已成,来听听老道备战国赛的一些心得

2017-07-25 15:00:00
这个夏天,两年一度的重量级比赛:“全国大学生电子设计竞赛”如约而至,曾经没日没夜挥汗如雨,以及并肩作战的队友历历在目,暂且不论含金量,只凭它是学生时代最珍贵的记忆这一点,不亲身经历一次,又怎能说自己是
【第七幕】万人FPGA大赛系列培训课程——状态机(序列检测+交通灯设计)

【第七幕】万人FPGA大赛系列培训课程——状态机(序列检测+交通灯设计)

2017-07-27 16:00:00
关键词:FPGA万人大赛(想想就心潮澎湃)柒月,蝉声缭绕,数以万计FPGA工程师和爱好者摩拳擦掌,掀起一场FPGA的热浪。在这个夏天,一切都将改变!让学生利用FPGA平台学习数字电路设计,就像写代码看
移动机器人的感官及其导航和定位技术

移动机器人的感官及其导航和定位技术

2017-07-27 20:00:00
机器人是一个由执行机构、驱动装置、感测装置和控制系统和复杂机械等组成的闭环装置。当前工业革命(工业4.0)面临的突出需求——感测装置(传感器),工业界希望把各种传感器引入工业生产中,利用它独有的数据采