凡亿教育-麦麦
凡事用心,一起进步
打开APP
公司名片
凡亿专栏 | 单片机可靠性差?可以弄个软件陷阱!
单片机可靠性差?可以弄个软件陷阱!

如果单片机可靠性差,将导致整个嵌入式系统稳定性及安全性大大降低,尤其是在工业控制等复杂环境中。再加上51单片机指令系统太复杂,导致其抗干扰性能相对较弱,所以有没有一种方法可以提高其可靠性?或许你可以试试软件陷阱。

1.png

1、软件陷阱是什么?

软件陷阱是一种用于捕获并处理单片机程序“跑飞”现象的技术,当程序执行过程中因干扰而偏离正常轨道时,软件陷阱可及时发现并将程序拉回正常执行路径。

2、软件陷阱如何构建?

①未使用ERROM空间的填充

在程序存储器中未使用的EPROM空间,首先填入窄操作指令NOP(无操作指令)。

在NOP指令后,填入一条跳转指令LJMP,跳转到预设的跑飞处理程序(如FLY)。

若未使用空间较大,可均匀分布NOP指令和LJMP指令,形成“软件陷阱”。

②数据表及子程序间的陷阱设置

在数据表的结尾处设置软件陷阱,确保程序跑飞到数据区时能及时转入正轨。

若数据表较大,可在中间位置也设置软件陷阱。

在每两个子程序之间设置一个软件陷阱,以捕获可能的程序跑飞。

③中断服务程序中的陷阱

当使用的中断因干扰而开放时,在对应的中断服务程序中设置软件陷阱。

这样能够及时捕获错误的中断,避免程序进一步失控。

3、代码示例

; 假设FLY为跑飞处理子程序的标签

FLY:

    ; 跑飞处理代码(如复位、重新初始化等)

    ; ...

    ; 跳转到正常程序执行起点

    LJMP START


; 未使用EPROM空间填充示例

NOP

NOP

LJMP FLY


; 数据表及子程序间陷阱设置示例

DATA_TABLE_END:

    NOP

    NOP

    LJMP FLY


SUB_PROGRAM1_END:

    NOP

    NOP

    LJMP FLY


SUB_PROGRAM2_START:

    ; 子程序2的代码

    ; ...


4、注意事项

软件陷阱的数量应根据实际干扰情况和程序存储器容量来确定。

陷阱的设置应尽可能均匀分布,以提高捕获程序跑飞的效率。

跑飞处理子程序应包含必要的复位或重新初始化操作,以确保程序能够恢复正常执行。



本文凡亿企业培训原创文章,转载请注明来源!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论