3 ms·
C++ has decent industry acceptance in embedded nowadays, or at least that has been my impression. After C++, rust is likely the most popular, quite a lot of ef
by auxym 4y ago
C++ has decent industry acceptance in embedded nowadays, or at least that has been my impression.
After C++, rust is likely the most popular, quite a lot of effort has been put into running rust on embedded, see eg https://github.com/rust-embedded https://github.com/rust-embedded. However, once again to my understanding, industry acceptance is still highly marginal.
After that, there's a bunch of toy-ish efforts to run other languages. Zig, nim, python and javascript variants, etc. Usually anything that has C ABI compatibility should be possible to get up and running (without writing a compiler backend from scratch). I've had fun with some toy projects using nim for ARM cortex-M targets (https://github.com/EmbeddedNim/svd2nim https://github.com/EmbeddedNim/svd2nim, https://github.com/auxym/nim-on-samd21 https://github.com/auxym/nim-on-samd21, https://github.com/EmbeddedNim/picostdlib https://github.com/EmbeddedNim/picostdlib).
Using Nim (and eg svd2nim to generate the equivalent of CMSIS headers for register access in pure nim), it would be entirely possible to write even the low level stuff (SPI drivers and whatnot) in 100% nim, with the same performance as C and better safety (better static type system and compile-time checks, etc). Runtime (eg overflow) checks and garbage collection are available (at the cost of some performance) but optional. See eg. a pretty basic higher-level API for GPIO access, that provides native performance, since the abstraction is implemented as macros (compile-time abstraction): https://github.com/auxym/nim-on-samd21/blob/master/src/port.nim https://github.com/auxym/nim-on-samd21/blob/master/src/port....