资料介绍
成为一个正式的
嵌入式开发
工程师是一个艰辛的过程。从规范完善的开发周期到严格执行和系统检查,开发高可靠性
嵌入式系统的技术有许多种。本文介绍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字节的闪存空间。等等,这可是得不偿失的做法! 技巧5:使用MPU 在过去,是很难在一个小而廉价的微控制器中找到内存保护单元(MPU)的,但这种情况已经开始改变。现在从高端到低端的微控制器都已经有MPU,而这些 MPU为
嵌入式软件开发人员提供了一个可以大幅提高其固件(firmware)鲁棒性(robustness)的机会。 MPU 已逐渐与操作系统
耦合,以便建立内存空间,其中的处理都分开,或任务可执行其代码,而不用担心被stomped on。倘若真有事情发生,不受控制的处理会被取消,也会执行其他的保护措施。请留意带有这种组件的微控制器,如果有,请多加利用它的这种特性。
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- c语言嵌入式开发2次下载
- 嵌入式开发学习路线12次下载
- 嵌入式开发入门学习1次下载
- 嵌入式开发培训学什么?嵌入式开发板知识讲解16次下载
- 嵌入式开发培训怎么样?嵌入式开发培训多少钱12次下载
- 嵌入式开发资料免费分享45次下载
- 嵌入式开发3次下载
- 嵌入式开发(一):嵌入式开发新手入门78次下载
- 嵌入式开发教程之基于ARM7的LCD设计与实现8次下载
- 嵌入式系统设计与物联网开发资料下载7次下载
- 嵌入式开发系统资源概况免费下载4次下载
- 嵌入式开发要学什么嵌入式开发的一些入门教材推荐27次下载
- 嵌入式开发Linux网络编程培训资料的详细资料免费下载33次下载
- ARM嵌入式开发实例1-10次下载
- 基于ARM的嵌入式开发81次下载
- 嵌入式开发常见的C语言技巧与方法分享207次阅读
- STM32嵌入式开发中的RTOS,你用过哪些?702次阅读
- 嵌入式开发中串口通讯方案1984次阅读
- 嵌入式开发到底是什么4444次阅读
- 嵌入式开发的产品有哪些_嵌入式开发的流程1w次阅读
- 基于Mac上做嵌入式开发简析3628次阅读
- 解析嵌入式开发中的一些硬件相关概念782次阅读
- 在Nios II平台下搭建RTEMS嵌入式开发简析1394次阅读
- 嵌入式开发好学吗_嵌入式开发职业发展方向是什么8623次阅读
- 什么是嵌入式开发板_学嵌入式用什么开发板6534次阅读
- 嵌入式开发工具有哪些_五款嵌入式开发工具推荐3.9w次阅读
- 学嵌入式开发入门_学嵌入式开发需要看哪些书籍1.5w次阅读
- 想学嵌入式开发必须要学哪些知识点2.9w次阅读
- 一文看懂嵌入式开发与c++开发有什么不同2.2w次阅读
- 嵌入式开发环境的搭建7960次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB |1491次下载 |免费
- 2单片机典型实例介绍
- 18.19 MB |95次下载 |1积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB |27次下载 |1积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB |18次下载 |4积分
- 5开关电源原理及各功能电路详解
- 0.38 MB |11次下载 |免费
- 6100W短波放大电路图
- 0.05 MB |4次下载 |3积分
- 7基于单片机和 SG3525的程控开关电源设计
- 0.23 MB |4次下载 |免费
- 8基于AT89C2051/4051单片机编程器的实验
- 0.11 MB |4次下载 |免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB |234313次下载 |免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB |66304次下载 |免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB |51209次下载 |免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB |51043次下载 |免费
- 5555集成电路应用800例(新编版)
- 0.00 MB |33562次下载 |免费
- 6接口电路图大全
- 未知 |30320次下载 |免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB |28588次下载 |免费
- 8开关电源设计实例指南
- 未知 |21539次下载 |免费
总榜
- 1matlab软件下载入口
- 未知 |935053次下载 |免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB |537793次下载 |免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 |420026次下载 |免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB |234313次下载 |免费
- 5Altium DXP2002下载入口
- 未知 |233046次下载 |免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 |191183次下载 |免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M |183277次下载 |免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 |138039次下载 |免费
评论