arduino - povikendovy povzdech

Lukas Burda burdal1 na post.cz
Pondělí Březen 23 19:48:47 CET 2015


> Pro 8.bit procesor a třídu úloh, kterou má pravděpodobně řešit je
> write(char data) dost dobře navržené obecné rozhraní, používá jen 1 
> registr pro přenos parametru, takže je efektivní při volání.
> Obecnější blokový přenos dat typu write(char* data, int bytes) by musel
> používat alespoň 3-4 registry a nebylo by to obecné vzhledem k tomu, že
> pokud budou data v progmem, bude se vnitřek funkce muset chovat jinak.
> Takže třeba pro sériový port je to v pořádku, ethernet a jiné rychlé 
> blokové přenosy jsou pro tt. procesor už trochu mimo. Ne že by to nešlo,
> ale musí se na to prostě jít jinak.


No to write(char data) je vetsinou implementovano jako
{return(write(&data, 1));} tak nevim jak s tou efektivitou. Ale i
kdyby write(char data) bylo buhvikaje, tak neverim, ze
write(char * data, int bytes) bude mene efektivni nez desitky az stovky
volani write(char data). Prave k tomu pri takhle blbe implementovanem
printu dochazi. Ten print to ma z progmem nasypat po x bytech do
buferu v ram a pak volat write(char * data, int bytes) na ten bufer.
Nekritizuji write(char data), ale print.

A to, ze ethernetovy write to rovnou posle, to je taky prima. Ted jsem
koukal treba do lwIP. Tam se to posle az se buffer naplni, nebo pokud
se zavola funkce pro poslani - jestli jsem to teda dobre pochopil. To
mi pripada mnohem rozumejsi.

L.



Další informace o konferenci Hw-list