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

通过二次BOOTLOADER下载程序问题

Other Parts Discussed in Thread:TMS320F28035

        最近在开发TMS28335的二次bootloader,bootloader被存储在flash的第一个扇区,它的功能就是接收上位机发送来的APP程序,将程序存储到flash的其它扇区,接收完成后复位跳转执行APP程序;

        现在最重要的问题来了,程序已经可以被正确的下载到flash中,但是不知道如何跳转过去,看了好多帖子,意思都是修改codestart文件,codestart文件是用汇编写的,不知道28335的汇编指令,那位大神能够给个demo或者几行代码,说明下如何跳转到APP程序。

        跳转的逻辑是,当bootloader将程序全部写到flash中时,会在flash的最后一个扇区写一个key,想要通过判断这个key来决定是执行bootloader还是执行app程序,我应该怎么修改codestart文件呢?

        求指教。

youdong sheng:

各位大神们,帮下忙啊~~~~正在做28335的CAN  bootloader,感觉就差这最后一步了

,

youdong sheng:

我想复杂了……(*((void(*)(void))(appadress)))();这样就解决了,程序完美运行,跟stm32的跳转方式一样的

,

user4750962:

您好,我现在也在做通过can升级app的bootloader,不知道该如何做,您之前做资料或者您的那个bootloader可以发我学习下吗,谢谢,邮箱mikemills1@163.com

,

PINRAN LIAO:

多谢楼主的回复,之前我的跳转方式一直是使用的汇编指令跳转的,我也参考了STM32的跳转方式,但是没有成功

,

user5048978:

你好:

 我现在在用TMS320F28035做二次Bootloader,最后的跳转的方式也和你一样,但是我跳转到APP会出现  程序不断的复位又从头开始执行  或者  程序的运行指针是保持在子程序的死循环里,但子程序的功能却不对。  希望能和你沟通一下,麻烦你了 。

,

PINRAN LIAO:

void CAN_BOOT_JumpToApplication(uint32_t Addr){ //  asm(" LB  0x310000"); //最开始采用的是汇编跳转方式,只能跳转为固定的地址   // (*((void(*)(void))(Addr)))();  //后续参考STM32的跳转方式 //(*(pFunction)(Addr))();    //typedef void (*pFunction)(void); pFunction jump; jump = (pFunction)(Addr); jump();

}

我现在是采用的是这样的跳转方式

,

xueping du:

楼主,能否共享一下你的成果

,

PINRAN LIAO:

详细的源代码见

https://github.com/596142041/28335CAN_Update_Flash.git;

,

zhenguo hu:

失效了

,

user5866419:

github.com/…/28335CAN_Update_Flash

赞(0)
未经允许不得转载:TI中文支持网 » 通过二次BOOTLOADER下载程序问题
分享到: 更多 (0)