ARM Cortex-M Microcontroller startup files

Mike via Digitalmars-d digitalmars-d at puremagic.com
Thu Apr 30 14:35:43 PDT 2015


On Thursday, 30 April 2015 at 21:08:22 UTC, Jens Bauer wrote:
> On Thursday, 30 April 2015 at 20:54:07 UTC, Martin Nowak wrote:
>> On 04/30/2015 08:43 AM, Timo Sintonen wrote:
>>> Printf is a little tricky. It is actually a file operation to 
>>> stdout and that is actually a syscall to kernel.
>>
>> No, you usually have to implement some hook for outputting 
>> yourself, e.g. putc or write, printf solely takes care of the 
>> formatting.
>
> My knowledge isn't really deep here, but doesn't printf call 
> vfprintf(stdout, ...) and
> vfprintf call vsnprintf followed by fwrite, etc. ?
>
> Thus I would expect the hook to be somewhere in vfprintf ?

As Timo said, eventually, what printf needs is the `write` 
syscall.  The C library needs to be ported to the hardware in 
question.  That requires implementing all the syscalls the the C 
library needs:  `write` for printf, `sbrk` for malloc, etc... 
(http://wiki.osdev.org/Porting_Newlib#newlib.2Flibc.2Fsys.2Fmyos.2Fsyscalls.c) 
Sometimes the toolchain vendors provide this, sometimes the 
programmer has to do it.

IMO, C library bindings are quite useful, and an important part 
of the microcontroller ecosystem, but I don't think it should be 
a prerequisite for druntime.  I recommend keeping it as a 
separate project in Deimos, and leave it to the programmer to 
implement the syscalls if they choose to employ it.

Mike


More information about the Digitalmars-d mailing list