<<< | >>>
When we ran our tests they would constantly fail because the test tasks would not have enough time between successive checks to perform their calculations and update their counters. By adjusting the interval between checks and reducing the number of tasks we were able to get the tests to pass but we suspect that it should not be necessary to adjust the interval so drastically (our tests only start to pass once the interval is at least two or three seconds).
Despite considerable tracing and debugging we were unable to determine the cause of our port's tardiness. We have many speculations but have not been successful in proving any of them. It may be a problem with our context-switching although, given its simplicity, this is difficult to comprehend. Alternatively, it could be a defect in our interrupt handling, some overhead introduced by including Newlib, or some misunderstanding in how to run the FreeRTOS™ test suite. Nevertheless the tests we were able to run passed (see Figure 5) and the other applications we have written seem to run at a reasonable pace.
Figure 5 - Output from the FreeRTOS™ test suite. 'OK' is printed every few seconds if the tests are running successfully.