Board logo

标题: 对FLAHS操作引起的“事故”! [打印本页]

作者: johdon23    时间: 2008-10-7 09:33     标题: 对FLAHS操作引起的“事故”!

使用的是9S12XDT512,BANKED模式。

简单描述一下“事故”发生的经过:在成功对FLASH进行擦除和写操作后,我想测试一下FLASH擦写全过程的消耗时间,结果发现擦除操作花了22个ms(总线频率40M,使用的是sector erase指令—0x40),而写入操作是us级的,由于感觉擦除操作的时间太长,于是我想换一条擦写指令,就用了mass erase指令—0x41(事后才想起来这个是全擦除!)。结果烧录之后,发现程序跑不起来,于是我赶紧又将程序改回去,再编译之后,启动BDM的时候,就发现一直在报错,无法连上!

是不是我把MCU中驻留的与BDM相关的代码也擦除掉了!有什么办法恢复吗?

另外,9S12XDT512的FLASH操作是否没有字擦除的指令?FLASH擦除的时间真的要那么长吗?


作者: johdon23    时间: 2008-10-8 14:13

找到原因了! 因为在64K的FLASH地址的0xFFFE地址存放的是启动程序的入口地址,如果使用全擦除指令,就可能将这部分也擦除,导致程序无法正常启动,所以在BDM中仿真运行时,出于某种保护机制,将FLASH区锁住了。如果要恢复,在修改了程序之后,并启动BDM,在仿真界面,在MultilinkCyclonePro选项下,选择Unsecure... 即可。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0