Keil Logo

Mailbox Problem

Next Thread | Thread List | Previous Thread Start a Thread | Settings

Details Message
Read-Only
Author
Ali Asadzadeh
Posted
11-Apr-2011 13:10 GMT
Toolset
ARM
New! Mailbox Problem

Dear all
When I change the priority of job2 to 1 the job2 can get the mail, but when I increase its priority it cannot get the mail. Do you have any idea what’s wrong with my code?

#include <LPC17xx.H>
#include <RTL.H>
#include <string.h>


int    cnt1,cnt2;
OS_TID tsk1,tsk2;
static U64 stk1[400/8];
static U64 stk2[400/8];
static U64 stk3[400/8];

typedef struct {
        char msg[20];
}message;
os_mbx_declare (MsgBox, 1);
_declare_box(mpool,sizeof(message),1);



__task void job1 (void);
__task void job2 (void);
__task void jobhigh (void);

__task void jobhigh(void)
{
        while(1)
        {
        os_dly_wait (1);
        }
}
__task void job1 (void) {

        message *mptr;

        mptr=_alloc_box (mpool);
        mptr->msg[0]='t';
        mptr->msg[1]='e';
        mptr->msg[2]='s';
        mptr->msg[2]='t';
        os_mbx_send (MsgBox, mptr, 0xffff); /* Send the message to the mailbox     */
        while (1)
        {
        os_evt_wait_or (0x0001, 5);
        cnt1++;
        }
}

__task void job2 (void) {
        message *rptr;
        os_mbx_wait (MsgBox, (void **)&rptr, 0xffff); /* wait for the message    */
        LPC_GPIO0->FIOPIN=rptr->msg[0];
        _free_box (mpool, rptr);           /* free memory allocated for message  */
        while (1)
        {
        os_evt_set (0x0001, tsk1);
        cnt2++;
        }
}

__task void init (void) {

  tsk1=os_tsk_create_user (job1, 1, &stk1, sizeof(stk1));
  tsk2=os_tsk_create_user (job2, 2, &stk2, sizeof(stk2));
  os_tsk_create_user(jobhigh,3,&stk3,sizeof(stk3));
  //init box
  _init_box (mpool, sizeof (mpool), sizeof (message));
  //init mail box
  os_mbx_init (MsgBox, sizeof (MsgBox));
  os_tsk_delete_self ();
}
int main(void)
{
        SystemInit();
        os_sys_init(init);                        /* Initialize RTX and start init */
}
Read-Only
Author
Per Westermark
Posted
11-Apr-2011 13:35 GMT
Toolset
ARM
New! RE: Mailbox Problem

Without looking too much at your code: What is the reason that you totally refuses to check return values from your function calls?

If you get an error from a call, you will never know, so you will never know if you have found a bug you need to take a closer look at.

Next Thread | Thread List | Previous Thread Start a Thread | Settings

  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.