OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3557|回复: 5

关于IAP一些语句问题

[复制链接]

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-5-21
在线时间
32 小时
发表于 2017-3-30 15:56:31 | 显示全部楼层 |阅读模式
关于IAP方面的问题,if(((*(vu32*)appxaddr)&0xffe0000)==0x20000000)   我不太懂这个条件语句为什么是栈顶地址是否合法的判断,谁能解答解答一下?


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
419
金钱
419
注册时间
2015-9-16
在线时间
122 小时
发表于 2017-3-30 16:07:22 | 显示全部楼层
(vu32*)appxaddr 转换成地址,*(vu32*)appxaddr 取这个地址存的值,再与0xffe0000位与
回复 支持 反对

使用道具 举报

33

主题

984

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8062
金钱
8062
注册时间
2014-8-13
在线时间
1597 小时
发表于 2017-3-30 16:10:50 | 显示全部楼层
if(((*(vu32*)appxaddr)&0xffe0000)==0x20000000)
((*(vu32*)appxaddr)&0xffe0000)==0x20000000
appxaddr应该是个变量,看名字应该表示某个地址
然后(vu32*)appxaddr表示将appxaddr强制转换成vu32*类型,该类型是一个volatile 的无符号32长度(long)数据指针,
再然后(*(vu32*)appxaddr)表示取出指针指示的变量数值。
上面整体的说,就是将appxaddr这个变量中的数值作为地址,然后取出这个地址中的数值(要取32位,并且把这个取出的数值看作无符号的long型)。
再然后就是跟0xFFE0000与一下,看最后结果是否与0x20000000相等。

至于为什么说这条语句判断是否栈顶合法,这要看程序逻辑和MCU的地址分布了。语法上看不出什么来。
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-5-21
在线时间
32 小时
 楼主| 发表于 2017-3-30 16:16:30 | 显示全部楼层
dozm 发表于 2017-3-30 16:07
(vu32*)appxaddr 转换成地址,*(vu32*)appxaddr 取这个地址存的值,再与0xffe0000位与

这个我能理解,我大概不懂的是*(vu32*)appxaddr 这个地址存的值是什么??其次0x20000000是什么不太懂
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2016-5-21
在线时间
32 小时
 楼主| 发表于 2017-3-30 16:40:50 | 显示全部楼层
Roderick 发表于 2017-3-30 16:16
这个我能理解,我大概不懂的是*(vu32*)appxaddr 这个地址存的值是什么??其次0x20000000是什么不太懂

我懂了我懂了  谢谢
回复 支持 反对

使用道具 举报

16

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2015-11-19
在线时间
33 小时
发表于 2017-3-30 22:57:12 | 显示全部楼层
Roderick 发表于 2017-3-30 16:40
我懂了我懂了  谢谢

我还是不懂,函数传进来的地址是0x08010000的话,更好是IAP函数的起始地址,也就是取其实地址的值再与上0x2FFE0000,除非说堆栈栈定的值就是0x20000000吗??还有MSR_MSP(*(vu32*)appxaddr);//初始化堆栈指针又是怎么理解??我看函数里面就是 MSR MSP, r0     BX r14这两条汇编指令而已
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-22 15:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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