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 - FIFO overflow after isr_evt_set call.

I am trying to create an RTX project to run on the A2F-EVAL-KIT. I have three tasks running, two of them have a priority of 1 and use os_evt_set and os_evt_wait_or to take turns executing. This runs properly. Task 3 has a priority of 2 and uses os_evt_wait_or to wait for isr_evt_set in an ISR. Every time the isr_evt_set is called in the ISR, there is a runtime error and the os_error function is called in RTX_Conf_CM.c. This is the only ISR and the only isr_ call that is made. The returned value of err_code is 2, which appears to be a OS_ERR_FIFO_OVF. I tried increasing the ISR FIFO Queue size to 96, however the runtime error still occurs ever time. I also created another project following this example as closely as possible.

www.keil.com/.../rlarm_ar_inter_funct.htm

I still encounter the same error. I imagine that there some be some configuration that I am missing. I am running uVision 4.2, but I had the same problem with the previous version. Also, I am using the ULink2 programmer.

Thanks in advance,
Brandon

Parents
  • I had the OS on a ARM7 crashing due to something similiar:

    If you are using os_itv_wait() to establish a fixed frequency loop then use a os_evt_wait_event()function, the isr_evt_set() will corrupt the loop delay interval and force it to run continuously. They briefly mention "don't do this" in the docs somewhere.

    One fix is to rewrite the os_itv_wait() fn to be a bit less brain dead.

    Perhaps I am the only person that wants to have a more or less fixed frequency loop and be able to have a ISR signal that it is done doing something that takes a few mS.

    Chad

Reply
  • I had the OS on a ARM7 crashing due to something similiar:

    If you are using os_itv_wait() to establish a fixed frequency loop then use a os_evt_wait_event()function, the isr_evt_set() will corrupt the loop delay interval and force it to run continuously. They briefly mention "don't do this" in the docs somewhere.

    One fix is to rewrite the os_itv_wait() fn to be a bit less brain dead.

    Perhaps I am the only person that wants to have a more or less fixed frequency loop and be able to have a ISR signal that it is done doing something that takes a few mS.

    Chad

Children