Multicore Startup Variants
In all cases of a multicore PXROS-HR startup process:
-
The
_MASTER_CORE_
shall executePxInit()
function first while other cores are in their inactive state, either HALT or IDLE. -
The
_MASTER_CORE_
activates other cores duringPxInit()
function within the_PxInit_Start_Cores()
routine, provided either by PXROS-HR kernel library or by Init utility library.
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 them enable the core MPU system as part of their duties.
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.
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 Init utility 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.