apache / nuttx

Apache NuttX is a mature, real-time embedded operating system (RTOS)
https://nuttx.apache.org/
Apache License 2.0
2.5k stars 1.06k forks source link

Difficulty in configuring NuttX to enable many features at once #11105

Open cwt opened 8 months ago

cwt commented 8 months ago

I found that the configuration system for NuttX is separated. For example, there are esp32s3-devkit:blewifi, esp32s3-devkit:psram_octal, esp32s3-devkit:smp, esp32s3-devkit:spiflash, etc. There is no official way to enable all of them at once. I struggled for several days to enable one of them as my baseline and then used make menuconfig to enable other features, which ended up in failure. Finally, I had to use the following commands:

$ mkdir boards/xtensa/esp32s3/esp32s3-devkit/configs/cwt
$ cat boards/xtensa/esp32s3/esp32s3-devkit/configs/blewifi/defconfig \
   boards/xtensa/esp32s3/esp32s3-devkit/configs/psram_octal/defconfig \
   boards/xtensa/esp32s3/esp32s3-devkit/configs/smp/defconfig \
   boards/xtensa/esp32s3/esp32s3-devkit/configs/spiflash/defconfig \
   | grep -v "^#" | sort | uniq > boards/xtensa/esp32s3/esp32s3-devkit/configs/cwt/defconfig
$ vim boards/xtensa/esp32s3/esp32s3-devkit/configs/cwt/defconfig  # to remove some unwanted or conflicted options
$ ./tools/configure.sh esp32s3-devkit:cwt
$ make menuconfig  # to fine-tune the options and make changes for MTD offset and size

Is there any easier way to do this?

robertlipe commented 8 months ago

For easily reproducible builds, use kconfig-tweak in a script to turn the flags you want off and on without ever manually touching menuconfig.

https://nuttx.apache.org/docs/latest/quickstart/configuring.html#fast-configuration-changes

You can find examples of scripts doing this in Lup's (excellent) writings on Nuttx:

https://lupyuen.github.io/articles/auto#configure-build