采用的MSP430FR5994,存储容量够大,且外接32M Nor Flash。
因为做的是无线固件升级,开发板无法进行任何物理连接,通信协议采用自己设计的无线模块。
目前脑子里有两种方案,不知道哪种简单点:我的需求是,在固件升级的时候原固件版本在运行。
1. 目前的固件代码接收上位机数据是通过IO中断,采用自己的通信协议,可以通过这种方式接收新固件数据,并存放在特定地址,接收并校验无误之后跳转到引导程序(暂时也叫做引导程序),该引导程序根据flash的写入情况决定是将新版程序拷贝到应用程序执行区还是还原原来的旧版应用程序。。这种方式也是IAP方式。。不明白的是,这种情况下跳转到引导程序后,原固件版本还在运行吗? 还有应用程序执行区不是很清楚。在.xcl文件中是怎么体现的。
2. loader方式。loader程序负责通过无线协议接收应用程序代码,完整接收并校验无误之后,跳转到应用程序区执行应用程序。这种方式是不是每次固件升级的时候系统就不在运行任何版本了?
Jacky Xu:
都挺简单的,都可以做
第一种的好处是万一你无线收数据收到一半出现意外没能完全收全新的固件,则原有代码可以继续RUN,没有任何risk造成系统死机。
第二种么,就是万一升到一半出现意外就会失去原有功能。
都可以做
你的龙猫:
回复 Jacky Xu:
谢谢你的回复。
根据需求目前我只能采用方案一。
若采用方案一,那么BSL代码需要做些什么工作?因为接收并验证新固件文件已经被运行中的固件做了。
Jacky Xu:
回复 你的龙猫:
从无线接收数据到存到外部FLASH的这部分代码肯定需要你自己写的
boot相关代码可以参考我们提供的bootload代码做相应修改,肯定不能直接用