小库里 发表于 2025-4-14 22:58

将 Atollic TS 项目导入 STM32CubeIDE无法使用 bootloader

tollic TS pdf How-to 中boot程序运行良好(0x0800 0000),可以正常仿真调试应用程序(0x0800 8000)。将项目导入到 STM32CubeIDE,似乎没有从正确的地址开始。当我使用项目从 0x0800 0000 开始的 *.ld 文件时,似乎工作正常。但是一旦我为引导加载程序腾出空间,并在 *.ld 文件中使用地址 0x0800 8000,我就无法调试项目。当我将引导加载程序 和 固件的映像上传到 0x0800 0000 时,设备运行良好。

公羊子丹 发表于 2025-5-28 07:27

我也遇到过类似情况,后来发现 CubeIDE 的调试器默认还是从 0x08000000 启动,要在 .launch 文件或 Debug 配置里手动改下起始地址。

周半梅 发表于 2025-5-28 07:28

你有把 Reset_Handler 的入口地址放在 0x08008000 吗?如果启动地址偏了,可能会跳不到应用程序。

帛灿灿 发表于 2025-5-28 07:29

在 Atollic TS 中你有没有用自定义的启动脚本?如果有的话,导入 CubeIDE 后要确保 .ld 文件和启动文件一致。

童雨竹 发表于 2025-5-28 07:30

你是不是只改了 .ld 文件里的起始地址?记得还要在 Project -> Properties -> C/C++ Build -> Settings -> Tool Settings -> MCU Settings 里也改起始地址!

万图 发表于 2025-5-28 07:31

建议你在 CubeIDE 中把 Debug Configuration 的 Run -> Reset Behavior 改成 “None”,否则它会试图从 bootloader 起始地址重新上电。

Wordsworth 发表于 2025-5-28 07:32

我遇到过 CubeIDE 把 application 的 vector table 还留在 0x8000000 的情况,要用 SCB->VTOR = 0x08008000; 手动重定向。

Bblythe 发表于 2025-5-28 07:32

你可以试试用 ST-LINK Utility 工具分别下载 boot 和 app,然后观察跳转是不是失败,这样可以排除是 IDE 的问题还是代码问题。

Pulitzer 发表于 2025-5-28 07:33

Debug 的时候有没有用 connect under reset?有些 bootloader 会禁止 SWD 接口,只有在 reset 下连接才能调试 app。

Uriah 发表于 2025-5-28 07:34

有时候 CubeIDE 会生成多个 .ld 文件,看看是不是用错了那个 link script 文件,我之前就有一次改错文件了……

Clyde011 发表于 2025-5-28 07:35

能正常运行但无法调试,听起来像是 vector table 或 flash offset 没设置好,可以用 objdump 看看 elf 的偏移位置对不对。

duo点 发表于 2025-5-28 16:16

链接脚本配置错误?

stormwind123 发表于 2025-5-28 18:20

可能在导入过程中文件结构或配置损坏,建议重新导入项目。

flycamelaaa 发表于 2025-5-28 19:00

bootloader和应用程序需要分别烧录到Flash的不同区域。若导入后未正确配置地址,可能导致应用程序覆盖bootloader或两者地址重叠,进而无法使用bootloader。

powerantone 发表于 2025-5-28 19:00

用STM32CubeProgrammer分别烧录bootloader和应用程序到指定的Flash区域。

probedog 发表于 2025-5-28 19:00

若应用程序中未正确实现跳转到bootloader的逻辑,可能导致无法进入bootloader模式。

classroom 发表于 2025-5-28 20:23

BOOT引脚配置错误?

jcky001 发表于 2025-5-28 20:59

可能是硬件连接或启动模式配置问题。

cr315 发表于 2025-5-28 21:00

检查硬件连接,BOOT0引脚在需要进入bootloader时拉高。

t60yz 发表于 2025-5-31 23:39

看着挺简单
页: [1]
查看完整版本: 将 Atollic TS 项目导入 STM32CubeIDE无法使用 bootloader