打印
[技术求助]

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

[复制链接]
1492|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qq446524378|  楼主 | 2018-5-7 15:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我现在在使用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 里吗
还要堆栈检查了吗

使用特权

评论回复
5
qq446524378|  楼主 | 2018-5-9 08:58 | 只看该作者
airwill 发表于 2018-5-8 16:09
有没有使用中断, 中断服务程序还在 bootload 里吗
还要堆栈检查了吗

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

使用特权

评论回复
6
airwill| | 2018-5-9 16:35 | 只看该作者
那就很奇怪了, 除了看门狗外,猜不到问题了
借助仿真器跟踪吧。看汇编指令到哪条发生了复位

使用特权

评论回复
评论
qq446524378 2018-5-10 14:55 回复TA
看门狗我也排查过 关了还是这样。用仿真器Bootloader完成后会跳转到电控程序里,并且在OS_run里的死循环里执行。一旦我断点取消,继续执行就又复位... 
7
baimiaocun2015| | 2018-5-12 17:08 | 只看该作者
这个重点是看地址的跳转的

使用特权

评论回复
8
firstblood| | 2018-5-12 18:59 | 只看该作者
这个在进行bootloader程序设计的时候就考虑分配好的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝