Multicore Startup Variants
In all cases of a multicore PXROS-HR startup process
-
the MASTER_CORE shall execute PxInit() function first while other cores are in their inactive state, either HALT or IDLE.
-
The MASTER_CORE activates other cores during PxInit() function within the
_PxInit_Start_Cores()routine, provided either by kernel library or byinittcxlibrary.
Core MPU compatibility enabled
This mode is a default reset state on AURIX architecture, meaning that each core can enable/disable its core MPU protection without a need to access Safety Watchdog module.
In this case, the only task for the MASTER_CORE is to activate other cores and let the core MPU system enable as part of their duties.
MASTER_CORE activities
-
Start inactive cores
-
Program its core MPU regions according to their PXROS-HR init structure
-
Enable its core MPU system
-
Continue PxInit() till
InitTask
OTHER Core activities
-
Program their core MPU regions according to their PXROS-HR init structure
-
Enable their core MPU system
-
Continue PxInit() till
InitTask
Core MPU compatibility disabled
Having disabled MPU compatibility, only one core shall enable the MPU system under Safety Watchdog EndInit Protection for all cores in the microcontroller to keep the module handling multicore safe.
In the PXROS-HR operating system, it is the kernel instance running on the MASTER_CORE that configures and enables the MPU system for inactive cores before activating them.
MASTER_CORE activities
-
Configure MPU regions according to their PXROS-HR init structure on each core
-
Enable MPU system on each core
-
Start inactive cores
-
Continue PxInit() till
InitTask
OTHER Core activities
-
Program MPU regions according to PXROS-HR init structure
-
Continue
PxInit()tillInitTask
Starting from other than Reset core
The case when MASTER_CORE != 0, the application code running on the reset core (CORE=0) must activate the desired MASTER_CORE first and switch the current core to IDLE. The reset core remains in IDLE mode until PxInit() running on MASTER_CORE activates it again.
The inittcx library provides a supportive function PxuStartMasterCore to activate MASTER_CORE from the reset core. Part of the function is to switch the current core to IDLE mode.
PxInit() function handles other cores MPU protection in the same style as described above having two variants depending on MPU compatibility mode set.