This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

仿真器运行导致的FLASH信息段写入错误

Other Parts Discussed in Thread: MSP430G2553

用MSP430G2553做产品,开发的时候用FET430UIF仿真器来写程序到目标板,最近发现一个奇怪的现象。

FLASH信息段1000-103F我用来存放一些如仪表编号之类的信息。单片机上电运行时首先检查地址0x1000是否为01,不为01的话清除该段,并将默认初始化数据写入。

但我发现有个别板子在仿真运行的时候,写入的默认数据是错误的,例如地址0x1001写入默认的是00H,但仿真运行后却发现该地址被写入了01H,我检查过程序是没有问题的,写FLASH前也有关闭中断,写的数据也是没错的,但运行后检查该地址,发现数据和写入的不一致。更诡异的是,如果在一些会写入错误值的地方加断点,仿真运行到此后,IAR自动暂停,再点go运行,再检查写入的数据就是正确的。如果用仿真器将程序写入单片机,但不仿真运行,而是在IAR中断开仿真器,然后复位单片机让它自动运行,然后再检查写入的数据也是正确的。

目前这种情况只是偶尔出现在几块板子上,多数板子都是能正确写入数据的。只有几块会出现仿真的时候写入数据错误,不进行仿真而让单片机自己运行的时候就不会导致写入错误。

这种情况比较可能是哪里的问题?

芯片MSP430G2553,软件环境IAR for msp430 5.50,仿真器用LSD-FET430UIF,采用JTAG8根线连接

  • 比例不大就废弃吧,有些问题是芯片本身问题。我们没有设备检测,商家也不会告诉你有问题。如果真是有较大问题,建议那你用多个不连续字节判断是否有数据写入。这样保险系数大点。