minomi12345678 发表于 2019-9-12 12:47:37

关于C8051F040单片机FLASH数据被篡改的问题求助!

{:handshake:}
我单位有一款用C8051F040做核心的板子,通过CAN总线驱动A,E两个电机。经常出现某个电机无法驱动的故障,回来重新刷程序就正常了。
过程如下:
1.在实验室测试,加电,板子上报“驱动总线异常”;
2.读取板子F040FLASH上0x0000~0xFFFF数据,存为err.hex文件;
3.重新烧录程序,后板子工作正常。0x0000~0xffff程序存为normal.hex.
4.将err.hex烧录,板子工作又不正常。
5.将normal烧录,板子工作又正常。
6.检查程序中没有对FLASH写操作命令。
问题:
1.为何程序段FLASH被改写?
2.为何改写后其他功能正常,唯独CAN总线不能通信,多次实验都是如此?
3.看F040手册,写明如果从0写1,必须整页清除后再重写,但实际并非如此。
4.为何还会发生数据往后面错一个BYTE的情况?

附件为图

lnskngdc 发表于 2019-9-12 13:54:09

建议看看复位电路的问题

marshallemon 发表于 2019-9-12 14:36:00

之前看到过有人说C8051有该问题,但一般是电源,复位,C2接口没有处理好所造成

yelong98 发表于 2019-9-12 14:58:23

我也碰到过,重刷就好了,一直没找到原因,后来项目黄了

zhouqw1979 发表于 2019-9-12 15:03:00

看看每次出错,出错代码是否相同

wye11083 发表于 2019-9-12 15:21:02

你程序里面应该有写flash,字节出错一般是读写时序不完全对,仔细查代码吧。

kebaojun305 发表于 2019-9-12 15:23:52

我还遇到过 电机改写过 STM8S003的 flash。

arm 发表于 2019-9-12 15:45:38

本帖最后由 arm 于 2019-9-12 15:52 编辑

复位电路不要用传统的阻容电路,用专用的复位IC,应该问题会解决,以前用这个IC,发现flash改写总是上电或者掉电的时候出现,好像是用了MAX809S就没发现这个问题了

yelong98 发表于 2019-9-12 15:51:08

c8051f的flash真的让人头疼,死活找不到原因,后来换stm32没发现有这个问题,可惜项目已经黄了

minomi12345678 发表于 2019-9-12 22:12:15

统一回复:
1.检查过代码,确实没有写flash指令,不过没有VDD监测;
2.复位电路就是阻容,标准的,但不明白为何改写与复位有关;
3.每次改写的数据不一样。

minomi12345678 发表于 2019-9-12 22:17:08

错误代码起始地址:00 00 80 XX 为SJMPXX
正确代码起始地址:02 c4 95 为LJMP c495
第一条跳转就不对了。

modbus 发表于 2019-9-12 23:39:12

不要用内置的复位电路,不要用阻容复位电路,可外加一片CAT809S,最好使用内部振荡器

momo_li 发表于 2019-9-12 23:41:39

对比一下读上来的flash,看看是不是真的变了啊,

hailing 发表于 2019-9-13 11:18:36

仿真口受干扰,干扰波形刚好实现了写某部分flash的类似时序。仿真口是不是什么都没加?并一个不影响到仿真值的电容容值,比如330pF

1a2b3c 发表于 2019-9-13 20:02:09

个人认为更多的是设计问题。的确有芯片所谓抗干扰的能力差异,但是如果比如都按照不抗干扰的方式设计电路以及软件,我估计99%的芯片都能寿终正寝。 si的8051十多年前就用在某军火上面,到现在也没有听说过有这样那样的干扰方面的问题,当然只是作为一个例子,并不表示这个ic就一定是很好的玩意。就如2、30年前的单片机一类的,几乎那些国营大单位几乎清一色的8051系列芯片,用到航空航天各种场合,也是正确的执行着每条指令。这里的原因有待深思。就如楼上所述的一些基本硬件处理措施还是必要的

howmoney 发表于 2019-9-13 20:51:08

楼上有人说了用复位芯片。上家公司用c8051也碰到过这个问题,当时不是我分析的,但确实加了复位芯片就解决了。

minomi12345678 发表于 2019-9-13 21:59:31

试着加一个复位芯片,另外把jtag引脚并电容。试验

ltby00 发表于 2019-9-13 22:55:14

关注下,低压复位有开么?
页: [1]
查看完整版本: 关于C8051F040单片机FLASH数据被篡改的问题求助!