OpenEdv-开源电子网

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

请教原子哥:关于F1战舰程序IAP栈顶地址的判断

[复制链接]

4

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
475
金钱
475
注册时间
2016-11-21
在线时间
148 小时
发表于 2022-1-18 16:17:32 | 显示全部楼层 |阅读模式
教程中:

//跳转到应用程序段
//appxaddr:用户代码起始地址.
void iap_load_app(u32 appxaddr)
{
  if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)  //检查栈顶地址是否合法.
  {  
    jump2app=(iapfun)*(vu32*)(appxaddr+4);     
//用户代码区第二个字为程序开始地址(复位地址)     
    MSR_MSP(*(vu32*)appxaddr);           
//初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
    jump2app();    //跳转到APP.
  }
}


而单片机的RAM是64K,范围:0x20000000 - 0x2000FFFF

但是当appxaddr等于0x2001FFFF时,上面的判断显然也是符合的

这个判断是不是有问题?

0x2FFE0000是不是应该改成0x2FFF0000?

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

使用道具 举报

4

主题

17

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
475
金钱
475
注册时间
2016-11-21
在线时间
148 小时
 楼主| 发表于 2022-1-19 11:26:43 | 显示全部楼层
回复 支持 反对

使用道具 举报

1

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
342
金钱
342
注册时间
2016-7-29
在线时间
68 小时
发表于 2022-2-18 19:50:16 | 显示全部楼层
64K SRAM得地址范围为0x2000 0000--->0x2001 0000
用户应用程序如果在SRAM上运行,那么用户应用程序栈顶地址也应当在SRAM地址内
不能超出那个范围
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 08:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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