Using Ozone, load Chapter8_semaphorePriorityInversion.elf and start the processor. Then, open SystemView and observe the runtime behavior, which will be analyzed here.
There are a few key aspects to keep in mind when looking at this trace:
- TaskA is the highest-priority task in the system. Ideally, if TaskA is ready to run, it should be running. Because TaskA shares a resource with a lower-priority task (TaskC), it will be delayed while TaskC is running (if TaskC is holding the resource).
- TaskB should not run when TaskA could run since TaskA has a higher priority.
- We've used the terminal output of SystemView (as well as turned on the red LED) to provide a notification when either TaskA or TaskC has failed to acquire ...