查看: 3919|回复: 6

[已解决] K60中,通过bootloader烧录app程序,bootloadr跳转到烧写首地址

[复制链接]
  • TA的每日心情
    奋斗
    2018-7-20 09:02
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2018-8-31
    发表于 2018-6-28 13:52:09 | 显示全部楼层 |阅读模式
    这样烧写完成之后,jump到首地址,在APP代码部分需要更改什么???为什么我这边通过bootloader写入的代码跳转过去就跑死,完全不执行。

    最佳答案

    路人曦 发表于 2018-6-30 13:42 好吧,问题又回来了,并不能跳转, void iap_load_app(uint32_t appxaddr) { 你APP那边的ld文件是否修改好了?是否把APP的起始地址放到了Bootloader对应的跳转区域?这个很关键。 建 ...
    哎,代码总出bug,签到求保佑!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-6-18 08:45
  • 签到天数: 812 天

    连续签到: 1 天

    [LV.10]以坛为家III

    66

    主题

    4899

    帖子

    64

    金牌会员

    Rank: 6Rank: 6

    积分
    6321
    最后登录
    2025-7-15
    发表于 2018-6-28 16:43:05 | 显示全部楼层
    APP需要偏移中断向量地址
    开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-7-20 09:02
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2018-8-31
     楼主| 发表于 2018-6-29 10:46:13 | 显示全部楼层
    偏移做了,msp跟psp两个栈顶地址的问题,去掉了psp这个函数就正常跳转了。
    哎,代码总出bug,签到求保佑!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-7-20 09:02
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2018-8-31
     楼主| 发表于 2018-6-30 13:42:46 | 显示全部楼层
    好吧,问题又回来了,并不能跳转,
    void iap_load_app(uint32_t appxaddr)
    {
            if(((*(uint32_t*)appxaddr)&0x2FFE0000)==0x20000000)        //检查栈顶地址是否合法.
            {
                    jump2app=(iapfun)*(uint32_t*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)       
                    __set_MSP(*(uint32_t*)appxaddr);                                        //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
                    __set_PSP(*(uint32_t*)appxaddr);
                                                                                    //跳转到APP.
                    SCB->VTOR = appxaddr;            //RA2M_TARGET
                    jump2app();
                    __NOP();
            }
    }                 这是跳转的代码,我通过网络下发数据,然后把数据写到片内flash中,我对比数据跟.bin一样,但是跑到jump后   就不知道跑到那里去了。求大佬指点一下。
    哎,代码总出bug,签到求保佑!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24861
    最后登录
    2025-7-18
    发表于 2018-7-2 10:28:48 | 显示全部楼层
    路人曦 发表于 2018-6-30 13:42
    好吧,问题又回来了,并不能跳转,
    void iap_load_app(uint32_t appxaddr)
    {

    你APP那边的ld文件是否修改好了?是否把APP的起始地址放到了Bootloader对应的跳转区域?这个很关键。
    建议你参考下官方的应用笔记:
    http://www.nxp.com/docs/en/application-note/AN2295.pdf
    31页。
    还有,你要保证你的bootloader的代码大小没有超出你要跳转的地址,否则也会有问题。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-7-20 09:02
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2018-8-31
     楼主| 发表于 2018-7-16 17:48:38 | 显示全部楼层
    小恩GG 发表于 2018-7-2 10:28
    你APP那边的ld文件是否修改好了?是否把APP的起始地址放到了Bootloader对应的跳转区域?这个很关键。
    建 ...

    问题已经解决了。跳转是没有问题的,原因是我用LWIP下发数据的时候   有一包数据错了,所以写到内部Flash 的时候也是错的,所以程序跑不起来,现在已经解决,谢谢!
    哎,代码总出bug,签到求保佑!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-7-20 09:02
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    3

    主题

    17

    帖子

    0

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2018-8-31
     楼主| 发表于 2018-7-16 17:48:44 | 显示全部楼层
    小恩GG 发表于 2018-7-2 10:28
    你APP那边的ld文件是否修改好了?是否把APP的起始地址放到了Bootloader对应的跳转区域?这个很关键。
    建 ...

    问题已经解决了。跳转是没有问题的,原因是我用LWIP下发数据的时候   有一包数据错了,所以写到内部Flash 的时候也是错的,所以程序跑不起来,现在已经解决,谢谢!
    哎,代码总出bug,签到求保佑!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-18 20:53 , Processed in 0.094997 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表