搜索
bottom↓
回复: 17

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

[复制链接]

出0入4汤圆

发表于 2019-9-12 12:47:37 | 显示全部楼层 |阅读模式

我单位有一款用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的情况?

附件为图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2019-9-12 13:54:09 | 显示全部楼层
建议看看复位电路的问题

出0入85汤圆

发表于 2019-9-12 14:36:00 | 显示全部楼层
之前看到过有人说C8051有该问题,但一般是电源,复位,C2接口没有处理好所造成

出0入135汤圆

发表于 2019-9-12 14:58:23 来自手机 | 显示全部楼层
我也碰到过,重刷就好了,一直没找到原因,后来项目黄了

出0入0汤圆

发表于 2019-9-12 15:03:00 | 显示全部楼层
看看每次出错,出错代码是否相同

出0入442汤圆

发表于 2019-9-12 15:21:02 来自手机 | 显示全部楼层
你程序里面应该有写flash,字节出错一般是读写时序不完全对,仔细查代码吧。

出0入8汤圆

发表于 2019-9-12 15:23:52 | 显示全部楼层
我还遇到过 电机改写过 STM8S003的 flash。

出0入0汤圆

发表于 2019-9-12 15:45:38 来自手机 | 显示全部楼层
本帖最后由 arm 于 2019-9-12 15:52 编辑

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

出0入135汤圆

发表于 2019-9-12 15:51:08 来自手机 | 显示全部楼层
c8051f的flash真的让人头疼,死活找不到原因,后来换stm32没发现有这个问题,可惜项目已经黄了

出0入4汤圆

 楼主| 发表于 2019-9-12 22:12:15 | 显示全部楼层
统一回复:
1.检查过代码,确实没有写flash指令,不过没有VDD监测;
2.复位电路就是阻容,标准的,但不明白为何改写与复位有关;
3.每次改写的数据不一样。

出0入4汤圆

 楼主| 发表于 2019-9-12 22:17:08 | 显示全部楼层
错误代码起始地址:00 00 80 XX 为SJMP  XX
正确代码起始地址:02 c4 95 为LJMP c495
第一条跳转就不对了。

出0入0汤圆

发表于 2019-9-12 23:39:12 | 显示全部楼层
不要用内置的复位电路,不要用阻容复位电路,可外加一片CAT809S,最好使用内部振荡器

出500入109汤圆

发表于 2019-9-12 23:41:39 来自手机 | 显示全部楼层
对比一下读上来的flash,看看是不是真的变了啊,

出70入145汤圆

发表于 2019-9-13 11:18:36 来自手机 | 显示全部楼层
仿真口受干扰,干扰波形刚好实现了写某部分flash的类似时序。仿真口是不是什么都没加?并一个不影响到仿真值的电容容值,比如330pF

出0入475汤圆

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

出0入16汤圆

发表于 2019-9-13 20:51:08 来自手机 | 显示全部楼层
楼上有人说了用复位芯片。上家公司用c8051也碰到过这个问题,当时不是我分析的,但确实加了复位芯片就解决了。

出0入4汤圆

 楼主| 发表于 2019-9-13 21:59:31 | 显示全部楼层
试着加一个复位芯片,另外把jtag引脚并电容。试验

出50入0汤圆

发表于 2019-9-13 22:55:14 来自手机 | 显示全部楼层
关注下,低压复位有开么?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 02:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表