Rust [and other LLVM languages] support for ESP32
Posted: Sat Nov 19, 2016 12:15 am
I'm interested in determining the feasibility of someday using the Rust programming language with the ESP32.
Currently, I know it's not possible, but I'd like to get some discussion started here to see what it would take.
I know there is very minimal support for Xtensa architecture within LLVM at the moment and having an LLVM backend would be a necessary prerequisite for supporting Rust as well as many other languages built that emit LLVM-IR (Nim, etc.). Is there any documentation of compiler configuration files that can be made public that would help with the development of an LLVM backend for the ESP32?
Another route to getting Rust (and other languages) compiling is to cross-compile them to C.
A follow up language-agnostic question relates to how peripheral drivers will be created. In the ARM world, there exists CMSIS specified SVD (System View Description) files that describe the peripheral control registers of the device, in terms of their base address, read/write permissions and bit-layout of each register including reserved bits and more information, all in an XML format. This allows programmatic generation of safe abstractions to access the registers, as opposed to simply writing to memory addresses. I understand that this is what ESP-IDF is attempting to provide (and more) (an example tool in Rust is https://crates.io/crates/svd2rust).
Does there exist an SVD file for this device or equivalent that could be used?
I'm interested in any and all discussion and information for the support of other compiled programming languages (excluding the scourge of javascript that seemingly must be run everywhere) on the ESP32.
Currently, I know it's not possible, but I'd like to get some discussion started here to see what it would take.
I know there is very minimal support for Xtensa architecture within LLVM at the moment and having an LLVM backend would be a necessary prerequisite for supporting Rust as well as many other languages built that emit LLVM-IR (Nim, etc.). Is there any documentation of compiler configuration files that can be made public that would help with the development of an LLVM backend for the ESP32?
Another route to getting Rust (and other languages) compiling is to cross-compile them to C.
A follow up language-agnostic question relates to how peripheral drivers will be created. In the ARM world, there exists CMSIS specified SVD (System View Description) files that describe the peripheral control registers of the device, in terms of their base address, read/write permissions and bit-layout of each register including reserved bits and more information, all in an XML format. This allows programmatic generation of safe abstractions to access the registers, as opposed to simply writing to memory addresses. I understand that this is what ESP-IDF is attempting to provide (and more) (an example tool in Rust is https://crates.io/crates/svd2rust).
Does there exist an SVD file for this device or equivalent that could be used?
I'm interested in any and all discussion and information for the support of other compiled programming languages (excluding the scourge of javascript that seemingly must be run everywhere) on the ESP32.