gcc, arm, pristup k periferiim

Miroslav Mraz mrazik na volny.cz
Pátek Srpen 17 14:44:16 CEST 2018


Máte možná pravdu, ale... Vycházím ze zkušenosti, on při překladu gcc 
neví, kde bude po linkování struktura ležet. Leda, že by se mu nějakým 
přepínačem řeklo co má jak zarovnávat. Normálně může strukturu nebo i to 
uint32_t fláknout na lichou adresu. Byl jsem ale líný to hledat (pokud 
vůbec něco takového existuje), tak jsem to "zoptimalizoval" ručně.
Takže ano, ani samo odstranění fpacked-struct  nepomůže, musí se použít 
to __attribute__ ((aligned (4))) explicitně. Já bych to nepovažoval za 
bug, ale spíš za velmi nepříjemnou vlastnost architektury Cortex-M0. 
Zkušenost je taková, že důsledné zarovnávání dat může některé algoritmy 
na této architektuře urychlit i několikanásobně.

Mrazík

Dne 17.8.2018 v 14:23 Jan Waclawek napsal(a):
> Nemusi, vid ten citat od armu.
> 
> Ak je struct ako taky zarovnany (co prekladac moze od linkera vynutit), tak
> prekladac presne vie, ako su zarovnane jeho jednotlive polozky, a tak k
> nim moze pristupit. Ak by to tak nebolo, tak ani po odstraneni
> fpacked-struct by sa nemohlo k jednotlivym polozkam pristupovat inak ako
> po bytoch.
> 
> Hento podla mna najdete v bugzille gcc ako poziadavku aby sa to vylepsilo v
> tomto smere, nejdem to hladat.
> 
> wek
> 
> 
> 
> ----- Original Message ---------------
>> Nikoli možná, ale zcela určitě. U Cortex-M0 je nezarovnaný přístup velký
>> problém, takže překladač to rozložit vlastně musí. Pořád je to lepší než
>> u starých verzí, kdy to rovnou spadlo do hardfaultu. Takže data, která
>> zapisujete (čtete) musí mít explicitní zarovnání pomocí např.
>> __attribute__ ((aligned (4))). U Cortex-M3,4 tohle dělat nemusíte, ale
>> ani tam to není na škodu - mělo by to být o něco efektivnější.
>>
>> Mrazík
>>
>> Dne 17.8.2018 v 13:09 Jaroslav Buchta napsal(a):
>>> ...
>>>   Mozna je to i tim, ze struktura nema
>>> attribut zarovnani na 4B.
> 
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
> 


Další informace o konferenci Hw-list