Hi,

at the moment, I am able to build NuttX on FreeBSD for arm (Raspberry
Pi Pico boards and similar, QuickFeather), xtensa (Espressif ESP32 and
ESP32S2) and risc-v (Espressif ESP32C3 and ESP32C6, and PineCone -
BL602 based), some of them with tests on real hardware.

While in general the process is quite easy, there are some annoyances
in the process. All builds follow the same recipe:

1. configure build for the board - standard

tools/configure.sh <board:config>

involved. Nothing special here.

2. do the build itself. As some paths are set differently in FreeBSD,
typical invocation is (example for Raspberry Pi Pico):

gmake CROSSDEV=/usr/local/gcc-arm-embedded-10.3-2021.10/bin/arm-none-eabi- 
PICO_SDK_PATH=/wrk/pico/pico-sdk

This does the build, just with one error message at the start reading

/usr/local/bin/bash: line 1: arm-none-eabi-gcc: command not found

and then the whole build process continues, ending with nuttx file
being created. Error message mentioned seems to be just spurious, it
would be nice to locate where it comes from and fix. Could someone help
me with this, hopefully small, task?

Additionally, for Raspberry Pi Pico, there is one more error message,
this time somewhat serious:

Generating: nuttx.uf2
tools/rp2040/elf2uf2 nuttx nuttx.uf2;
ld-elf.so.1: /usr/local/lib/gcc10/libstdc++.so.6: version GLIBCXX_3.4.29 
required by /wrk/usr/ports/devel/apache-nuttx/work/nuttx/tools/rp2040/elf2uf2 
not found
gmake: *** [tools/Unix.mk:541: nuttx] Error 1

and, consequently, nuttx.uf2 file for uploading to the board is not
prepared. This is not fatal for me, because I can execute command

/wrk/pico/pico-examples/build/elf2uf2/elf2uf2 -v nuttx nuttx.bin.uf2

manually and got it. Again, it would be nice to fix this. In my eyes,
the preferable way for this would be just using already available
elf2uf2 binary, either in path, or, maybe, with explicitly assigned via
some ELF2UF2= assignment. The PICO_SDK_PATH=/wrk/pico/pico-sdk
assignment used above is just for building this binary. I'd prefer to
do it just once as part of working setup preparation and not for every
build, which could be just done the way I mentioned.

3. clean up after build, so I can repeat the process for another
board/configuration combo:

gmake distclean

This does the job, spitting maybe a hundred lines of

/usr/local/bin/bash: line 1: arm-none-eabi-gcc: command not found

Note I am using sources from git as of yesterday. All these errors did
not appear with 12.0.0 source tarball, but started with newer ones, I
tested 12.1.0, 12.2.0 and git newer than that.

The exact message differs depending on the build (and consequently
toolset) used.

At present, I do not know the whole build process that well to dig into
it myself, thus some help, hints, patches to test, all is greatly
appreciated.

Regards,
Milan

Reply via email to