We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I was wondering if any of you uses RTX with a tick rate faster than 10 milliseconds. Franc Urbanc, RTX's author, recommends this setting but I am not sure why - a context switch overhead of a LPC2478 running at 72[MHz] will be about 6 microseconds. However, when we try to set the tick rate to 1 millisecond or 100 microsecond, RTX seems to hang after about 10 minutes (when at 100 microseconds) in this code:
void os_put_prio (P_XCB p_CB, P_TCB p_task) { /* Put task identified with "p_task" into list ordered by priority. */ /* "p_CB" points to head of list; list has always an element at end with */ /* a priority less than "p_task->prio". */ . . . /* Search for an entry in the list */ while (p_CB2 != NULL && prio <= p_CB2->prio) { p_CB = (P_XCB)p_CB2; p_CB2 = p_CB2->p_lnk; }
sometimes, we see only one entry in the linked list whose left and right pointer point to the entry itself, resulting in a system deadlock. Yes, we probably can get away with a tick rate of 10 milliseconds, but I would appreciate your insight anyway.
Excellent! Good work.
As far as sharing it with the forum: You could upload a zip file of the project to a free service like http://www.getdropbox.com to share it. (If you use getdropbox, upload it to the public folder, and then select the option to create a link to it, copy and paste the link in here).
Eric, all interested people,
See here:
www.getdropbox.com/.../RTX failure
I think I got the sharing issue right. I have made extra experiments with microlib, RTX sources integrated, compiler optimizations etc. - it all boils down to a problem in RTX, _I think_. PLEASE feel free to correct me if there is a mistake in this program, hence it is my fault. I apologize for the not so good looking code. I usually take care of that...:-)
BTW,
using this table instead of the existing one
Using this table in my simple demonstration program will kill RTX within 10 seconds: static task_info_t s_task_info[NUMBER_OF_TASKS] = { {127, task1, 0}, // task1 {127, task2, 0}, // task2 {127, task3, 0}, // task3 {127, task4, 0}, // task3 {127, task5, 0}, // task3 {127, task6, 0}, // task3 {127, task7, 0}, // task3 {240, task8, 0}, // task3 {240, task9, 0}, // task3 {127, task10, 0}, // task3 } ;
Note that I have increased the priority of 2 tasks. This will kill RTX within 10 seconds!
Here is the public link to the .zip file:
dl.getdropbox.com/.../LPC2468_RTX_Demo_min.zip