Hi David, On 2024-02-14 21:43:02, David Demelier wrote: > On Sun, 2024-02-11 at 13:32 +0800, Sadeep Madurange wrote: > > Has anyone set up the ESP-IDF for programming ESP32 MCUs? > > > > Should I install dependencies like libmpc using pkg_add, and then > > install the ESP-IDF from their GitHub or put things together using > > xtensa-esp32-elf/* ports and use CMake without the ESP-IDF? > > OpenBSD ports team did a great job building xtensa-/riscv32- > toolchains in the tree. You can use it as-is to build an image file an > ESP32 MCU, but just like that you'll end up with bare metal code and > have to write lot of things to do basic things, but it's doable. > > Unfortunately the version of these toolchains in the tree are not > compatible with esp-idf 5.1.2, in fact espressif provide toolchains > that are versioned against specific version of their idf environment. > Example: 5.1.2 requires 12.2.0_20230208, you can try building some > code from 5.1.2 with the toolchain in the ports tree, most of the > parts work but some don't. > > Also if you want to use esp-idf, you also have to install various > python packages that are listed in > tools/requirements/requirements.core.txt, some of them are packaged, > some aren't so use pip3 --user if needed. Then setup some environment > variables: > > export IDF_PATH=path/to/esp-idf-repo > export IDF_PYTHON_CHECK_CONSTRAINTS=no > > And add the desired toolchain in your PATH, e.g. /usr/local/xtensa- > esp32s3-elf/bin. > > Finally, you can try to build an example project: > > cmake -S examples/get-started/blink -B build -DPYTHON=python3 - > DIDF_TARGET=esp32s3 -DPYTHON_DEPS_CHECKED=On > > There are some effort to use LLVM/clang at some point, but it's not > ready nor officially supported AFAIK. Officially, the only way to get > a compatible mixed version of their toolchains is to use their fork of > crosstool-ng and as I can tell it's near to impossible of using it on > OpenBSD, it uses large number of hardcoded GNUisms.
Setting up their Python dependencies was a nightmare, but I got close to building my code using CMake (like you suggested) but, the toolchain available in the ports tree can't compile the latest ESP-IDF components. I tried a few older versions of the ESP-IDF too. None of them worked and going any farther back means I have to make code changes. I might be punching above my weight with the bare metal approach you mentioned. But I will look into it. Thanks for the detailed explanation. -- Sadeep Madurange PGP: 103BF9E3E750BF7E

