[STM32H7] 为 H757I-Eval 开发板配置 CMake 项目

[复制链接]
371|10
WHALEE 发表于 2025-11-18 10:35 | 显示全部楼层 |阅读模式
我用 Visual Studio  导入 STM32CubeIDE 项目并将其转换为 CMake 项目,但遇到了一个问题:
Visual Studio 的导入功能仅支持单核开发板,而我手头只有双核开发板;
该功能要求选择 .cproject 文件,我的项目里有两个这样的文件, 每个内核对应一个;
Visual Studio 每次只能导入一个 .cproject 文件,这意味着需要执行两次导入操作,但之后 Visual Studio 会将它们视为两个独立项目,彼此之间没有任何关联。
在 STM32CubeIDE 中,构建项目时可以选择调试配置:例如,为 CM4 内核选择另一个调试端口、配置 “复位时连接”、设置由 CM7 内核为 CM4 内核加载代码等。
每个内核的文件夹中都会生成一个 <project_name> Debug.launch 调试配置文件。
我希望通过 CMake 复现这一功能(利用一个内核启动另一个内核)。
有人知道该如何实现吗?

公羊子丹 发表于 2025-11-23 07:28 | 显示全部楼层
我之前也折腾过 H757 的双核 CMake,后来发现最关键的是把两个内核拆成独立 target,然后再用一个顶层 CMakeLists 去控制依赖。你可以让 CM7 的构建顺序在前,顺便生成 CM4 的 bin,用自定义命令打包成 multi-image。
周半梅 发表于 2025-11-23 07:29 | 显示全部楼层
你检查过 STM32 的 multi-core boot flow 吗?其实 CMake 本身不懂核间关系,要你手动写 post-build 脚本,把 CM4 的固件塞到 CM7 固件里的特定段。VS 的导入功能只是帮你做这些而已。
帛灿灿 发表于 2025-11-23 07:30 | 显示全部楼层
我怀疑你想复现的是 CubeIDE 里那个 “load CM4 by CM7” 的机制。你可以考虑在 CMake 里用 objcopy 把 CM4 的 image 变成 array,然后链接到 CM7 的 Flash 区,全靠 linker script 搞定。
童雨竹 发表于 2025-11-23 07:31 | 显示全部楼层
说个偏门点的方案,我看到有人直接用一个根工程管理两个 ARM-GCC 工程,用 CMake ExternalProject_Add,把两个核的编译拆得更干净,然后再靠 Python 脚本合成最终镜像,你也可以试试。
万图 发表于 2025-11-23 07:32 | 显示全部楼层
你可以先确认两个核心是否共享同一个 startup sequence。CMake 里可以做两个目标,一个 h757_m7,一个 h757_m4,然后在 m7 的 CMake 里 add_custom_command,编译完触发加载 m4 镜像,流程和 CubeIDE 类似。
Wordsworth 发表于 2025-11-23 07:33 | 显示全部楼层
我之前用 VS 的 CMake Tools 插件时也遇到类似问题,VS 把双核项目当成两个独立 workspace。后来我干脆不用 VS 导入,自己写 CMakeLists,把 CubeMX 生成代码当作普通源码引进来,反而更顺。
Bblythe 发表于 2025-11-23 07:34 | 显示全部楼层
要注意调试配置这一块没法完全复制 CubeIDE,你可能要用 OpenOCD 或 ST-LINK CLI 自己写一个 debug.launch 替代方案。CMake 只能负责构建,调试配置你得让 VS 执行外部工具。
Pulitzer 发表于 2025-11-23 07:35 | 显示全部楼层
如果你只是想在 VS 里方便调试,那你可以把两个 .cproject 的设置手动 merge 成一个 CMake preset。虽然麻烦点,但 preset 可以指定不同 toolchain 和 debug command,比 VS 自动导入靠谱。
Uriah 发表于 2025-11-23 07:36 | 显示全部楼层
你看看 linker script 有没有区分 CM7 和 CM4 的共享 RAM 地址?如果地址冲突,VS 导进来之后两个 target 会互相不认识。CMake 里要明确指定每个 target 的链接脚本,否则调试会乱套。
Clyde011 发表于 2025-11-23 07:37 | 显示全部楼层
如果你愿意折腾,我建议先把 CubeIDE 的构建日志打开,把编译、打包、下载的全部命令抄下来。基本上把这些命令搬到 CMake 里就能正常构建双核了,剩下就是 VS 的调试配置问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

68

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部