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.

TMS320F28P650DK: 关于通过BMSP来选择运行存在FLASH里面的两个程序的问题

Part Number: TMS320F28P650DK

我的想法是在flash中存两个程序,一个是主程序,一个是自己编写的bootloader,用于升级主程序。

我现在已经将BOOTDEFx和BMSP等寄存器设置成了如下图,使用GPIO72来选择从FLASH BANK0或者FLASH BANK1启动

我的两个程序的flash分区如下:

左边为主程序的分区,右边为bootloader的分区。

在程序烧录的时候,我也分别将不同程序的扇区做了保护,比如bootloader只E/P BANK0 sector0-11

而主程序则保护BANK0 sector0-11

但是我的单片机仍然无法正常运行其中某个程序(单机跑),主程序运行很短的一段时间则会重启。

我的疑问如下

1.我的思路是否能实现?

2.是否有什么遗漏或者问题,导致我的两个程序都无法正常运行?

  • 或者说,我是否根本不需要使用BMSP来做这个事情,我直接将boot和app的.out合并烧录,然后上电启动boot,如果不需要升级直接跳转app?

  • 已经收到了您的案例,调查需要些时间,感谢您的耐心等待

  • 假设我使用合并烧录,不使用单片机自带的BOOT MODE,我在自己编写的boot中做判断后需要跳转到app中

    1.我应该怎么跳转?

    2.我跳转的app地址为多少?

  • 1.我的思路是否能实现?

    是的,这是可行的。只要你的引导加载程序/应用程序内存管理干净,并且闪存中没有关键的重叠,你就可以使用闪存插件分别对每个闪存库进行编程。可以通过比较每个项目的链接器命令文件来验证这一点。

    2.是否有什么遗漏或者问题,导致我的两个程序都无法正常运行?

    你可以在CCS内存浏览器中确认,在加载引导加载程序和应用程序时,闪存插件正在擦除/编程正确的地址区域。

    或者说,我是否根本不需要使用BMSP来做这个事情,我直接将boot和app的.out合并烧录,然后上电启动boot,如果不需要升级直接跳转app?

    这是正确的,不一定需要配置BMSP来实现你的目标。还可以将固件升级命令支持添加到引导加载程序/应用程序中,并在需要时在两者之间跳转。需要分支到引导加载程序/应用程序的code_start地址。

    有几种方法可以——一种方法是执行C28 Instruction Set中描述的long branch

x 出现错误。请重试或与管理员联系。