首页技术文章正文

嵌入式开发技巧分享【黑马程序员】

更新时间:2021年03月18日 09时14分57秒 来源:黑马程序员

·用已知值填充ROM

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

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

1566721945525_智能机器人.jpg

·检查应用程序的CRC

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

 

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

 

·建立一个强大的看门狗系统

你经常会发现的一种总是最受喜爱的看门狗(watchdog)实现是,在看门狗被启用之处(这是一个很好的开始),但也是可以用周期性定时器将该看门狗清零之处;定时器的启用是完全与程序中出现的任何情况隔离的。使用看门狗的目的是协助确保如果出现错误,看门狗不会被清零,即当工作暂停,系统会被迫去执行硬件重设定(hardware reset),以便恢复。使用与系统活动独立的定时器可以让看门狗保持清零,即使系统已失效。

 

以上我们介绍了三个嵌入式开发的技巧,希望对您有所启发。如果对嵌入式比较感兴趣可以点击页面咨询按钮,了解黑马程序员智能机器人开发课程。



黑马中级程序员课程


推荐了解热门学科

java培训Python人工智能Web前端培训PHP培训
智能机器人软件开发影视制作培训C++培训产品经理培训
UI设计培训新媒体培训产品经理培训Linux运维
大数据培训



以下是黑马程序员热门视频教程,欢迎学习关注!


Python入门教程完整版(懂中文就能学会)【点击】

零起点打开Java世界的大门【点击】
C++| 匠心之作 从0到1入门学编程【点击】

PHP|零基础入门开发者编程核心技术【点击】
Web前端入门教程_Web前端html+css+JavaScript【点击】

软件测试入门到精通【点击】
分享到:
在线咨询 我要报名
和我们在线交谈!