[其他ST产品] 使用STM32CubeMX生成CMake工程中的FLASH.ld被更改的问题

[复制链接]
1099|15
 楼主| 两只袜子 发表于 2025-1-6 14:28 | 显示全部楼层 |阅读模式

使用STM32CubeMX生成CMake工程之后,对STM32xxxx_FLASH.ld进行了修改。然后再次使用STM32CubeMX对工程进行修改的时候,STM32xxxx_FLASH.ld文件汇总被修改的部分会被恢复原状。请问各位有没有好的办法能够解决这个问题,烦请指教!!!
classroom 发表于 2025-1-6 14:51 | 显示全部楼层
用STM32CubeMX的“User Code”区域
probedog 发表于 2025-1-6 14:55 | 显示全部楼层
分离工程配置和自定义代码
laocuo1142 发表于 2025-1-6 15:00 | 显示全部楼层
手动管理链接脚本
powerantone 发表于 2025-1-6 16:23 | 显示全部楼层
使用版本控制工具(如Git)来跟踪你的代码更改历史。
在对STM32xxxx_FLASH.ld文件进行修改后,提交更改到版本控制系统中。
如果在后续使用STM32CubeMX重新生成代码导致链接脚本被覆盖,你可以从版本控制系统中恢复之前的版本。
classroom 发表于 2025-1-7 14:00 | 显示全部楼层
在对STM32xxxx_FLASH.ld文件进行修改之前,先备份一份原始的链接脚本文件。
如果在后续过程中需要重新生成代码并恢复原始的链接脚本设置,可以使用备份的文件进行恢复。
将爱藏于深海 发表于 2025-2-12 01:19 | 显示全部楼层
在使用STM32CubeMX生成CMake工程后,如果你对STM32xxxx_FLASH.ld文件进行了修改,并在之后再次使用STM32CubeMX对工程进行修改,那么STM32xxxx_FLASH.ld文件中被修改的部分确实有可能会被恢复原状。这是因为STM32CubeMX在重新生成代码时,会根据其内部的配置重新生成链接脚本文件

春日负喧 发表于 2025-2-12 02:29 | 显示全部楼层
STM32CubeMX生成的代码中,有一些区域是留给用户添加自定义代码的,这些区域在重新生成代码时不会被覆盖

故意相遇 发表于 2025-2-12 03:29 | 显示全部楼层
你可以在链接脚本文件中找到或创建类似的User Code”区域,将你的自定义修改放在这些区域内

温室雏菊 发表于 2025-2-12 04:39 | 显示全部楼层
需要注意的是,链接脚本文件(如.ld文件)通常不是由STM32CubeMX直接生成的,而是由STM32CubeMX配置后,由底层的构建系统(如MakefileCMake)根据配置和模板生成的

白马过平川 发表于 2025-2-12 05:29 | 显示全部楼层
一般来说,你可能需要手动在生成的链接脚本文件中添加或修改User Code”区域,并确保这些区域在重新生成时不会被覆盖

风凉 发表于 2025-2-12 06:39 | 显示全部楼层
将链接脚本文件从STM32CubeMX的生成过程中分离出来,改为在外部进行管理

西洲 发表于 2025-2-12 07:39 | 显示全部楼层
其实你可以手动创建和编辑链接脚本文件,并将其包含在你的构建系统中(如CMakeLists.txt)。这样,即使你重新使用STM32CubeMX对工程进行修改并生成代码,也不会影响到你手动管理的链接脚本文件

捧一束彼岸花 发表于 2025-2-12 08:39 | 显示全部楼层
在修改链接脚本文件之前,先备份原始文件。同时,使用版本控制工具(如Git)来跟踪代码的更改历史。这样,即使重新生成代码导致某些修改丢失,你也可以通过版本控制工具找回之前的版本,并重新应用你的修改

她已醉 发表于 2025-2-12 09:31 | 显示全部楼层
你可以尝试找到STM32CubeMX生成代码时使用的模板文件,并修改这些模板以包含你的自定义链接脚本内容。然而,这种方法需要对STM32CubeMX的内部工作机制有深入的了解,并且可能会随着STM32CubeMX的更新而失效

失物招領 发表于 2025-2-12 10:49 | 显示全部楼层
被改 一般都是你修改cubemx才会被修改吧,但你得有擅长修改链接文件的基础才行,不然估计会很难

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

本版积分规则

2122

主题

8121

帖子

11

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