This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

RTX Hard fault when trying to access osMailQId

I want to send a mail item from Thread X to Thread Y. In that mail I want either Thread X or Thread Z's address, so that Thread Y knows where to send responses/data back to.

I wanted to include Thread X's or Z's osMailIdQ inside of the structure I'm mailing over to Thread Y. That way, when mail comes in, I can just use the rsvp address to send responses back to if needed.

This causes a hard fault.

typedef struct {
uint16_t id[10];
uint8_t len;
osMailQId target_address;
}mailStruct;

...


mail = (mailStruct*)osMailAlloc(ThreadY_request_mbox, osWaitForever);
bundle->id[0]=1;
bundle->id[1]=4;
bundle->id[2]=2;
bundle->len=3;
bundle->target_address = ThreadX_data_mbox;       //causes hard fault
osMailPut(ThreadY_request_mbox, bundle);

I'm not sure why it's causing a fault. Maybe for the same reason that the debugger always shows 0x0000000 for the mail box id? Maybe because in some parts of the OS like create thread osMailIdQ is a const? Precompiler stuff?

I have no idea. But I'd like to be able to get mail in from a thread and be able to dynamically know where to send it back to without having to use a switch of MailPut(X) MailPut(Y), MailPut(Z), etc.

Anyone?

0