硬汉嵌入式论坛

 找回密码
 立即注册
查看: 843|回复: 3
收起左侧

[有问必答] FreeRTOS裁剪问题+可执行程序大小问题

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2024-5-31 00:08:03 | 显示全部楼层 |阅读模式
前辈们好,我是刚刚学习FreeRTOS的小白。有个问题在网上一直找不到准确的答案,希望各位大佬能帮我解答下我的疑惑,感谢!

最近刚好接触到FreeRTOS的裁剪,了解到裁剪其实就是FreeRTOS通过条件编译让“不需要用到的代码、变量、结构体等”不参与编译,来减少需要用到的RAM或ROM。
但是我有个疑惑:
首先可执行程序的大小会受代码段的影响,代码段越多则可执行程序的大小越大。
假设我在代码编写中没有使用到FreeRTOS里的软件定时器,但是我还是在Keil工程中添加了timer.c源文件,且没有在FreeRTOSConfig.h中将软件定时器对应的宏置0。
所以问题是:在代码中定义了软件定时器的变量、结构体、函数等内容,却又不使用/调用,那么在最后链接完生成可执行程序时,会不会包含软件定时器的代码段等内容,也就是说可执行程序会不会变大,即使我没有使用这些内容。
(因为我刚学不久,对于程序的编译、链接等不是很熟悉,所以搞不清楚,在网上查了后,有的人说编译器会优化掉,有的人说不会,导致我很迷茫)
(此外还有一个问题:在Keil工程中添加.c源文件,是不是意味着会对该文件进行编译)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-5-31 14:30:12 | 显示全部楼层
现在的编译都可以正常将没有用到的代码优化掉的。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-5-31 16:59:35 | 显示全部楼层
eric2013 发表于 2024-5-31 14:30
现在的编译都可以正常将没有用到的代码优化掉的。

好的谢谢佬哥,优化掉是不是这些代码段就不会出现在可执行程序中了,我的疑问是既然这样的话,那我对FreeRTOS进行裁剪好像变得没有意义了,因为最终编译器都会优化掉没用到的代码。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-6-1 08:29:34 | 显示全部楼层
AnPi 发表于 2024-5-31 16:59
好的谢谢佬哥,优化掉是不是这些代码段就不会出现在可执行程序中了,我的疑问是既然这样的话,那我对Free ...

要和编译器优化配置使用。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-4-26 04:49 , Processed in 0.361791 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表