查看: 845|回复: 2

[求助] mqx_lite架构怎么实现中断向量表的重定位?

[复制链接]

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
25
最后登录
2019-5-10
发表于 2019-5-5 15:27:29 | 显示全部楼层 |阅读模式
我想在kw01上能够运行以0x8000地址为起点的程序
在0x0000处烧了一个程序,在一个任务中把指针跳转到0x8000

typedef  void (*pFunction)(void);
    uint32_t app_start_addr = 0x00008000;
    pFunction jump_to_application;// 函数指针
    uint32_t jump_addr;
    jump_addr = *(  uint32_t*)(app_start_addr + 4);//RESET中断
    jump_to_application =(pFunction )jump_addr;
    __set_MSP(*(volatile uint32_t*)app_start_addr );//设置主栈地址
    jump_to_application();//   跳转到新程序的 RESET处执行

然后打算再在0x8000里的程序设置中断向量表的重定位
也就是设置scb->vtor=0x00008000;

但是一直运行在0x0000处的程序,跑不到后面的内容,请问这是为什么?
我知道答案 目前已有2人回答
回复

使用道具 举报

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20028
最后登录
2024-4-26
发表于 2019-5-6 09:57:20 | 显示全部楼层
从你的代码上看,应该是可以完成跳转动作的,现在你说没有跳转成功,那具体表现是怎样呢,程序是还能正常运行存储起始地址在0x0000的程序呢,还是卡在跳转的程序的某处呢?
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
25
最后登录
2019-5-10
 楼主| 发表于 2019-5-9 21:05:45 | 显示全部楼层
重新运行了0x00000000的程序。
我在一个任务中加入了小灯闪烁几下以及上面的代码,在0x00008000里烧入了led闪烁时间不同的代码。然后运行的表现是一直按照0x000000位置的闪烁时间闪烁不停。如果进入了0x00008000应该会闪烁停止毕竟我没有设不停循环。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 16:00 , Processed in 0.125798 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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