arm cm3 dsb instrukce
Lubor Otta
butan na centrum.cz
Pátek Červen 5 06:59:20 CEST 2020
Zdravím konféru,
díval jsem se do knihovny na sysreset, tedy jak softem vyvolat reset
procesoru, dělá se to nahozením bitu SYSRESETREQ v registru SCB->AIRCR
Donedávna jsem resetoval procesor zablokováním Wdogu.
Zaujala mně instrukce DSB použitá pro jakousi synchronizaci. Můžete mi
někdo vysvětlit co ta instrukce provádí? Kde jinde by se hodila použít?
Lubor
#define __DSB() __dsb(0xF)
__STATIC_INLINE void NVIC_SystemReset(void)
{
__DSB(); /*
Ensure all outstanding memory accesses included
buffered write are completed before reset */
SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
(SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |
SCB_AIRCR_SYSRESETREQ_Msk); /* Keep
priority group unchanged */
__DSB(); /*
Ensure completion of memory access */
while(1); /* wait
until reset */
}
/*@} end of CMSIS_Core_NVICFunctions */
Další informace o konferenci Hw-list