strex calls DAbt interrupt
Processor stm32mp157
it runs Opencv in baremetal mode
single-tasking environment.
when calling a method
void UMat::addref()
{
if( u )
CV_XADD(&(u->urefcount), 1);
}
we get DAbt.
The disassembler shows a set of instructions
388 CV_XADD(&(u->urefcount), 1);
c013c5cc: ldr r3, [r11, #-8]
c013c5d0: ldr r3, [r3, #24]
c013c5d4: add r3, r3, #8
c013c5d8: dmb ish
c013c5dc: ldrex r1, [r3]
c013c5e0: add r1, r1, #1
c013c5e4: strex r2, r1, [r3]
c013c5e8: cmp r2, #0
c013c5ec: bne 0xc013c5dc <_ZN2cv4UMat6addrefEv+48>
The memory addresses being accessed are correct and located in the DDR RAM
When executing instruction c013c5e4: strex r2, r1, [r3], a DAbt interrupt occurs.
'GNU Tools for STM32 11.3.rel1.20230912-1600'
What is the reason for this behavior?
