qq446524378 发表于 2018-5-7 15:02

关于TMS320F28035的二次Bootloader下载完成后,APP无**常工作

我现在在使用TMS320F28035做二次Bootloader,APP已经写入FLASH里(Bootloader和APP属于不同的FLASH),已经验证过写入并没有问题。

跳转的方式是在APP里把MAIN的地址固定存储在0x3e8000,在需要跳转的时候读取0x3e8000里的内容,当做跳转的地址(测试过,能实现跳转)。

void main()

{

os_init();

os_run();

}

APP的MAIN函数格式

————————————————————————————————————————————————————————————————-——

现在问题来了,跳转到APP里程序会出现复位,又从头开始执行,或者程序的运行指针还在os_run中(里面是个死循环),但是APP得功能却不正常。

现在我认为可能出现的原因有两个:

1.跳转的方式不对。这次方式是我自己想出来的,也不知道是否很好,有没有缺陷。

2.内存分配有问题。我只对FLASH进行分配(Bootloader程序和APP程序存储的位置不重叠),其余的并未作出分配。

希望大家能给我解决困惑。

airwill 发表于 2018-5-7 21:20

注意一下中断向量和堆栈。
再检查一下吧

qq446524378 发表于 2018-5-8 08:37

airwill 发表于 2018-5-7 21:20
注意一下中断向量和堆栈。
再检查一下吧

你好:
中断向量我看了一下,它是不在FLASH区域。它存放在独立的区域BOOT ROM(出厂就固化好的),我不知道这种情况下怎么分割开。堆栈我已经把BOOTLOADER和APP的分隔开,问题还是没有解决。

airwill 发表于 2018-5-8 16:09

有没有使用中断, 中断服务程序还在 bootload 里吗
还要堆栈检查了吗

qq446524378 发表于 2018-5-9 08:58

airwill 发表于 2018-5-8 16:09
有没有使用中断, 中断服务程序还在 bootload 里吗
还要堆栈检查了吗

电控程序使用到中断了,中断服务程序是在电控程序里。Bootloader并没有中断。
堆栈检查了,BootLoader和应用程序的堆栈都分开了。

airwill 发表于 2018-5-9 16:35

那就很奇怪了, 除了看门狗外,猜不到问题了
借助仿真器跟踪吧。看汇编指令到哪条发生了复位

baimiaocun2015 发表于 2018-5-12 17:08

这个重点是看地址的跳转的

firstblood 发表于 2018-5-12 18:59

这个在进行bootloader程序设计的时候就考虑分配好的

786583261 发表于 2025-4-17 13:10

你好大佬,很冒昧打扰您,我现在做28035的二阶bootloader时,现在也是出现此类问题,在跳转时,会进入非法中断。这个是什么原因?是我的CMD设置的有问题吗?APP程序单刷可以正常运行。我用的是BIN文件下载的,读取地址,H区写进去了,而且最后进行了和校验,文件发送没有问题,还是我的bin文件可能存在问题?
页: [1]
查看完整版本: 关于TMS320F28035的二次Bootloader下载完成后,APP无**常工作