Experiments with Small Devices : C++ Compiler Validation
Closed this issue · 11 comments
See #25
For each device, Check the availability of a strong enough C++ compiler.
Desired functions :
- C++-17 support (std::any or a workaround)
- RTTI
- Exceptions
- ...
ESP32 : Setup Linux Toolchain from Scratch
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-setup-scratch.html
C++ Compiler OK.
Kendryte RISC-V GNU Compiler Toolchain
https://github.com/kendryte/kendryte-gnu-toolchain
C++ Compiler OK.
STM32 is based on an ARM processor. gcc for arm is OK.
https://en.wikipedia.org/wiki/STM32
C++ Compiler OK.
For K210, executables with different optimization flags , to be flashed:
-rwxr-xr-x 1 antoine antoine 689744 Nov 6 22:36 bin/k210_model1_O0
-rwxr-xr-x 1 antoine antoine 561872 Nov 6 22:36 bin/k210_model1_O0_stripped
-rwxr-xr-x 1 antoine antoine 602232 Nov 6 22:36 bin/k210_model1_O1
-rwxr-xr-x 1 antoine antoine 529080 Nov 6 22:36 bin/k210_model1_O1_stripped
-rwxr-xr-x 1 antoine antoine 589336 Nov 6 22:36 bin/k210_model1_O2
-rwxr-xr-x 1 antoine antoine 516792 Nov 6 22:36 bin/k210_model1_O2_stripped
-rwxr-xr-x 1 antoine antoine 641344 Nov 6 22:36 bin/k210_model1_O3
-rwxr-xr-x 1 antoine antoine 570040 Nov 6 22:36 bin/k210_model1_O3_stripped
-rwxr-xr-x 1 antoine antoine 578656 Nov 6 22:36 bin/k210_model1_Os
-rwxr-xr-x 1 antoine antoine 3588400 Nov 6 22:36 bin/k210_model1_Os_debug
-rwxr-xr-x 1 antoine antoine 504528 Nov 6 22:36 bin/k210_model1_Os_debug_stripped
-rwxr-xr-x 1 antoine antoine 504528 Nov 6 22:36 bin/k210_model1_Os_stripped
For STM32 , executables with different optimization flags , to be flashed:
-rwxr-xr-x 1 antoine antoine 1285876 Nov 6 22:36 bin/stm32_model1_O0
-rwxr-xr-x 1 antoine antoine 227124 Nov 6 22:36 bin/stm32_model1_O0_stripped
-rwxr-xr-x 1 antoine antoine 1181476 Nov 6 22:36 bin/stm32_model1_O1
-rwxr-xr-x 1 antoine antoine 203436 Nov 6 22:36 bin/stm32_model1_O1_stripped
-rwxr-xr-x 1 antoine antoine 1217284 Nov 6 22:37 bin/stm32_model1_O2
-rwxr-xr-x 1 antoine antoine 242036 Nov 6 22:37 bin/stm32_model1_O2_stripped
-rwxr-xr-x 1 antoine antoine 1224536 Nov 6 22:37 bin/stm32_model1_O3
-rwxr-xr-x 1 antoine antoine 248020 Nov 6 22:37 bin/stm32_model1_O3_stripped
-rwxr-xr-x 1 antoine antoine 1171556 Nov 6 22:36 bin/stm32_model1_Os
-rwxr-xr-x 1 antoine antoine 1839796 Nov 6 22:36 bin/stm32_model1_Os_debug
-rwxr-xr-x 1 antoine antoine 179044 Nov 6 22:36 bin/stm32_model1_Os_debug_stripped
-rwxr-xr-x 1 antoine antoine 179044 Nov 6 22:36 bin/stm32_model1_Os_stripped
For ESP32 , executables with different optimization flags , to be flashed:
-rwxr-xr-x 1 antoine antoine 1470760 Nov 6 22:36 bin/esp32_model1_O0
-rwxr-xr-x 1 antoine antoine 291532 Nov 6 22:36 bin/esp32_model1_O0_stripped
-rwxr-xr-x 1 antoine antoine 1490528 Nov 6 22:36 bin/esp32_model1_O1
-rwxr-xr-x 1 antoine antoine 369960 Nov 6 22:36 bin/esp32_model1_O1_stripped
-rwxr-xr-x 1 antoine antoine 1618392 Nov 6 22:36 bin/esp32_model1_O2
-rwxr-xr-x 1 antoine antoine 498652 Nov 6 22:36 bin/esp32_model1_O2_stripped
-rwxr-xr-x 1 antoine antoine 1621156 Nov 6 22:36 bin/esp32_model1_O3
-rwxr-xr-x 1 antoine antoine 501464 Nov 6 22:36 bin/esp32_model1_O3_stripped
-rwxr-xr-x 1 antoine antoine 1471676 Nov 6 22:36 bin/esp32_model1_Os
-rwxr-xr-x 1 antoine antoine 2255776 Nov 6 22:36 bin/esp32_model1_Os_debug
-rwxr-xr-x 1 antoine antoine 349136 Nov 6 22:36 bin/esp32_model1_Os_debug_stripped
-rwxr-xr-x 1 antoine antoine 351292 Nov 6 22:36 bin/esp32_model1_Os_stripped
ESP32 compiler has some issues when linking, there is a workaround (define some functions with no-op equivalents)
Some info about generated executables.
file bin/*_Os_stripped
bin/esp32_model1_Os_stripped: ELF 32-bit LSB executable, Tensilica Xtensa, version 1 (SYSV), statically linked, stripped
bin/k210_model1_Os_stripped: ELF 64-bit LSB executable, UCB RISC-V, version 1 (GNU/Linux), statically linked, BuildID[sha1]=32aa8357610c3d8673094ad13829d1f8c1805510, for GNU/Linux 4.15.0, stripped
bin/stm32_model1_Os_stripped: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), statically linked, stripped
All automatically generated codes for the ML model can be compiled on all devices without special tweaking.
Binary objects have been generated for all platforms.
Closing