gpt4 book ai didi

c++ - C(嵌入式): Code size does not shrink when commenting FreeRTOS' RootTask

转载 作者:太空宇宙 更新时间:2023-11-04 15:55:28 25 4
gpt4 key购买 nike

我的 FreeRTOS 构造中有一个树形进程/任务架构。 main() 只是创建一个 RootTask(在初始化 HAL 之后),它创建另外两个任务,依此类推。

我目前正在与闪存大小(代码 + 常量,基本上?)作斗争,因此禁用任务(=评论它们)以便向编译器显示大多数翻译单元甚至不需要,以找出哪些模块是最贵。

但是,我已经“评论了我的方式”到 main() 并删除了除 while(1) 循环之外的所有内容。它仍然不适合 128k 闪存。尝试删除所有 C++ 翻译单元,甚至使用 gcc 进行链接;但仍然有 ~100k 的“.text”部分(考虑到应用程序不执行任何操作,此时我可以使用 10k)。

我正在使用 arm-none-eabi-gcc/g++ 5.4.1。链接器脚本由 ST-CubeMX 生成。

海湾合作委员会标志: -mcpu=cortex-m0 -mthumb -Os -s -Wall -Wa -a -ad -alms=build/$(notdir $(<:.c=.lst))

链接器标志: -mcpu=cortex-m0 -specs=nosys.specs -T$(LDSCRIPT) [some-libraries] -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections,--undefined=uxTopUsedPriority,-flto(也由 CubeMX 生成,除了 -flto)

有人可以解释为什么编译器/链接器不从最终二进制文件中删除未使用的代码吗?是否有进一步调查的工具?

如果需要更多信息,请告诉我。

谢谢!

最佳答案

您需要将标志 -ffunction-sections -fdata-sections 传递给编译器 (gcc/g++),以便链接器中的 --gc-sections 工作, 和 -flto 到编译器,以便链接器中的 -flto 可以完成它的工作。

关于c++ - C(嵌入式): Code size does not shrink when commenting FreeRTOS' RootTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58949366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com