ARM Cortex-M0+ a rozdil LDM a LDR
Hynek Sladky
econf na centrum.cz
Středa Červenec 8 14:16:00 CEST 2015
Tato oblast je defaultne typu "Device". MPU nepouzivam, defaultne by
melo byt vypnute.
Instrukci LDM tam prekladac Keil cpe sam od sebe. Presunutim
inkrementace se dari donutit k pouziti LDR.
Pro opacny pristup to vzdy pouziva STM, ale tam se mi zatim vubec nedari
presvedcit prekladac pouzit STR instrukci... a STM instrukce nefunguje...
Asi to nakonec budu muset napsat v assembleru, aby to fungovalo vzdy
spravne.
Hynek
Dne 8.7.2015 13:50, Josef Štengl napsal(a):
> Někdy nejde použít LDM instrukce pro některé typy pamětí – většinou je
> to HW bug, nebo nastavení MPU.
> Zkuste změnit nastavení MPU pro danou preriférii na na strongly
> ordered nebo device, pokud to tak už nemáte.
> Možná budou přístupy k periférii o něco pomalejší, ale mohlo by to
> dávat očekávané výsledky.
> Pokud je nastaveno normal, tak se nemusí čekat na konec operace a číst
> něco jiného. S MPU si člověk užije spoustu zábavy :-)
>
> A podívat se do erraty, jestli se tam o tom něco nepíše. Pokud
> používáte kompilátor, který podporuje výrobce čipu, tak se podívat do
> dokumentace, jestli na to není nějaká volba pro kompilátor.
>
> LDM se používá převážně při práci se zásobníkem a poli/strukturami. Dá
> se ušetřit několik CPU cyklů při čtení/zápisu více registrů (záleží
> ovšem na okolnostech).
>
> ced
Další informace o konferenci Hw-list