最近朋友有个STM8S003的小产品让我移植到N76E003,移植后发现死机,调试模式全速运行一直不死,调试模式退出不定时死机,于是把P20设置成输入 并且P20=1设置成上拉,测量电压不是VDD,死机没解决,,请教怎么在看门狗中断函数中打印死在什么地方?
离线
先把看门狗关了,看死在何处。
离线
先把看门狗关了,看死在何处。
关了怎么知道啊,调试模式运行的话不死机的。我是希望类似STM32 死机了可以打印PC地址,就能找到在哪里死了,貌似51没办法获取
离线
CORTEX-M3 有几种模式,所以可以打印PC地址吧? 而8051只有一种模式?是不是这样?
离线
CORTEX-M3 有几种模式,所以可以打印PC地址吧? 而8051只有一种模式?是不是这样?
好像不死了,这样更可怕。
离线
好像不死了,这样更可怕。
关了看门狗, 现在不死机?
离线
学习……
离线
关了看门狗, 现在不死机?
看门狗是开的,我把所有变量尽量定义到xdata好点,死机还是存在,几率低很多
离线
1、在稳定良好的电磁环境下测试,先排除硬件干扰。
2、关狗,再一点点使用各种输出手段增加运行状态的输出,同时保证稳定复现故障。
输出手段可以是串口打印、LED或IO特定频率的翻转;
通过输出,至少应该能明确识别几个状态:复位、运行到业务逻辑的某个循环阶段。
printf()有时候还真是万能的调试手段。
3、不要改变之前故障时的任何软件配置,保证故障复现率。接下去,就靠观察,看规律。
就算有野指针,也一定会在特定逻辑阶段后才出现,起码让你有个大致审核代码的范围。
特别注意下栈、堆的空间是否分配足够,不论是否用了RTOS,栈或堆的溢出故障导致的现象,有时候看起来会有点随机,尤其是程序需要与外部互动的时候。
上述操作的唯一目的,就是缩小排查范围,如果是软问题,知道了大致代码范围,仔细读几遍代码后,就等着拍大腿吧。
最近编辑记录 Zodiac (2020-01-18 14:36:50)
离线
重写吧,76E003稳定性绝对没问题,
离线