is there something like `stm32-rs` in D?
wiffel
wiffel at tilient.net
Tue Oct 16 10:59:54 UTC 2018
On Wednesday, 26 September 2018 at 08:51:11 UTC, Radu wrote:
> On Wednesday, 26 September 2018 at 05:55:49 UTC, dangbinghoo
> wrote:
>> On Wednesday, 26 September 2018 at 05:24:08 UTC, Radu wrote:
>>> On Wednesday, 26 September 2018 at 03:46:21 UTC, dangbinghoo
>>> wrote:
>>>> hi,
>>>>
>>>> https://github.com/adamgreig/stm32-rs looks great, is there
>>>> something like this in Dlang?
>>>>
>>>> thanks!
>>>> ---
>>>> dangbinghoo
>>>
>>> You might take a look at
>>>
>>> https://github.com/JinShil/stm32f42_discovery_demo
>>> and
>>> https://github.com/JinShil/stm32_datasheet_to_d
>>
>> thanks, Radu, I knew that there's a minimal D demo on STM32
>> exist for years. But, what I'm talking about is that rust
>> community is doing a rust library for very production use. If
>> you look at stm32-rs, you will found that stm32-rs is covering
>> the whole STM32 MCU product line and making a promising
>> peripherals library.
>>
>> The library was generated using CMSIS-SVD files which were
>> maintained by MCU vendors.
>>
>> Anyway, I don't know what's the runtime size situation D vs
>> rust. for those kinds of MCU devices, a runtime code size
>> greater than 5KB may even not suitable for L0 lines MCU from
>> ST.
>>
>> It's not quite clear that whether D or rust is valuable for
>> MCU development, but C is really lacking lots of things for
>> quick development, today MCU is interfacing more IoT modules
>> using AT command, and deal with these string things is quite
>> painful in C. Maybe this is an opportunity for D?
>>
>> Thanks!
>>
>> ---
>> dangbinghoo
In Rust it is not very obvious to use an external MCU library and
still be OK with the borrow checker. Using unsafe code everywhere
is a possible approach, but then you would loose a lot of what
Rust has to offer. I have the impression that most of the work on
embedded rust is about that: creating libraries that still offer
the benefits of rust.
In D it's easier to use existing C libraries, e.g. openlibcm3 for
STM32 devices. I've been trying a few toy-examples on two
STM32F103 platforms (the plain bluepill board and a more advance
oled/loram board). I did a version in D
(https://github.com/tilient/stm32/tree/master/miniblink/d) using
openlibcm3 and the LDC2 cross-compiler. It took a while to figure
out the correct way of compiling and linking (cfr. make.sh file),
but it works fine now.
As a test, I also made a version in Rust
(https://github.com/tilient/stm32/tree/master/miniblink/rust).
That works fine too, but it's a lot harder to deal with the
borrow checker from time to time. And the libraries are still
quite in flux.
I'm not a power-user in either D or Rust, but - for now - I do
prefer going with D when targetting STM32 platforms.
More information about the Digitalmars-d-learn
mailing list