PMU firmware consists of the following modules:
- Error Management (EM)
- Power Management (PM)
- Scheduler
- Software Test Library (STL)
PMU firmware has a module data structure (XPfw_Module_t) which contains the information about the module. This data structure is defined for each module when the module is created. The following table shows its members.
| Member | Range | Additional Information |
|---|---|---|
| ModId | 0.. 31 | |
| CfgInitHandler | Init handler function pointer | Default to NULL |
| IpiHandler | Handler for IPI manager | Default to NULL |
| EventHandler | Handler for registered events of the module | Default to NULL |
| IpiId | 16-bit IPI ID | Unique to each module |
PMU firmware also has a core data structure which contains the list and the details of all modules. The following table shows its members.
| Member | Range | Additional Information |
|---|---|---|
| ModList array | 0.. 31 | Module list array (of 32 elements) of Module structure |
| Scheduler | Scheduler structure | Scheduler task owned by the module |
| ModCount | 0.. 31 | |
| IsReady | Core is ready/dead | |
| Mode | Safety Diagnostics mode/Normal mode |
Base PMU firmware supports a few APIs that are used by these modules. Also, if you want to create a custom module, these APIs can be used from xpfw_core.h.