最近在做ESD试验,程序跑飞后,发现有一定的概率,会把内部的程序冲掉。
就算把所有的FLASH设置成禁止编程和擦除并commit还是不行。同时也有可能把禁止的状态冲掉。
请问还有什么办法可以防止内部的程序被破坏?谢谢。
Triton Zhang:
如果程序跑飞到内部ROM区,你的APP程序做再多保护都是没有用的。
1. 使用B1版本的芯片测试,
2. 在PCB设计时加强ESD保护。
yi zhao:
回复 Triton Zhang:
1、就是用的B1的芯片测试的
2、加强ESD的防护只是减少发生的几率,不能根本解决问题
我配置了所有的FLASH都是禁止擦除和编程的,就算跑飞到ROM中相应的程序也不应该冲掉程序
Triton Zhang:
回复 yi zhao:
1. 首先你先确定你拿到的是B1版本的芯片,据我所知现在还没人拿到B版本的芯片.
2. 你的代码中设置了禁止编程和擦除,只能确保你的代码跑非到FLASH中不被擦除,在ROM中的程序包含有编程,解锁,校验等代码,只要到了ROM中你的保护就不可能有效。
yi zhao:
回复 Triton Zhang:
怎么避免意外跑到ROM中呢?
Michael Sun:
回复 yi zhao:
ESD防护可以从多方面进行处理,比如,
结构方面,确保设备外壳良好的接入大地。单元电路PCB地和外壳做好隔离,信号地和外壳地单点连接。
PCB设计方面,调整走线,增加PCB层数,让信号层有相邻的完整地平面,关键信号增加ESD保护器件。等等。
程序中可以加入保护,但如果电气环境恶劣导致程序跑飞,还是要从源头进行改善。
希望可以对楼主有所帮助。
yi zhao:
回复 Michael Sun:
我的问题是怎么防止程序跑飞时防止程序被破坏,不是怎么防止程序跑飞
这难道不是MCU设计的时候应该注意的问题吗?希望对TI有所帮助
Michael Sun:
回复 yi zhao:
可以通过对FMPPEn寄存器进行配置,将对应的Flash块配置为不可擦除和写入数据,来对Flash中的数据进行保护。
对FMPPEn寄存器的配置,需要通过FMA、FMC寄存器配合完成。
首先在FMPPEn寄存器中写入需要的值,然后对FMA寄存器赋值正确的地址,最后对FMC寄存器赋值0xA4420008。
赋值后,查询FMC寄存器的CMOT直到其清零,写入完成FMPPEn。
详细内容、FMPPEn对应的FMA地址值,请见数据手册中“Non-Volatile Register Programming”的描述。
可以用下载另外一个不同的程序的方法来测试写保护功能是否正确配置。如果写保护有效,在写入不同程序时,Verify环节会提示比较失败。.
yi zhao:
回复 Michael Sun:
已经做了,没有作用