 Problem with os_dly_wait() and printf()
Alexei Roudometkine
Hello,
I'm using LPC2119 microcontroller and RV30 with RTX and ran into
several problems.
1) If I use printf(...) inside tasks and use os_dly_wait(...) then
as soon as context switching occurs then os_stack_overflow() is
called. I tried to set up different stack sizes inside startup.s file
but it didn't help a bit. I tried to run the same code inside
simulator and it works OK without any stack overflow (which I was
getting if I didn't include tsk_lock() and tsk_unlock() around
printf(...))
2) If I get rid of os_dly_wait(...) calls and have two tasks
running, then if I use printf with this kind of code:
int test = 10;
tsk_lock();
printf("test value: %u\n", test);
tsk_unlock();
Then the task, which ran that line of code, will get stuck
including not context switching. I didn't get any stack overflows
that time but it looks like it gets stuck when it tried to do a
context switching. If, on the other hand, I put code like
that:
tsk_lock();
printf("test value: %s\n", "just some test");
tsk_unlock();
Then it switches just fine. Thanks in advance with any suggestions
or explanations, Alexei
|