硬汉嵌入式论坛

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

[有问必答] STM32F407 关于IAP程序中检查栈顶地址的问题

[复制链接]

3

主题

2

回帖

11

积分

新手上路

积分
11
发表于 2023-4-5 10:00:44 | 显示全部楼层 |阅读模式

今天使用STM32F407进行IAP功能。烧录一份APP程序的Bin文件在0x8010000的位置,发现在bootloader里,始终跳转不了app,最后发现栈顶地址居然不是0x20000000,而是0x20020000,导致if条件进不去,有望各位前辈能帮助!

bootloader里的跳转函数



APP程序里的栈顶地址


另外补充,APP和Bootloader里的栈空间设为0x2000,堆空间为0x1000,不知是否是这个影响,不过后面都改小了,栈顶地址还是0x20020000
回复

使用道具 举报

3

主题

2

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-4-5 10:04:23 | 显示全部楼层
不知为啥图片没了,这里补上,望前辈们能指点一二
2.png
1.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-4-5 10:45:47 | 显示全部楼层
1、小知识,M内核的栈空间是从高地址向低地址生长,栈首地址当然要是0x20020000
2、这个栈顶监测一点用没有,删掉,自己编译的程序,超了的话,编译器会提醒的。

有时间了学习下我这个bootloader专题视频教程

视频教程第17期:单片机bootloader专题,启动,跳转配置和调试下载的各种用法(2022-06-10)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112792

BSP视频教程第18期:基于NAND,eMMC,SD卡和U盘的BootLoader实战,带CRC完整性校验(2022-06-16)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=113053

BSP视频教程第19期:单片机BootLoader的AES加密实战,含上位机和下位机代码全开源(2022-06-26)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=113361
回复

使用道具 举报

3

主题

2

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-4-5 10:52:41 | 显示全部楼层
eric2013 发表于 2023-4-5 10:45
1、小知识,内核的栈空间是从高地址向低地址生长,栈首地址当然要是0x20020000
2、这个栈顶监测一点用没有 ...

感谢硬汉的解答,我还有一个疑惑,有的程序栈顶地址为0x2000开头,有的是其他的比如这次的0x2002开头,请教一下,这个地址是由什么决定吗
回复

使用道具 举报

3

主题

2

回帖

11

积分

新手上路

积分
11
 楼主| 发表于 2023-4-5 11:12:36 | 显示全部楼层
感谢硬汉哥的解答,还有个疑问,栈顶地址有时候是0x2000开头,有时候是别的开头,比如0x2002,请教一下这个是可以改的吗?
1.png
3.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2023-4-5 11:28:33 | 显示全部楼层
Mking 发表于 2023-4-5 11:12
感谢硬汉哥的解答,还有个疑问,栈顶地址有时候是0x2000开头,有时候是别的开头,比如0x2002,请教一下这个 ...

这个是编译器设置的,当然也可以分散加载自己指定位置。

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 21:17 , Processed in 0.312650 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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