Rust na Cortex-M

Jan Waclawek konfera na efton.sk
Čtvrtek Říjen 12 22:39:12 CEST 2017


>Proc je v tom prikladu vlastne LDREX? Jestli to chapu dobre, STREX dava 
>do R0 predchozi stav, to by nestacilo?

Nie, to nechapete dobre.

V tom texte je link
http://infocenter.arm.com/help/topic/com.arm.doc.dui0553a/BABHCIHB.html
kde je ten mechanizmus vysvetleny.

LDREX okrem precitania premennej zo zadanej adresy (tu do registra R0) tiez
nastavi interne jeden bit, tzv. tag.
STREX ulozi hodnotu (v tomto pripade z registra R1) na tu istu adresu (to
je poziadavka, inak je vysledok nezaruceny) len vtedy, ked je ten tag
nastaveny; v tom pripade ho vynuluje a do R0 vlozi 0. Ak ten tag v okamihu
vykonavania STREX nebol nastaveny, hodnota z R1 sa neulozi a do R0 sa
vlozi 1.

>Mezi LDREX a STREX se to muze zmenit, ne? 

Ano moze, ak nastane prerusenie. Ale - ako sa dozviete z toho vysvetlenia -
vchod do aj vychod z prerusenia ten tag nuluje, takze program sa *dozvie*,
ze nastalo prerusenie, a teda ze ta hodnota sa medzicasom *mohla* zmenit -
ten STREX vrati 1.


>A neni to spis pro vicejadrove 
>procesory, kde zakaz preruseni nic neresi?

To tiez, ale aj u architektur, kde zakazanie, presnejse povolenie,
preruseni moze znamenat pomerne velke zdrzanie.


wek


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

>Proc je v tom prikladu vlastne LDREX? Jestli to chapu dobre, STREX dava 
>do R0 predchozi stav, to by nestacilo?
>Mezi LDREX a STREX se to muze zmenit, ne? A neni to spis pro vicejadrove 
>procesory, kde zakaz preruseni nic neresi?
>
>
>Dne 12.10.2017 v 21:28 Jan Waclawek napsal(a):
>> Len aby nedoslo k omylu: Tie operacie medzi ldrex a strex nie su zamknute v
>> zmysle ze nikto iny ich nemoze prerusit, ale skor v zmysle ze sa pri
>> pokuse o strex da zistit, ze ich niekto (mozno) prerusil, a daju sa
>> napriklad vykonat znova.
>>
>> Toto je mechanizmus na vytvorenie semaforov, vhodny na ochranenie atomicity
>> premennych zdielanych medzi vlaknami v multitaskingu (a nahradza to
>> instrukcie typu XCH pouzivanych u skutocnych jednocipov a u niektorych
>> procesorov).
>>
>> Atomicitu premennych zdielanych s preruseniami je stale asi vhodnejsie
>> riesit pomocou zakazania/povolenia preruseni - nie zeby to semaformi
>> neslo, ale je to zbytocne tazkopadne.
>>
>> wek
>>
>>
>>
>> ----- Original Message ---------------
>>
>>> ®e se k tomu vracím. Ten rust zamyká kde co, tak jsem koukal jak to
>>> vlastnì dìlá. A objevil jsem zajímavou vlastnost jader Cortex-M3,4 o
>>> které jsem nevìdìl, protoµe èlovìk pøejde z osmibitù a má z nich
>>> osmibitové návyky - zamknout atomickou operaci mezi "cli" a "sti". Tady
>>> jde zamknout operaci mezi dvojici ldrex a strex. Viz tøeba
>>> http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0553a/BABFFBJB.html
>>> .
>>> Tøeba to nìkdo vyuµije, ale myslím, µe zase nosím døíví do lesa. Druhá
>>> vìc je, µe jsem doposud dìlal spí± s jádrem M0, které tuto vlastnost
>>> prostì nemá.
>>>
>>> Mrazík
>>>
>>> Dne 27.9.2017 v 15:24 Miroslav Mraz napsal(a):
>>>> Hele, chce si to vyzkou±et. Ten rust vùbec není ±patný. ...
>>>> Dne 27.9.2017 v 10:09 konfera at efton.sk napsal(a):
>>>>> No a pocitacova veda hovori, ze u super-duper jazykov riesia tieto
>>>>> odporne hw zalezitosti vratane tych fuj fuj preruseni operacne systemy
>>>>> a kniznice, a tie nech si pise kto chce v com chce. Vid Cube/HAL. A
>>>>> pan programator sa moze nerusene venovat svojej vysoko efektivnej
>>>>> ezotericky abstraktnej cinnosti.
>>>>>
>>>>> wek



Další informace o konferenci Hw-list