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