ARM Cortex-M0+ a rozdil LDM a LDR

Zuffa Jan ZuffaJ na cgc.sk
Středa Červenec 8 11:18:23 CEST 2015


V tom prvom pripade inkrementujete po pouziti premennu v pointeri
v tom druhom pointer.

j.

From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Hynek Sladky
Sent: Wednesday, July 08, 2015 11:04 AM
To: HW-news
Subject: ARM Cortex-M0+ a rozdil LDM a LDR

Na procesoru STM32L05x potrebuju neprimo pristupovat k nekterym HW registrum. Cast kodu pro pristup je zapsana takto:
  unsigned long *ptr;
  test_send (*ptr++, 4);

Tento pristup vygeneruje instrukci
  LDM r5!,{r0}
Vysledkem operace je vzdy hodnota 0.


Pokud pouziju jiny zapis:
  test_send (*ptr, 4);
  ptr++;
tak se vygeneruje instrukce
  LDR r0,[r5,#0]
a data se nacitaji spravne...

Snazil jsem se najit nejaky popis rozdilu techto instrukci, proc by k takovemu chovani melo dochazet, ale nic jsem nenasel... (DDI0419C od ARM a PM0223r1 od ST)
Tak nevim, jestli to je treba nejake omezeni Cortex-M0+ jadra nebo konkretniho cipu...?
Rad bych pochopil, proc k tomu dochazi - nevite nekdo?

Diky,
Hynek Sladky
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20150708/2e47838e/attachment.html>


Další informace o konferenci Hw-list