This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、
我正在使用 MSP430FR2311作为主机、进行 BSL 的 MSP430FR2476固件更新。 我使用了 MSP430 FRAM 器件引导加载程序(BSL)和 MSP430FRBoot–主存储器引导加载程序和
《针对 MSP430 FRAM 大型存储器型号器件 的无线更新》并创建了主机和目标设置。
MSP430FR2311主机、MSP430FR2476目标和应用代码(LED 闪烁)生成了.txt 文件并转换了.c 文件、并与 MSP430fr2476启动代码进行了合并。 主机和目标正常工作、没有任何错误。
所有命令正确执行并且 TI_MSPBoot_APPGR_JUMPTOAPP ()执行(但是 LED 不会切换)。
下面是包含我用于程序执行的所有文件的 zip 文件。
e2e.ti.com/.../MSP_5F00_Boot.zip
此致
帕拉维
您好 Pallavi:
1)。 首先,检查您的应用地址和 TI_MSPBoot_APPMGR_JUMPTOAPP ()指向的地址是否相同;
2)。 其次、读取闪存数据并将其与您想要更新的代码进行比较、检查更新到闪存中的代码是否正确;
3)。 第三,我将在4月14日离职,如果你有任何其他问题,我会在我回到办公室后帮助你。 如果您的问题紧急、您可以设置新帖子、我们的美国同事将在24小时内为您提供帮助。
此致、
K·扬茨
您好!
感谢您的回复
1. 下面是为应用程序生成的更新的.c 文件
#包含
#define App1_size 210
const uint32_t App1_Addr[4]={
0xC402、
0xF7DA、
0xF7F8、
0xF7FE、
};
const uint32_t App1_size[4]={
204,
2、
2、
2、
};
const uint8_t App1_0[]={
0x31、0x40、0x00、0x30、0xB0、0x13、0x26、0xC4、0xB0、0x13、0xC2、0xC4、0xD2、0xE3、0x02、0x02、
0x92、0xC3、0x82、0x03、0x00、0x13、0x3F、0x15、0xC2、0x43、0x1D、0x02、0xB、0x13、0xAA、0xC4、
0x3C、0x17、0x00、0x13、0xB2、0x40、0x80、0x5A、0xCC、0x01、0xD2、0xD2、0x03、0x04、0x02、0xD3、
0x02、0x02、0x92、0xC3、0x30、0x01、0x3F、0x40、0x46、0xE8、0x03、0x43、0x1E、0x43、0x3F、0x53、
0x3E、0x63、0xFD、0x2F、0xD2、0xC3、0x02、0x02、0x3F、0x40、0x46、0xE8、0x03、0x43、0x1E、0x43、
0x3F、0x53、0x3E、0x63、0xFD、0x2F、0xD2、0xD2、0x02、0x02、0x3F、0x40、0x46、0xE8、0x03、0x43、
0x1E、0x43 0x3F、0x53、0x3E、0x63、0xFD、0x2F、0xD2、0xC3、0x02、0x02、0xF2、0xD0、0x80、0x00、
0x03、0x02、0xF2、0xD0、0x80、0x00、0x07、0x02、0xF2、0xD0、0x80、0x00、0x19、0x02、0xF2、0xD0、
0x80、0x00、0x1B、0x02、0xF2、0xC0、0x80、0x00、0x1D、0x02、0xB2、0x40、0x10、0x00、0x82、0x03、
0xB2、0x40、0xE7、0x03、0x92、0x03、0xB2、0x40、0x10、0x01、0x80、0x03、0x43、0x32、0xD0、
0xD8、0x00、0x03、0x43、0x0C、0x43、0x10、0x01、0xB2、0x40、0xDE、0xC0、0x00、0x20、0xD2、0xD3、
0x02、0x20、0x32、0xC20x03、0x43、0xB2、0x40、0x04、0xA5、0x20、0x01、0xFF、0x3F、0x03、0x43、
0x80、0x00、0xCA、0xC4、0xFF、0x3F、0x03、0x43、0x80、0x00、0xC6、0xC4、};
const uint8_t App1_1[]={
0x18、0xC4、};
const uint8_t App1_2[]={
0x0E、0xC4、};
const uint8_t App1_3[]={
0x02、0xC4};
const uint8_t * app1_ptr[4]={
App1_0、
App1_1、
App1_2、
App1_3、
};
应用程序代码开始从位置0x00C402写入。
这是在以下程序中定义的宏:#define TI_MSPBoot_APPMGR_JUMPTOAPP (){Appl_Reset_Vector (void (*)())_UMPTOAPP)();}
来自 lnk_cmd 文件的应用复位矢量是
/*引导加载程序区域的保留闪存位置*/
__ Boot_Start = 0xf800;/*引导闪存*/
__FFFE = Boot_Reset;/*引导复位向量*/
__SCR= Boot_Vector 0xFFA2;/*引导矢量表*/
__MSP430_Len = 0x10;/*共享回调的长度(2次调用=4B (Boot_Shared)或8B (msp43)*/
__ Boot_Shared backs = 0xFF70;/*共享回调的开始*/
Appl_Vector_Start = 0xf7a2;/*中断表*/
/*为应用领域保留的闪存位置*/
_CRC16 Appl_Checksum =(_CRC16);/*应用程序的 Appl_Start */
_CRC8 Appl_Checksum_=(_CRC8+2);/*应用程序的 Appl_Start */
Appl_Start_Memory =(_LVDS+3 Appl_Start);/*应用程序区域*/
_appl_crc_Size1 =(_crc -_crc Appl_Start_Memory +1);/*为 Appl_End 计算的低存储器中的字节数*/
_appl_crc_Size2 =(_crc -_crc Flex_Start + 1);/*为 Flex_End 计算的上部存储器中的字节数*/
Appl_Reset_Vector =(__ Boot_Start - 2);
地址 由工具生成。 我是否需要更改 TI_MSPBoot_APPMGR_JUMPTOAPP ()的地址
2.下面是从.c 文件生成并发送到目标的数据,我已经检查了存储器位置。 数据被写入
此致、
Pallavi Y
您好 Pallavi:
1)。 您应该确保 TI_MSPBoot_APPMGR_JUMPTOAPP ()能让指针跳转到应用程序代码的地址;
2)。 我的意思是、应该在您完成更新后读取闪存数据、将闪存中的数据与您要写入闪存的数据进行比较、并检查它们是否相同。
3)。 你可以总结你的问题和测试结果,并设置一个新的帖子,我的美国同事将在24小时内回复你,因为我很快要赶上飞机,不能回复你在未来几天。
最好的面包
K·扬茨
好的谢谢我会设置一个新的帖子
好的,Pallavi 我将关闭此主题、希望您能够尽快解决您的问题并获得满意的答案。
谢谢!
我能够解决此问题。 问题是 TI_MSPBoot_APPMGR_JUMPTOAPP ()未指向应用程序代码。
_disable_interrupt ();
(void (*)()) 0xC402)();
添加此行将帮助我指向应用程序地址