ARM Cortex-M0+ a rozdil LDM a LDR

Jan Waclawek konfera na efton.sk
Středa Červenec 8 15:00:27 CEST 2015


Aha tak problem bude presne ako pan kolega Stengl pise, v pamatovej
oblasti. To ze je Device to je len ze ci procesor moze spekulativne
preusporiadat vykonenaie instruckii resp. pristupy do pamate (Cortex-M to
aj tak nerobi, ale tie dokumenty su genericke). Toto bude skor nieco take,
ze pri tom LDM procesor nastavi zbernicu do takeho stavu, ktory AHB/APB
bridge nepoberie a vracia nulu.

wek


----- Original Message ---------------

Subject: Re: ARM Cortex-M0+ a rozdil LDM a LDR
   From: Hynek Sladky <econf at centrum.cz>
   Date: Wed, 08 Jul 2015 13:16:28 +0200
     To: HW-news <hw-list at list.hw.cz>

>Ano, presne takto se to chova.
>
>r5 = 0x50000000
>LDR r0,[r5,#0]
>r0 = 0x685555A5 (spravna hodnota z GPIOA->MODER)
>
>r5 = 0x50000000
>r0 = 0x00000001
>LDM r5!,{r0}
>r5 = 0x50000004
>r0 = 0x00000000
>
>Prijde mi, ze LDM pouziva jiny pristup ke sbernici, takze nejde nacist 
>hodnoty z HW registru...
>
>Hynek
>
>
>Dne 8.7.2015 12:05, Jan Waclawek napsal(a):
>>> 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.
>> To ste krokovali? V r5 pred instrukciou bola spravna a spravne zarovnana
>> adresa, a v pamati na tej adrese bola nenulova hodnota, a v r0 bola
>> nenulova hodnota; a po kroku bolo v r0 nula?
>>
>> wek



Další informace o konferenci Hw-list