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