Post Go back to editing

Crash of BF70x

Category: Software

Hi,

I get a Non-Speculative Access Aborted exception on the BF70x. 

The code where it crashes looks like this:

void CSoftTimer::Tick(uint32 u32_tickIntervalMsec)
{
const uint8 u8_startCntOld = mu8_startCnt; // IMPORTANT: must be done before local copy of mu32_updateCounterMsec has been created (thread safety)
uint32 u32_updateCounterMsec = mu32_updateCounterMsec; // A local copy of mu32_updateCounterMsec is necessary for thread safety

if (mb_isRunning == B_TRUE)
{
u32_updateCounterMsec += u32_tickIntervalMsec;
if (u32_updateCounterMsec >= mu32_updateIntervalMsec)

...

The assember code looks like this...

Tick, __ZN10CSoftTimer4TickEj:
08063628: LINK 0x0;
0806362c: [--SP]=(R7:6,P5:5);
0806362e: P5=R0;
08063630: SP+=-0xc;
154 if (mb_isRunning == B_TRUE)
08063632: R0=B[P5+0x1c](Z); <+++
08063636: CC=R0==0x1;
151 const uint8 u8_startCntOld = mu8_startCnt; // IMPORTANT: must be done before local copy of mu32_updateCounterMsec has been created (thread safety)
08063638: R6=B[P5+0x1d](Z);

<+++ indicates the line where it is crashing. 

Normally, I expect something like a CPLB miss as it is indicated by the code 26 down here (so this happens, too). But what causes the 0x08?

Sequencer Status = 0x00 08 00 26

Best regards

Oliver