First, I'd like to say thank you for building my library so quickly, it's nice to deal with efficient customer support for once.
Unfortunatly it hasn't solved the problem, I've run a binary diff on the library you sent me and the library I generated, they are slightly different but thats probably due to different C18 compiler versions.
I've attempted a little bit of troubleshooting and have got some interesting results:
Interupt is the only thing running.
Salvo spends ALL of its time in the scheduler (I single stepped for quite a long time and it never left, just kept looping).
Tasks and binary semaphore initialisation return 0 so they are all created correctly.
Setting breakpoints show that tasks are never even entered to begin with, so its not yielding problem.
I wouldn't really be that bothered except that a source-code compile takes 5 mins on my machine and it really slows developement down.
The strangest thing is that is does work with the standard libray just fine.
-Jon
Edit:
Probably more helpful would be to list where Salvo is looping around:
[Starting from OSSched() in its infinite loop]
OSCLEAR_WATCHDOG_TIMER();
OSBeginCriticalSection();
while ( OSsigQoutP ) then evaluates to 0 so it misses that entire section.
OSLostTicks becomes one every interupt and is decremented, OScTcbP = OSdelayQP; always results in zero.
OScTcbP = OSeligQP; (both are always zero).
OSSuspendCriticalSection();
OSIdlingHook();
OSResumeCriticalSection();
OSEndCriticalSection();
And then it returns to the infinite loop with OSSched() in it.
If I read the comments right, this seems indicate that the queue contains no eligable tcb's so it's just idle forever.
[This message has been edited by DFx_Tech (edited September 29, 2004).]