查看: 10108|回复: 13

[求助] kea128 can bootloader的用户程序的中断向量偏移问题

[复制链接]

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
发表于 2016-9-5 14:18:37 | 显示全部楼层 |阅读模式
各位,你们好。
最近在做KEAZ128的can bootloader,用户程序是基于PE配置的,中断向量表总是偏移不对,按照例程中用户程序的配置文件中的memorry进行了修改,但是完全不行,看仿真结果的话,应该是中断向量的偏移没做对,那这个基于PE配置的中断向量表偏移需要特殊注意什么问题吗?

PS:再问一个小问题,关于在NXP官网找类似于AN47xx.pdf的文件怎样来找?搜索不到?

互帮互助,谢谢
我知道答案 目前已有13人回答
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24853
最后登录
2025-7-17
发表于 2016-9-5 14:24:58 | 显示全部楼层
请问你的bootloader 程序可以完成正常的应用程序更新及完成后,实现跳转吗?
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2016-9-5 15:03:54 | 显示全部楼层
小恩GG 发表于 2016-9-5 14:24
请问你的bootloader 程序可以完成正常的应用程序更新及完成后,实现跳转吗? ...

程序可以下进去,只是执行跳转的时候我看仿真的数据不对,下例程的时候仿真数据 pJumpTo 的值是0x4285好像,那个例程的灯闪烁应该是没问题的,下我自己基于PE配置的程序  pJumpTo的值是0xfffff000好像,感觉应该是中断向量偏移错误,但是我linkfile中memorry的配置已经修改了,所以感觉很纳闷
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2016-9-6 08:38:40 | 显示全部楼层
没有路过的朋友,来指点迷津?谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24853
最后登录
2025-7-17
发表于 2016-9-6 09:39:00 | 显示全部楼层
本帖最后由 小恩GG 于 2016-9-6 09:40 编辑
number573 发表于 2016-9-5 15:03
程序可以下进去,只是执行跳转的时候我看仿真的数据不对,下例程的时候仿真数据 pJumpTo 的值是0x4285好 ...

bootloader程序主要实现用于应用代码更新,并在完成后跳转到更新后的代码执行,那你现在的问题是在第二部分出了问题了,即代码更新后无法实现正常跳转吗?
因为你上面讲的,我还是不是很清楚你的问题
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2016-9-6 16:18:01 | 显示全部楼层
小恩GG 发表于 2016-9-6 09:39
bootloader程序主要实现用于应用代码更新,并在完成后跳转到更新后的代码执行,那你现在的问题是在第二部 ...

版主,你好,应该是你所说的无法正常跳转。我仿真用例程的话,pJumpTo = *pNewAppEntry; 后pJumpTo的值是0x4285,程序工作正常。而用下载我自己用PE配置的用户程序,并修改了LinkFile文件后的程序,仿真bootloader程序到pJumpTo的值是0xffff ffff,这个应该是不对的,整了两天的这个了,还是没弄清楚到底是哪没做好,版主有主意吗?
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2016-9-7 09:28:50 | 显示全部楼层
第三天,继续整
回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2016-9-7 09:30:14 | 显示全部楼层
第三天,继续整
回复 支持 反对

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24853
最后登录
2025-7-17
发表于 2016-9-7 10:35:21 | 显示全部楼层
number573 发表于 2016-9-6 16:18
版主,你好,应该是你所说的无法正常跳转。我仿真用例程的话,pJumpTo = *pNewAppEntry; 后pJumpTo的值是 ...

不对,正常的话bootloader是要跳转到应用程序存放的地方,比如使用如下代码,你可以参考AN2295看看bootloader跳转到application的过程和细节。AN2295:
http://cache.nxp.com/zh-Hans/fil ... app_note/AN2295.pdf
  1. //-----------------------------------------------------------------------------
  2. // FUNCTION:    JumpToUserApplication
  3. // SCOPE:       Bootloader application system function
  4. // DESCRIPTION: The function startup user application
  5. //              
  6. // PARAMETERS:  pointer on user vector table
  7. //              
  8. // RETURNS:     function never go back
  9. //-----------------------------------------------------------------------------  

  10. void JumpToUserApplication(LWord userSP, LWord userStartup)
  11. {
  12.         // set up stack pointer
  13.   __asm("msr msp, r0");
  14.   __asm("msr psp, r0");

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



回复 支持 反对

使用道具 举报

该用户从未签到

14

主题

64

帖子

0

注册会员

Rank: 2

积分
147
最后登录
2018-9-28
 楼主| 发表于 2016-9-7 12:11:41 | 显示全部楼层
小恩GG 发表于 2016-9-7 10:35
不对,正常的话bootloader是要跳转到应用程序存放的地方,比如使用如下代码,你可以参考AN2295看看bootlo ...

你好,你这个代码是哪个上面的?我用keaz128的bootloader例程,只有一句话跳转是pJumpto();
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-18 06:20 , Processed in 0.111940 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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