硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1896|回复: 4
收起左侧

IAP地址跳转问题

[复制链接]

3

主题

9

回帖

18

积分

新手上路

积分
18
发表于 2018-2-26 11:33:18 | 显示全部楼层 |阅读模式
if (((*(__IO u32*)Jump_Address) & 0x2FFE0000 ) == 0x20000000) 跳转结果一直是00x20020000,我的RAM地址开始在0x20000000,为什么?
()6VW6D0AF$`BY$[_%ZAEX2.png
()6VW6D0AF$`BY$[_%ZAEX2.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107308
QQ
发表于 2018-2-26 11:40:05 | 显示全部楼层
跳转的首地址是栈顶位置,设置主堆栈MSP用的。
这个地址+4才是你的程序入口地址。

另外这个判断
if (((*(__IO u32*)Jump_Address) & 0x2FFE0000 ) == 0x20000000) 可以删掉,没用。他就是判断你的APP程序中RAM是不是超了。这个都不需要判断,因为我们的APP已经测试过。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2018-2-26 13:15:30 | 显示全部楼层
*(__IO u32*)Jump_Address) & 0x2FFE0000  的结果是固定还是还是与APP程序大小相关?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107308
QQ
发表于 2018-2-26 13:19:26 | 显示全部楼层
aven 发表于 2018-2-26 13:15
*(__IO u32*)Jump_Address) & 0x2FFE0000  的结果是固定还是还是与APP程序大小相关?

他的这个判断就是判断你的RAM超过0x10000了没。0x10000就是芯片的RAM大小。
回复

使用道具 举报

3

主题

9

回帖

18

积分

新手上路

积分
18
 楼主| 发表于 2018-2-26 13:50:19 | 显示全部楼层
了解,谢谢
回复

使用道具 举报

74

主题

1206

回帖

1428

积分

至尊会员

积分
1428
发表于 2019-11-11 11:18:05
eric2013 发表于 2018-2-26 11:40
跳转的首地址是栈顶位置,设置主堆栈MSP用的。
这个地址+4才是你的程序入口地址。

说的很对,~~

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-25 11:46 , Processed in 0.250550 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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