MSP430F5438A无线升级

将我自己在升级过程中的问题记下来。

430无线升级,是通过JTAG烧写一个自定义BSL程序,然后通过BSL程序接收应用程序(APP程序)。

接收方式多种--UART,IIC,SPI。430手册关于固件升级,也介绍了BSL协议等内容。

由于项目需要,采用无线升级,无线模块是SPI接口,也可理解为SPI接收方式。

BSL程序和APP程序需作地址空间区分,修改对应的XCL文件。

MSP430F5438A无线升级---- APP的XCL文件

关于XCL文件,由于我的程序很短,空间设置的很小。升级时,只要程序rebulid时没报错就没问题,

如果升级出问题时,可不考虑这方面的原因。也不用考虑高地址空间的问题。

MSP430F5438A无线升级---BSL的XCL文件

地址空间分配好后,然后编写对应的程序。程序中最关键的是终端向量重映射。

MSP430F5438A无线升级----APP程序,很简单,方便测试

MSP430F5438A无线升级-----BSL程序中关于定时器中断重映射

烧写BSL程序,然后通过无线发送APP程序,并烧写到对应的flash空间。最后是跳转到APP区。

MSP430F5438A无线升级

MSP430F5438A无线升级

单步调试,程序跳转正常。当单步执行APP程序中打开全局中断语句后,再单步,程序复位,指向0xFFFE。

复位向量里放的BSL程序的起始地址,也就是0x7000。但程序并没有执行到0x7000,而是执行到0x0000,

再单步就跳到0x0004不动了。

经过示波器观测,发现时钟引脚仍然有信号,说明程序还是运行了,中断函数没进去。所以一直考虑是中断

向量重映射的问题。

重新看官网例程,发现将所有没用的中断都做了处理,我也这样试试,

MSP430F5438A无线升级再调试,发现不再复位,而是进入84中断了。

MSP430F5438A无线升级

也就是P2口中断,查看IO口配置函数,发现打开了P2口的中断使能,导致有中断,没有对应的中断服务程序。

到此问题终于解决。