Part Number:MSP430I2040
使用INFO FLASH存储信息,由于INFO FLASH只有一个段,而最小擦除单位刚好也是一个段(segment)。在调试过程中擦除后出现了问题,无法在线调试,总是在例程中的low_level_init.c文件里的TLV校验那通不过直接进入了LPM4,把这个文件从工程里移除还是能用的,了解到是由于擦除了信息段的调校信息。
想知道移除low_level_init.c文件会产生什么样的影响?
Ben Qin:
你好,TLV就在INFO FLASH中,所以它可以被擦除,由于INFO FLASH只是一个段,这就造成在这里面存数据有一点点危险,可以将TLV复制 然后再copy回来。
如果将low_level_init.c文件移除,芯片可以运行,但只能说是“勉强”运行。
你可以看下下面的帖子:e2e.ti.com/…/4456573
,
SY L:
我想避免在INFO FLASH中写入和擦除数据 选择在其他位置写入 例如0xC000 但是我发现每次重新烧录程序时内容就被擦除了 变成了FF 这样我无法获得已保存的数据 请问我应该怎样解决这个问题
,
Ben Qin:
由于flash不能复写,所以每次重新烧录之前flash会被擦除。
,
Ben Qin:
或者你可以尝试在CCS中尝试一下 ‘Erase By Address’ 。
,
SY L:
请问我可以选择Erase and download necessary segments only 这个选项然后代码中存到0XC000这个位置吗
,
Ben Qin:
你好,Erase and download necessary segments only这个过程是自动完成的,它不能将代码存到指定位置。
SY L 说:这个选项然后代码中存到0XC000这个位置吗
指定位置擦除只在选中“By Address Range”时有效。
,
SY L:
我的代码中希望把一些内容存到flash中以供以后读取出来 例如一串字符串"ABCDEF" 存到0xC000位置 怎样才能保证这部分数据不被擦除呢
,
Ben Qin:
不能,0xC000属于可擦除部分,所以无法保证它不被擦除。你也许可以试试OTP,但是注意OTP不可擦除的。
,
SY L:
那我想请问一下 tlv是固定不变的吗 如果我选择用INFO FLASH存储数据 擦除并修改数据时每次复制tlv再copy回去 会对程序的安全或者运行产生什么不良影响吗
,
Ben Qin:
SY L 说:tlv是固定不变的吗
应该是。请看这张表:
SY L 说:擦除并修改数据时每次复制tlv再copy回去 会对程序的安全或者运行产生什么不良影响吗
不会,这就是我最开始给出的建议了。