详细介绍MSP430的升级引导程序编写以及升级固件制作。
1.关于升级引导代码的实现:
主要功能实现:进行相对应的升级程序跳转用户程序的选择
对于MSP430的启动初始化来讲,是默认看门狗打开,所以需要提前关闭看门狗,
void WDT_A_hold(uint16_t baseAddress)
{
// Set Hold bit
uint8_t newWDTStatus =
((HWREG16(baseAddress + OFS_WDTCTL) & 0x00FF) | WDTHOLD);
HWREG16(baseAddress + OFS_WDTCTL) = WDTPW + newWDTStatus;
}
整体的流程:
2.用户应用程序的实现:
用户程序分为串口键鼠事件的功能以及请求升级。
3.制作升级固件
对于MSP430固件版本为V1,升级到版本V2。升级版本V2的制作主要看清楚V1版本的引导升级程序的起始地址。
假设V1版本的hex文件的引导程序的起始位置是在0x1000的位置,则在对要升级的430代码编译时修改链接文件中flash的起始位值修改为0xa000,然后再生成TXT文件,再将TXT文件的中断向量地址进行修改,生成hex文件。
要注意的是,用户程序代码放置在flash位置上可以不需要进行修改,升级的时候直接覆盖就行了
这样的话,从V1版本升级成V2版本时,就可以在430的flash其他地方升级引导程序,从而不会清除正在执行升级任务的升级引导程序。
感谢分享,之前和TI的FAE一起调试MSP430I2041的BOOTloader引导程序,调试了很久才能加密程序,但是加密后无法更新固件程序。