PLM execution is based on tasks. Initial start-up tasks are added to the PLM task queue after initializing the processor and programmable interval timers (MB internal). Start-up tasks include module initialization, executing PMC CDO, loading boot PDI and running user hooks at predetermined places. Post start-up events, the PLM enters service mode, where it enters sleep and waits for events. When woken up, the PLM enters the interrupt context, services the interrupt, and goes back to task queue to check for any task. When the task queue is empty, it goes to sleep.
The following sequence of events occur in the PLM:
- Initialize processor, register interrupt handlers, enable interrupts
- Execute start-up tasks
- Initialize modules
- Initialize modules, such as XilPLMI, XilPM, and XilLoader
- For every module: Register CDO commands and interrupt handlers
- Process the PMC CDO stored in the PMC RAM
- Load the rest of the images in the boot PDI
- Execute user hooks
- Initialize modules
- Task dispatch loop (Wait for event)
- Execute any tasks added to the task queue