Closed AEFeinstein closed 1 year ago
Hi @AEFeinstein
I'm sorry, this config is currently broken on v5.0
. It's been fixed on master/v5.1-dev
in 38dec0be489f2caffdc4683c28504af285ad9321
That commit also adds support for non-lwip configuration, you can check this test which validates the build without lwIP.
Separately, if there is a better way to disable networking components and save RAM & ROM for projects that do not require networking, I would love to know how.
You can try to reduce the number of components to explicitly include only those that your project needs:
set(COMPONENTS main ... ) # add only components that you use
(similar to our host-build config)
But that would IMO reduce just the build time, since if your project doesn't call those API of certain component it should be removed and won't consume RAM & ROM of your project binary. So the short answer is "no need to disable the component's build, it's just enough not to use their API"
I'd recommend reading this: Minimizing Binary Size
and using idf.py/size
related tooling:
idf.py size-components
idf_size.py --files build/project.map
idf_size.py --archives build/project.map
Thanks for fixing this in v5.1-dev
and thanks for the tip about explicitly including components!
I had read the Minimizing Binary Size page before. Maybe my own memory is fuzzy, but I remember IDF 4.4 not removing as much stuff as IDF 5.0. It was also an oddball project that used ESP-NOW, but not WiFi. I'll figure it out 😃
It's not in v5.0.1
, but you said v5.1
, so I'll wait for that.
Backported as a3ca732e5d78de9cf1bdfd1d174a3540e6437845
Answers checklist.
IDF version.
v5.0
Operating System used.
Windows
How did you build your project?
Command line with idf.py
If you are using Windows, please specify command line type.
PowerShell
What is the expected behavior?
I expect to be able to build the hello_world example after using
idf.py menuconfig
to disable networking components.What is the actual behavior?
The project fails to build.
Steps to reproduce.
idf.py menuconfig
to disable networking components. My fulldefconfig
andsdkconfig
files are posted belowidf.py build
Build or installation Logs.
More Information.
The solution is to wrap
/components/esp_netif/lwip/esp_netif_lwip_ppp.h
inThis is necessary because
esp_netif_lwip_internal.h
is already wrapped inCONFIG_ESP_NETIF_TCPIP_LWIP
which is causingnetif_related_data_t
to be undefined during build. With this change to the IDF, the project compiles and runs.Separately, if there is a better way to disable networking components and save RAM & ROM for projects that do not require networking, I would love to know how.
defconfig
:sdkconfig
: