你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32F4,IAP跳转的问题.

[复制链接]
爆爆 提问时间:2023-7-26 15:06 / 未解决

我在做一个IAP, 发现在跳转的时候栈顶指针的值会随着程序的Ram的使用量变化而变化, 多的时候0x20020000多,少的时候0x20010000多. 这样就导致完全没法判断了呀, 万一程序一升级使用的Ram少了那么使用0x20020000来判断不是过不了了吗?

以下是判断程序:

if ((((__IO uint32_t )USER_FLASH_FIRST_PAGE_ADDRESS) & 0x2FFB0000) == 0x20020000) return (1); else return (0);

收藏 评论3 发布时间:2023-7-26 15:06

举报

3个回答
butterflyspring 回答时间:2023-7-26 16:12:23
通常IAP 和 APP 是两个工程编译出来的,所以它们的RAM是不会影响的。
每个工程的栈指针是IDE根据链接文件生成的,也是各自独立的。
所以升级的时候,编译器添加的启动代码会重新分配RAM的。


爆爆 回答时间:2023-7-26 16:49:28

butterflyspring 发表于 2023-7-26 16:12
通常IAP 和 APP 是两个工程编译出来的,所以它们的RAM是不会影响的。
每个工程的栈指针是IDE根据链接文件生 ...

那我这个地方怎么处理比较好呢?

if((((vu32)USER_FLASH_FIRST_PAGE_ADDRESS)&0x2FF00000)==0x20000000) 这样??放宽松点?

butterflyspring 回答时间:2023-7-27 17:34:01

理论上和栈顶指针位置大小没什么关系了。
我看到例程也是这样判断的。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版