查看: 7127|回复: 9

[S32] s32k144 bootloader后无法跳转到应用程序

[复制链接]

该用户从未签到

1

主题

5

帖子

0

新手上路

Rank: 1

积分
34
最后登录
2019-4-26
发表于 2019-1-23 13:27:43 | 显示全部楼层 |阅读模式
程序下载完之后不能跳转运行 还需要设置什么吗?

最佳答案

优化问题,将优化调成0或者将跳转函数声明修改成 static void JumpToUserApplication(uint32_t sp, uint32_t pc) __attribute__((optimize("O0")));
回复

使用道具 举报

该用户从未签到

723

主题

6382

帖子

0

超级版主

Rank: 8Rank: 8

积分
25491
最后登录
2025-9-9
发表于 2019-1-23 17:42:31 | 显示全部楼层
你是怎么跳转的呢?我看有什么地方不对或者可以补充的
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

5

帖子

0

新手上路

Rank: 1

积分
34
最后登录
2019-4-26
 楼主| 发表于 2019-1-28 09:36:03 | 显示全部楼层
bootloader跳转相关代码

  1. #define APP_START_ADDRESS        0x4000

  2. void JumpToUserApplication( unsigned int userSP,  unsigned int userStartup);

  3. void JumpToUserApplication( unsigned int userSP,  unsigned int userStartup)
  4. {
  5.         /* Check if Entry address is erased and return if erased */
  6.         if(userSP == 0xFFFFFFFF){
  7.                 return;
  8.         }

  9.         /* Set up stack pointer */
  10.         __asm("msr msp, r0");
  11.         __asm("msr psp, r0");

  12.         /* Relocate vector table */
  13.         S32_SCB->VTOR = (uint32_t)APP_START_ADDRESS;

  14.         /* Jump to application PC (r1) */
  15.         __asm("mov pc, r1");
  16. }
复制代码


应用程序

  1. MEMORY
  2. {
  3.   /* Flash */
  4.   m_interrupts          (RX)  : ORIGIN = 0x00004000, LENGTH = 0x00000400
  5.   m_flash_config        (RX)  : ORIGIN = 0x00004400, LENGTH = 0x00000010
  6.   m_text                (RX)  : ORIGIN = 0x00004410, LENGTH = 0x0017EBF0

  7.   /* SRAM_L */
  8.   m_data                (RW)  : ORIGIN = 0x1FFE0000, LENGTH = 0x00020000

  9.   /* SRAM_U */
  10.   m_data_2              (RW)  : ORIGIN = 0x20000000, LENGTH = 0x0001F000
  11. }
复制代码


现在无法跳转,是不是还要设置其他地方
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

12

帖子

2

注册会员

Rank: 2

积分
69
最后登录
2019-2-27
发表于 2019-1-29 16:58:12 | 显示全部楼层
        JumpToPtr pJumpTo;
        volatile unsigned int avoid_Optimization;

        /* Check if Entry address is erased and return if erased */
        if(userSP == 0xFFFFFFFF){
                return;
        }
        avoid_Optimization = userSP;
        avoid_Optimization = userStartup;
        /* Set up stack pointer */
        __asm("msr msp, r0");
        __asm("msr psp, r0");

//        /* Relocate vector table */
        S32_SCB->VTOR = (uint32_t)APP_START_ADDRESS;
//
//        /* Jump to application PC (r1) */
//        __asm("mov pc, r1");
        pJumpTo = *((unsigned int *)(APP_START_ADDRESS+4));
        pJumpTo();

评分

参与人数 1 +1 收起 理由
NXP管管 + 1

查看全部评分

回复 支持 反对

使用道具 举报

  • TA的每日心情
    无聊
    2019-3-20 09:46
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    9

    主题

    23

    帖子

    0

    注册会员

    Rank: 2

    积分
    124
    最后登录
    2019-4-18
    发表于 2019-1-31 09:09:49 | 显示全部楼层
    您好。请问您的bootloader程序弄好了吗?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    34
    最后登录
    2019-4-26
     楼主| 发表于 2019-2-1 09:04:33 | 显示全部楼层
    XDLH 发表于 2019-1-29 16:58
    JumpToPtr pJumpTo;
            volatile unsigned int avoid_Optimization;

    还是不行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    34
    最后登录
    2019-4-26
     楼主| 发表于 2019-2-1 09:04:49 | 显示全部楼层
    守望那份孤独 发表于 2019-1-31 09:09
    您好。请问您的bootloader程序弄好了吗?

    能下载不能跳转
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-3-9 21:22
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    3

    主题

    14

    帖子

    1

    注册会员

    Rank: 2

    积分
    140
    最后登录
    2021-3-30
    发表于 2019-2-14 16:53:07 | 显示全部楼层
    楼主你好!请问你是用串口下载吗?我串口下载不了!能说说你的串口是怎么配置的吗?我的串口TX 连接到 评估板的J4-04(PTC6), RX 连接到 评估板的J4-02(PTC7),下载不成功!

    评分

    参与人数 1 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    无聊啊!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    34
    最后登录
    2019-4-26
     楼主| 发表于 2019-2-18 10:19:01 | 显示全部楼层
    用串口下载的 自己做的板子 串口的 2--3 3--2 5--5  就可以了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    12

    帖子

    1

    注册会员

    Rank: 2

    积分
    119
    最后登录
    2022-3-22
    发表于 2019-3-6 16:07:11 | 显示全部楼层
    优化问题,将优化调成0或者将跳转函数声明修改成
    static void JumpToUserApplication(uint32_t sp, uint32_t pc) __attribute__((optimize("O0")));

    评分

    参与人数 1 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-10 20:18 , Processed in 0.116152 second(s), 32 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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