单片机FLASH空白区如何处理防止程序跑飞
各位大侠今天遇到一个问题,以前从来没想过,就是在使用单片机(MC9S08)的时候,如果程序指针由于故障跑到了FLASH的空白区,
一般空白区默认是0xff,这个时候程序故障,我认为看门狗就会动作重启单片机。
但是请问有没有办法可以对空白区进行处理,而不需要看门狗就能回到正常工作状态,或者重启状态。
或者请问大家一般是怎么处理这个问题的。
谢谢
(我所知道的就是我可以通过程序对flash的空白区直接写一写值进去,比如00或者其他值. 但是不知道MC9S08这个系列遇到这些值会怎么响应。) 这个是我刚才在网上找到的51的说明
不要用跳转指令填充空白区,因为跳转指令不是单字节指令,意外跑飞时,没法保证取指时取到哪个字节,会有什么效果。
通常51程序的空白部分保留为00就行,或者FF也行,00中NOP指令,FF是 MOV A, R7,注意,这两个指令都是单字节单周期的指令。
遇到程序跑飞的情况时,CPU可能会从空白区取指,取到NOP并执行,因为51的指令最多只有64K,顶多执行64K个周期,PC就会转回到复位地址0000处执行。
请问MC9S08是怎么运行的 ,有大侠知道吗?
写满reset指令啊 vtte 发表于 2020-3-1 17:29
写满reset指令啊
有道理
正在找相应资料 dongdaxing 发表于 2020-3-1 17:12
这个是我刚才在网上找到的51的说明
不要用跳转指令填充空白区,因为跳转指令不是单字节指令,意外跑飞时 ...
万一某些地址没有外设给响应就完蛋了。。会彻底卡住。我做fpga soc就出现过多次这种情况。固件代码得非常仔细的写。 写reset指令,其实芯片遇见处理不了的指令,都是会产生中断的
dongdaxing 发表于 2020-3-1 17:33
有道理
正在找相应资料
刚看了指令集和指令马集
填充 NOP 就可以了
0x9d
谢谢
解决了 vtte 发表于 2020-3-1 17:29
写满reset指令啊
rest 可能不行 应为没有单字节的这个指令 也许我没有找到
因为多字节指令的的话 第一次不知道跳到哪里(网上讲的我觉得是有道理的)
所以我觉得就填写NOP吧 laujc 发表于 2020-3-1 17:39
写reset指令,其实芯片遇见处理不了的指令,都是会产生中断的
请问 一般单片机的话 会产生什么中断
能介绍点资料看看吗
自己以前从来没注意过这方面的问题
可能做得太少了 楼主想多了,你应该考虑如果不跑到空白区去。而不是跑到空白区再跳回来。
正如前面是硫酸池,进去如何救生,还不如考虑下怎么会跳进去,绝对避免。 dongdaxing 发表于 2020-3-1 17:42
刚看了指令集和指令马集
填充 NOP 就可以了
呵呵,依赖填充NOP具有巨大的隐患,此时中断还开着,NOP跑一圈重新开始后内存初始化完成后中断来了改了内存数据咋办?
你首先要想的是如何防止进入到空白区而不是去补救 dongdaxing 发表于 2020-3-1 17:45
请问 一般单片机的话 会产生什么中断
能介绍点资料看看吗
自己以前从来没注意过这方面的问题
不知道你使用的是哪种芯片,按道理处理方式应该是一样的。
以我比较熟悉的renesas芯片为例,见下表,指令错误是有专门中断入口的。
楼主你搞错了,不应该用NOP指令。我也比较熟悉瑞萨的芯片,下面说下我的经验:
1.空白区域写满非法指令,比如瑞萨的非法指令是0xff,当然空白也是0xff,刚好运行到空白区域会引起非法指令的复位。
2.开启低电压检测,电压再复位电平附近波动的时候最容易跑飞。开启低电压检测,电压波动到一定值就复位。
3.处理号reset电路。
4.电源,掉电是减少振荡。瑞萨的功耗比较低,有大电容时掉电非常慢,一定要设计好电路。
以上2,3,4都是碰到过实际问题的。程序跑飞严重的可能会擦掉内部Flash,内部有操作Flash的程序时。 takashiki 发表于 2020-3-1 18:28
呵呵,依赖填充NOP具有巨大的隐患,此时中断还开着,NOP跑一圈重新开始后内存初始化完成后中断来了改了内 ...
谢谢
我现在要解决的问题: 前提就是假设程序到了空白区 如何自救
夏日么么茶 发表于 2020-3-1 18:55
楼主你搞错了,不应该用NOP指令。我也比较熟悉瑞萨的芯片,下面说下我的经验:
1.空白区域写满非法指令,比 ...
谢谢 我去找下资料 看看 MC9S08 有没有非法指令复位这个功能
如果您知道的话 能够告知哪里可以找到相关资料 谢谢 takashiki 发表于 2020-3-1 18:28
呵呵,依赖填充NOP具有巨大的隐患,此时中断还开着,NOP跑一圈重新开始后内存初始化完成后中断来了改了内 ...
谢谢
你说的是对的 ,避免进入是一方面
但是我现在需要解决的问题是 进入空白区后怎么办 dongdaxing 发表于 2020-3-1 19:20
谢谢 我去找下资料 看看 MC9S08 有没有非法指令复位这个功能
如果您知道的话 能够告知哪里可以找到相关资 ...
看芯片的软件手册或者叫指令手册。 总感觉外置看门狗才比较可靠.
页:
[1]