查看: 13615|回复: 7

[S32] 关于S32K144的Bootloader部分问题

[复制链接]
  • TA的每日心情
    开心
    2018-11-23 14:51
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    7

    主题

    63

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    299
    最后登录
    2019-1-2
    发表于 2018-4-12 20:55:24 | 显示全部楼层 |阅读模式
    基本步骤将Bootloader程序烧写至板子,接收应用程序代码->擦、写flash->开始执行应用程序
    最近搞这个搞晕了,程序总是在执行完跳转之后停在Reset_Handler,再继续就复位了,不知是什么原因,怀疑是相关地址写错,
    有3个问题想请教下:

    写Bootloader时,Bootloader程序对应的Linker File(.ld文件)(未做修改):
      /* Flash */
      m_interrupts          (RX)  : ORIGIN = 0x00000000, LENGTH = 0x00000400
      m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
      m_text                (RX)  : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0

    1.编写应用程序时,应用程序对应的Linker File(.ld文件)是否改为如下(A:可以改动如下,B:不修改,同上):
    /* Flash */
    m_interrupts          (RX)  : ORIGIN = 0x00006000, LENGTH = 0x00000400
    m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
    m_text                (RX)  : ORIGIN = 0x00006400, LENGTH = 0x00079C00

    2.串口将应用程序代码数据流发送,Bootloader程序接收,擦、写Flash,假设从0x7000开始写入,
    最后在跳转前设置中断重定向寄存器:
    FSL_SCB->VTOR = (uint32_t)0x_ _ _ _,针对Linker File(.ld文件)和写入位置,这里的地址应该填多少

    3.最后跳转__asm__("b 0x_ _ _ _");
    跳转地址应该是多少呢,假设应用程序(00001188 <main>:;0000046c <Reset_Handler>:;)


    最佳答案

    编写bootloader的时候,其实思想差不多。 回答你的几个问题: 1.编写应用程序时,应用程序对应的Linker File(.ld文件)是否改为如下(A:可以改动如下,B:不修改,同上): /* Flash */ m_interrupts   &n ...
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25491
    最后登录
    2025-9-9
    发表于 2018-4-16 09:45:31 | 显示全部楼层
    编写bootloader的时候,其实思想差不多。
    回答你的几个问题:
    1.编写应用程序时,应用程序对应的Linker File(.ld文件)是否改为如下(A:可以改动如下,B:不修改,同上):
    /* Flash */
    m_interrupts          (RX)  : ORIGIN = 0x00006000, LENGTH = 0x00000400
    m_flash_config        (RX)  : ORIGIN = 0x00000400, LENGTH = 0x00000010
    m_text                (RX)  : ORIGIN = 0x00006400, LENGTH = 0x00079C00

    答: APP 的m_flash_config也偏移掉。

    2.串口将应用程序代码数据流发送,Bootloader程序接收,擦、写Flash,假设从0x7000开始写入,
    最后在跳转前设置中断重定向寄存器:
    FSL_SCB->VTOR = (uint32_t)0x_ _ _ _,针对Linker File(.ld文件)和写入位置,这里的地址应该填多少
    答:这个地址就是你bootloader的偏移地址,也就是app的起始地址,你上面app偏移的是0X6000,这里也要同样操作。
    3.最后跳转__asm__("b 0x_ _ _ _");
    跳转地址应该是多少呢,假设应用程序(00001188 <main>:;0000046c <Reset_Handler>:;)
    答: SP, PC都要跳转到你APP的相关地址去。
    另外,你需要注意下,你要保证bootloader偏移地址和APP一致,还有就是bootloader生成的代码大小不能超出你APP的偏移地址。
    回复 支持 1 反对 0

    使用道具 举报

    该用户从未签到

    0

    主题

    6

    帖子

    1

    注册会员

    Rank: 2

    积分
    58
    最后登录
    2020-12-14
    发表于 2018-4-18 08:51:24 | 显示全部楼层
    请问一下,为什么S32K144应用程序修改了Linker File(.ld文件),但是我没有用Boot更新,只是用PE烧写程序调试,为什么上电重启后软件无法运行?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    723

    主题

    6382

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    25491
    最后登录
    2025-9-9
    发表于 2018-4-23 09:54:19 | 显示全部楼层
    puedue 发表于 2018-4-18 08:51
    请问一下,为什么S32K144应用程序修改了Linker File(.ld文件),但是我没有用Boot更新,只是用PE烧写程序调 ...

    这个应该和IDE有关,不知道你用的什么IDE?S32KDS吗?这个IDE不能支持,所以一般我都是在偏移地址0调好之后再偏移过去,不过MDK好像是可以直接运行的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    6

    帖子

    1

    注册会员

    Rank: 2

    积分
    58
    最后登录
    2020-12-14
    发表于 2018-4-24 15:56:46 | 显示全部楼层
    小恩GG 发表于 2018-4-23 09:54
    这个应该和IDE有关,不知道你用的什么IDE?S32KDS吗?这个IDE不能支持,所以一般我都是在偏移地址0调好之 ...

    是用S32K DS,非常感谢了!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-8-27 09:55
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    6

    帖子

    0

    新手上路

    Rank: 1

    积分
    32
    最后登录
    2018-11-2
    发表于 2018-8-18 23:41:17 来自手机 | 显示全部楼层
    puedue 发表于 2018-4-24 15:56
    是用S32K DS,非常感谢了!

    能否把你的源代码分享下,参考一下,谢谢!或者发邮箱也可以chengxueyuan0210@163.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    12

    帖子

    2

    注册会员

    Rank: 2

    积分
    69
    最后登录
    2019-2-27
    发表于 2019-1-10 14:55:23 | 显示全部楼层
    小恩GG 发表于 2018-4-23 09:54
    这个应该和IDE有关,不知道你用的什么IDE?S32KDS吗?这个IDE不能支持,所以一般我都是在偏移地址0调好之 ...

    你好,在没有烧写Bootloader情况下,编译器S32D V2,App程序也是改了linker的地址,App程序仿真正常仿真时正常运行,但是上电重启后,软件不运行。这个确定是编译器原因吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    30
    最后登录
    2019-4-11
    发表于 2019-4-10 19:33:59 | 显示全部楼层
    XDLH 发表于 2019-1-10 14:55
    你好,在没有烧写Bootloader情况下,编译器S32D V2,App程序也是改了linker的地址,App程序仿真正常仿真 ...

    我也遇到同样的问题,请问是什么原因,怎么解决?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-10 22:43 , Processed in 0.112085 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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