Startup files for STM32F4xx
Timo Sintonen via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Apr 25 09:28:23 PDT 2015
Before you start to write device drivers I remind you that it is
not possible to just write and read the peripheral registers via
pointers. The compiler will do optimizations like omit reads and
writes or reorder them.
My very simple uart driver is here:
https://bitbucket.org/timosi/minlibd/src/15e88941c534a19e753fa0eebcd053b17392b7ad/tools/main/uart.d?at=default
and gpio driver is here:
https://bitbucket.org/timosi/minlibd/src/15e88941c534a19e753fa0eebcd053b17392b7ad/tools/main/gpio.d?at=default
My work is based on the feature that a shared variable is marked
as volatile in gcc. This feature is buggy and should not be used
in the future. The official way is to use library functions to
access registers but I think this results to horrible looking
code.
This issue has currently stopped my work with device drivers. I
would like to hear from compiler developers what is the idiomatic
D way to do this. Someone might then make an sample driver and
after discussion we all could start write drivers the same way.
More information about the Digitalmars-d-learn
mailing list