We are migrating our development platform from an Intel Pentium / Celeron based platform to an Intel Core2 platform running VxWorks 6.6 or 6.7. Our fastest cyclic tasks run at rates of 250 µsec, other tasks at multiples of 250 µsec, and is triggered by an hardware interrupt which generates an interrupt service routine (ISR) that starts a task via a semaphore. For IO drivers, our code uses other semaphores as well.
We have found out that VxWorks operating system calls like semFlush(), semGive(), etc usually take about 2 µsec, occasionally more than 20 µsec, and up to 80 µsec has been observed. This occasionally violates the scheduling. We are considering running our fastest task in the ISR, without a task, but in an ISR most VxWorks OS calls like semaphore operations are not permitted. How can I guarantee that RTW generated code contains no operating system calls (which are forbidden in an ISR)?
Best Answer