arm cm3 dsb instrukce
Miroslav Mraz
mrazik na volny.cz
Pátek Červen 5 10:39:20 CEST 2020
Možné to je, ale když provádím read-modify-write v hlavní smyčce a
podobně i v přerušení (nad stejnou globální proměnnou), atomic důsledně
používá ldrex/strex i s tím dsb. Asi to nějaký význam mít bude. Nebo
hovoříme každý o něčem jiném. Já do takových detailů chování procesoru
jít neumím ale snažím se být opatrný.
Mrazík
Dne 05. 06. 20 v 10:20 Jan Waclawek napsal(a):
>> Jinak øeèeno - pokud máte napøíklad globální
>> promìnnou, kterou sdílíte mezi smyèkou hlavního programu a pøeruením,
>> nestaèí jí deklarovat jako volatile, musíte pouít nìco jako
>> std::atomic<type>.
>
> U Cortex-M3/M4 toto nie je potrebne riesit (s vynimkou LDM/STM, ktore su z
> principu problematicke operacie, hojne sa vyskytujuce aj v ARM erratach, a
> pochybujem, ze by ich nejaky prekladac generoval pre volatile premenne),
> vid napr. Cortex-M4 TRM, 3.5 Write buffer:
>
> If an interrupt
> comes in while DMB or DSB is waiting for the write buffer to drain, the
> processor returns to the
> instruction following the DMB or DSB after the interrupt completes. This
> is because interrupt
> processing acts as a memory barrier operation.
>
> wek
Další informace o konferenci Hw-list