On Wed, 16 Aug 2023 14:32:23 +0200
Bernd Walter <ti...@cicely7.cicely.de> wrote:

> On Wed, Aug 16, 2023 at 11:18:19AM +0200, Milan Obuch wrote:
> > 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.  
> 
> 
> I run into that problem as well.
> It is very specific to the RP2040 build and Nuttx compiles some kind
> of tool, but uses a disfunctional GCC version, because it doesn't use
> the system compiler.
> Unfortunately the broken compiler is a dependency of the xtensa
> compiler toolchain.
> So you either have the xtensa build tools or you compile for RP2040.
> 
> This is my local workaround:
> diff --git a/contrib/nuttx/tools/rp2040/Makefile.host
> b/contrib/nuttx/tools/rp2040/Makefile.host index
> 32717c11f7..aada7f9709 100644 ---
> a/contrib/nuttx/tools/rp2040/Makefile.host +++
> b/contrib/nuttx/tools/rp2040/Makefile.host @@ -28,7 +28,7 @@ CFLAGS =
> -O2 -std=c++14 CFLAGS +=
> -I$(PICO_SDK_PATH)/src/common/boot_uf2/include 
>  elf2uf2: $(PICO_SDK_PATH)/tools/elf2uf2/main.cpp
> -       @g++ $(CFLAGS) -o $@ $<
> +       @c++ $(CFLAGS) -o $@ $<
>  
>  clean:
>         @rm -f *.o *.a *.dSYM *~ .*.swp
> 

Thanks, I suspected something like this, I did not analyzed it
thoroughly. I can live with this now, as I use jail for NuttX builds, I
can as easily use additional one for RP2040... I'll see later.

Regards,
Milan

Reply via email to