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

CUEBIDE生成的APP程序,在写入FLASH之后无法正常跳转。

[复制链接]
Ha~ha~ 提问时间:2025-4-17 18:17 / 未解决

实现IAP的功能,使用CUEBIDE生成的APP程序的bin文件,写入到FLASH之后,无法正常跳转。

程序卡在 / 检查栈顶地址是否合法 /

但是用KEIL生成的bin文件写入后可以正常跳转,并执行。

bootloader应该没有问题,是不是APP程序还缺少配置?

APP程序在main函数的开头添加

SCB->VTOR = APP_Address;

__enable_irq();

在STM32F407ZGTX_FLASH.ld中修改

/ Memories definition /

MEMORY

{

CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K

RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K

FLASH (rx) : ORIGIN = 0x08020000, LENGTH = 896K

}

是不是还漏掉了哪里,网上有关CUEBIDE的历程好像也只修改了这两处。

收藏 评论3 发布时间:2025-4-17 18:17

举报

3个回答
Ha~ha~ 回答时间:前天 18:23

boot loader跳转部分代码:

image.png

image.png

image.png
Ha~ha~ 回答时间:前天 18:23

这里面的文本编辑器为什么这么难用

xmshao 回答时间:昨天 09:10
你不妨确认下栈顶位置、程序存放位置。这些都是在ld文件里的内容。

_estack = ORIGIN(RAM) + LENGTH(RAM);

RAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = xxK
ROM    (rx)    : ORIGIN = 0x08008000,   LENGTH = yyK


然后,检查VTOR的偏移配置,比方:#define VECT_TAB_OFFSET 0x8000

再就是跳转前将中断使能都 禁用掉、保证跳转前没有未处理的中断请求、跳转过程中不会有中断请求发生。


保险起见,跳转前将PLL 也关闭掉。或者在APP端的SystemClock_Config()之前先调用下HAL_RCC_DeInit();

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版