使用产品型号:MSP430F1121A。
使用方法:板卡中有ARM和430,430配有纽扣电池,其片内RAM用来存储用户数据,板卡主电源掉电后依靠备用纽扣电池继续为430供电。ARM内部实现了BSL协议,430的固件和RAM中的数据都是通过BSL方式进行配置的。ARM每次上电使用BSL方式从430RAM中读取数据。
问题:1、ARM上电后获取430 RAM中数据,发现数据不对了。2、430的一个IO引脚状态变化了,程序里设置的是中断输入,出现问题时,这个引脚一直为输出了,一直为高电平,这个引脚连接外部按键开关。
分析可能存在的问题,是通过BSL模式访问MSP430时,改写了地址0到0x0a00某一处的数据。如果正好篡改的是IO寄存器的数据,则IO引脚状态发生变化,如果正好篡改的是RAM中的数据,则ARM获取数据后,会发现数据不对了。
依据,在BSL319源码ssp.c中,有一段代码
WORD accessAddr = (0x0212+(checksum^0xffff))&0xfffe;/* 0x0212:address of wchksum*/
if(accessAddr < 0x0a00)
{
printf("warning: this command might change data at address %x or %x!\n", accessAddr, accessAddr+1);
}
请大牛们帮忙分析下,是因为ARM通过BSL机制访问430 RAM数据,导致430地址中0到0x0a00某一处数据被篡改的吗?
灰小子:
很有可能。建议只在更新430固件时使用bsl。其他时候的通讯采用spi、iic等
Maka Luo:
BSL是一种程序烧录模式,为什么会用BSL来作为通信接口呢?