etc:users:jcmvbkbc:linux-xtensa:esp32s3
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
etc:users:jcmvbkbc:linux-xtensa:esp32s3 [2024/02/11 00:54] – jcmvbkbc | etc:users:jcmvbkbc:linux-xtensa:esp32s3 [2024/06/09 05:06] (current) – update bootloader instructions to wifi-enabled version jcmvbkbc | ||
---|---|---|---|
Line 4: | Line 4: | ||
* https:// | * https:// | ||
* https:// | * https:// | ||
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
- | * https:// | + | * https:// |
* https:// | * https:// | ||
Line 24: | Line 24: | ||
===== Things that work ===== | ===== Things that work ===== | ||
- | * WiFi. Use the script that builds firmware based on esp-hosted. | + | * WiFi. Use the script that builds firmware based on esp-hosted. |
* Writing to FLASH and using ESP FLASH partition table. Driver based on linux IPC sends FLASH-related requests to the firmware. Default configuration has an etc partition that is flashed with /etc file system and mounted at boot time. The file system is writable and it can be used to store things like wpa_supplicant.conf, | * Writing to FLASH and using ESP FLASH partition table. Driver based on linux IPC sends FLASH-related requests to the firmware. Default configuration has an etc partition that is flashed with /etc file system and mounted at boot time. The file system is writable and it can be used to store things like wpa_supplicant.conf, | ||
* USB serial. It is visible as the / | * USB serial. It is visible as the / | ||
Line 33: | Line 33: | ||
* mounting NFS shares. | * mounting NFS shares. | ||
* running executable code from outside the rootfs, e.g. from /etc or from NFS mounts. A special hack in the kernel code does address remapping, so that when an executable memory mapping is created, the mapping address points to the PSRAM alias in the IRAM address range. This does not work for ESP32 as it doesn' | * running executable code from outside the rootfs, e.g. from /etc or from NFS mounts. A special hack in the kernel code does address remapping, so that when an executable memory mapping is created, the mapping address points to the PSRAM alias in the IRAM address range. This does not work for ESP32 as it doesn' | ||
- | * passing command line from bootloader to the kernel. Bootloader reads the file / | + | * passing command line from bootloader to the kernel. Bootloader reads the file / |
* strace (a one-line fix is needed for the mainline strace to correctly handle the initial exec). | * strace (a one-line fix is needed for the mainline strace to correctly handle the initial exec). | ||
* perf stat (heavy patching is needed to build it for nommu). -D1 is needed to properly enable events (perf relies on ability to run code after the fork but before the exec in the child process to manage events on systems with mmu, -D1 looks like a good workaround for nommu case). | * perf stat (heavy patching is needed to build it for nommu). -D1 is needed to properly enable events (perf relies on ability to run code after the fork but before the exec in the child process to manage events on systems with mmu, -D1 looks like a good workaround for nommu case). | ||
* c++ exceptions, c cleanup routines, forced stack unwinding, unwinding over signal frames. | * c++ exceptions, c cleanup routines, forced stack unwinding, unwinding over signal frames. | ||
+ | * TLS and NPTL. Some corner cases still need attention though. | ||
===== Things that don't work ===== | ===== Things that don't work ===== | ||
- | * about 290 failing tests in the gcc testsuite, | + | * 193 failing tests in the gcc testsuite, |
- | * NPTL. Not yet. Need to define relevant TLS relocations, | + | |
* mmap with MAP_FIXED flag. By design of the nommu linux, but it seems to me that it doesn' | * mmap with MAP_FIXED flag. By design of the nommu linux, but it seems to me that it doesn' | ||
* tcpdump and libpcap in general. It tries to mmap the packet socket and it's missing a few things (mm/nommu.c doesn' | * tcpdump and libpcap in general. It tries to mmap the packet socket and it's missing a few things (mm/nommu.c doesn' | ||
Line 75: | Line 75: | ||
$ CT_PREFIX=`pwd`/ | $ CT_PREFIX=`pwd`/ | ||
$ popd | $ popd | ||
- | </ | ||
- | |||
- | It doesn' | ||
- | < | ||
- | ... | ||
- | [INFO ] Installing final gcc compiler: done in 572.47s (at 29:47) | ||
- | [INFO ] ================================================================= | ||
- | [INFO ] Checking dynamic linker symlinks | ||
- | [EXTRA] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | [ERROR] | ||
- | ... | ||
</ | </ | ||
Line 104: | Line 80: | ||
< | < | ||
- | $ git clone https:// | + | $ git clone https:// |
$ nice make -C buildroot O=`pwd`/ | $ nice make -C buildroot O=`pwd`/ | ||
$ buildroot/ | $ buildroot/ | ||
Line 115: | Line 91: | ||
< | < | ||
- | $ git clone https:// | + | $ git clone https:// |
- | $ pushd esp-idf | + | $ pushd esp-hosted/ |
+ | $ cmake . | ||
+ | $ cd esp-idf | ||
$ . export.sh | $ . export.sh | ||
- | $ cd examples/get-started/ | + | $ cd ../network_adapter |
$ idf.py set-target esp32s3 | $ idf.py set-target esp32s3 | ||
$ cp sdkconfig.defaults.esp32s3 sdkconfig | $ cp sdkconfig.defaults.esp32s3 sdkconfig |
etc/users/jcmvbkbc/linux-xtensa/esp32s3.1707602097.txt.gz · Last modified: 2024/02/11 00:54 by jcmvbkbc