TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430F6736用户自定义BOOTLOADER升级代码出现的问题

芯片:MSP430F6736

硬件环境:自己设计PCB板

软件环境:IAR

阶段:底层驱动编写

刚接触TI芯片。

MSP430芯片内有有固有的BSL升级程序,但是目前我们想自己来做这个程序。就是通过串口传送数据把传送的数据固定在FLASH的某个地方,等串口数据全部接收完毕,然后校验正确,置升级标志,重启芯片。在FLASH中再写一段升级代码,然后程序上电时先跑到复位中断向量,然后复位中断向量指向升级程序,运行升级程序发现有升级标志,则把主程序擦除,然后把FLASH中串口下载的数据再搬移到主程序里,搬移完毕升级标志置0,再次上电进升级程序发现没有升级标志,进入主程序升级完毕。如果不重新定义中断向量可能因为主程序的修改导致中断向量指向错误。升级代码需要在FLASH中保护起来永远不被擦除。

1.如何重定义和映射中断向量?下面是我们以前用的芯片的一个方法,ISR_VectorNumber_Vsci2rx是默认的中断向量,isrVsci2rx是重定义和映射的中断向量,有多少个中断向量我们就写多少个重定义映射函数,把所有的重定义映射函数固定在FLASH的某个位置,__interrupt void isrVsci2rx(void)写在应用程序里,这样进中断以后中断向量默认指向重定义的中断向量isrVsci2rx,然后再执行相关的中断函数,这样芯片升级以后我们还把重定义的中断向量写在以前固定的FLASH位置,每个重定义中断函数只占2个字节,我想问下在TI的芯片上如何实现这种方式?
2.就是如何把写的代码或者常量数组固定在FLASH的某个位置?(用的IAR编译环境)能否麻烦也给发一下这方面的资料。
 
#pragma location = "MYSEGMENT"然后再.XCL文件里修改MYSEGMENT的地址吗?但是这样的话只能修改一个函数,如果我想把整个.C文件里的函数都固定在FLASH的某个位置改如何固定?不能一个函数前面加一句pragma location = "MYSEGMENT吧?


zhang zhigang:

void ISR_VectorNumber_Vsci2rx(void) //VECTOR 24 SCI2 receive{ asm (jmp isrVsci2rx);}

__interrupt void isrVsci2rx(void){ /* Write your interrupt code here … */

}

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F6736用户自定义BOOTLOADER升级代码出现的问题
分享到: 更多 (0)