[En-Nut-Discussion] Removal of 8-bit AVR support (Re: STM32L051 and LPUART)
bon at elektron.ikp.physik.tu-darmstadt.de
Tue Oct 25 11:19:45 CEST 2016
>>>>> "Ulrich" == Ulrich Prinz <ulrich.prinz at googlemail.com> writes:
Ulrich> Hi Jonathan! Do _not_misunderstand that!
Ulrich> I would _never_ design out AVR from the original NutO/S
Ulrich> repositories, I _forked_ to github and started to plan how to
Ulrich> keep the CortexM system consistent with the original NutO/S.
Ulrich> But it is too much work to do that, so I stay on NutO/S and I do
Ulrich> _not_ design out AVR.
Ulrich> Why did I thought about forking:
Ulrich> 1) CortexM3 and higher supports unaligned addressing so it does
Ulrich> not need more memory to handle 8-bit values. But it is a waste
Ulrich> of capabilities as the R0 register is always used as first
Ulrich> parameter in a function call but also always used as the return
Ulrich> value. So you can always return a result in a function without
Ulrich> any cost of code.
That is what uint_fastX_t and friends are for.
Ulrich> 2) CortexM3 and higher have commands like rotate while load or
Ulrich> shift while load. Complex bit manipulation does not cost any
Ulrich> additional line of assembler code. But in AVR only a single
Ulrich> shift or rotate is available resulting I very hand-trimmed code
Ulrich> to avoid heaps of rotate loops and such. With CortexM there is
Ulrich> no special attention to take.
This code should be in the nut/arch path and not in nut/dev. The uart_dma
code you have in hand is an attempt to have better division between those
E.g. the /nut/arch code has a much better possibilities no know the fill
grade of the queue than the /nut/dev path has.
Another thing is the protection of 2 and 4 byte variables with a Critical
section. This is not needed with 32-bit systems. But a look at nut/dev/
shows that only the old u(s)art driver use it. So it is legacy, but does not
hamper us beside carrying old code around.
Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Institut fuer Kernphysik Schlossgartenstrasse 9 64289 Darmstadt
--------- Tel. 06151 1623569 ------- Fax. 06151 1623305 ---------
More information about the En-Nut-Discussion