Other Parts Discussed in Thread: SYSBIOS
I have the following code to retrieve a message from a POSIX queue.
After the mq_retrieve function I try to access the message values and it runs into a Hwi with a LOOP FOREVER
Same type of code is in other projects and it works.
Not sure if this is bad coding and I'm missing something or if there is any configuration that I need to fix.
thanks in advance for any help
typedef uint16_t Signal;
enum mySignals {
START_SIG,
STOP_SIG,
};
typedef struct {
Signal sig;
} Message;
then I have this code inside a function that retreives the message from the queue
int32_t ret;
Message *m;
ret = mq_receive(queue, (char*)&m, sizeof(Message), NULL);
switch (m->sig) { // Here breaks
case START_SIG:
{
//do something
break;
}
case STOP_SIG: {
//do something
break;
}
default: {
break
}
here is where it ends up: spin here indefinitely
ti_sysbios_family_arm_m3_Hwi_excHandlerAsm__I:
.asmfunc
tst lr, #4 ; context on PSP?
ite NE
mrsne r0, psp ; if yes, then use PSP
moveq r0, sp ; else use MSP
mov sp, r0 ; use this stack
stmfd sp!, {r4-r11} ; save r4-r11 while we're at it
mov r0, sp ; pass sp to exception handler
mov r1, lr ; pass lr too
mov r4, lr ; preserve LR in r4
ldr r2, excHandlerAddr
blx r2
mov r0, sp ; for ROV
mov r1, r4 ; for ROV
$1
b $1 ; spin here indefinitely