打印

ARM的启动代码和抗干扰问题——与兄弟们共同探讨!

[复制链接]
2609|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Wxy8030|  楼主 | 2011-3-10 14:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人用 LPC2136 和 LPC2292 系列片子,编译器用 KEIL FOR ARM 。
    KEIL 里面的启动代码是自动生成的,而且可以用配置向导修改,直观省事!
    但因为入行是从单片机开始的,总有“RAM数据不可靠”这种概念(前辈的教导),这种概念的中心思想是:产品中发生RAM数据异常变化的可能性是存在的(干扰或其他原因),那么数量巨大的产品24小时在工作现场运行时,因为RAM异常导致设备异常的可能性是很大的,所以程序设计时,必须充分考虑RAM异常带来的后果并有充分的处理措施!
    问题来了,用单片机的时候,这个问题倒不是问题,可ARM的问题就麻烦了:我根本不大看启动代码,只是根据数据手册和KEIL提供的配置向导配置一下启动代码——那么如果那些写在RAM里、只在CPU启动时改写一次的、跟CPU运行直接相关的参数、因为某些异常原因出错了、怎么办?
    对此问题,兄弟们是怎么考虑的呢?

相关帖子

沙发
ayb_ice| | 2011-3-10 14:49 | 只看该作者
错误是千奇百怪的

使用特权

评论回复
板凳
shizaigaole| | 2011-3-10 16:58 | 只看该作者
哪有绝对可靠地东西?
如果那样,程序早就跑飞了。
应该追根求源设计好硬件。

目前,正规大厂的片子不大可能出项,受干扰以后部分RAM被改写,其他的还能完好的情况。

使用特权

评论回复
地板
john_lee| | 2011-3-10 17:01 | 只看该作者
数据被干扰的问题,真正能解决的办法是ECC(自己google一下ecc),凡是代码和数据停留的场所(寄存器,CACHE,RAM等等)都用采用ECC技术。

使用特权

评论回复
5
拿起书本| | 2011-3-10 22:53 | 只看该作者
楼上说的对,顶一个

使用特权

评论回复
6
batsong| | 2011-3-11 08:30 | 只看该作者
要是你设计时假定RAM数据不一定可靠,cpu计算不一定能算对,那你的设计真的就太难了

做上层应用对于底层厂商的工作还是要有基本的认可的,不然做起来将会缚手缚脚

使用特权

评论回复
7
Wxy8030|  楼主 | 2011-3-11 10:13 | 只看该作者
不知道各位兄弟有没有遇到过这样的现象:很多的设备24小时工作,偶尔,我是说偶尔,个别设备异常,重新开、关电后恢复......

造成上述现象有两种可能,一是程序的极隐藏的隐患造成的,二是RAM的异常变化——绝大部分原因是因为程序隐患,甚至我认为的可能是RAM的异常变化实际上也是程序隐患......

但是,假设我认定“RAM是不可靠的”(楼上的兄弟们请注意,此不可靠的几率是非常非常底的,小批量运行根本看不出来的),那么程序里总加上恢复的手段,那么即使是因为程序极隐蔽的隐患造成RAM数据意外变化,程序也能自己恢复。—— 既然如此,说明恢复的手段是必要的,不论“RAM是不可靠的”这个命题是否成立!

OK——下一步就是讨论,如何针对“RAM是不可靠的”这一问题,提出解决方案?

使用特权

评论回复
8
ganxiang| | 2011-3-11 11:51 | 只看该作者
软件定时的对RAM进行检查

使用特权

评论回复
9
batsong| | 2011-3-11 14:03 | 只看该作者
对于关键的运行参数,建议存三份在RAM的不同bank中,每次取出的时候做一个表决器,就是取三个中多于两个一样的值,并修复不同的值。

但如果所有数据都这样保护的话显然太浪费效率,个人拙见,楼主参考

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

2054

帖子

2

粉丝