Skip to content

Conversation

@manuargue
Copy link
Contributor

Add platform support for NXP S32K5 running on the CPE subsystem. This includes BSP definitions and initialization hooks required for L4Re Microhypervisor bring-up on CPE.

The CPE subsystem features a single Cortex-R52 cluster with two cores operating in split-lock mode. Single core and AMP is supported. Unlike other NXP S32 platforms, CPE MRU instances route interrupts as GIC SPIs, so MRU virtualization is not required.

Copy link
Contributor

@jkloetzke jkloetzke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! LGTM in general. Only the RAM_BASE handling might need some attention...

Comment on lines 9 to 18
config PF_S32K5_AUTO_RAM_BASE
bool "Automatically choose RAM_BASE"
default y
help
Use default RAM base address, CPE SRAM0.

config PF_S32K5_MANUAL_RAM_BASE
hex "Custom RAM_BASE"
depends on !PF_S32K5_AUTO_RAM_BASE
default 0x22000000
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As there is only a single cluster, we could simplify this IMHO:

Suggested change
config PF_S32K5_AUTO_RAM_BASE
bool "Automatically choose RAM_BASE"
default y
help
Use default RAM base address, CPE SRAM0.
config PF_S32K5_MANUAL_RAM_BASE
hex "Custom RAM_BASE"
depends on !PF_S32K5_AUTO_RAM_BASE
default 0x22000000
config PF_S32K5_RAM_BASE
hex "Kernel load address"
default 0x22000000
help
Start address of the kernel image. Defaults to start of CPE SRAM0.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed, no need for two options on this platform

PREPROCESS_PARTS += generic_tickless_idle arm_generic_timer pic_gic
INTERFACES_KERNEL += generic_timer irq_mgr_multi_chip

RAM_PHYS_BASE := $(strip $(CONFIG_PF_S32K5_MANUAL_RAM_BASE))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure this works if PF_S32K5_AUTO_RAM_BASE is set. Anyway, if we remove PF_S32K5_AUTO_RAM_BASE then we could do the following:

Suggested change
RAM_PHYS_BASE := $(strip $(CONFIG_PF_S32K5_MANUAL_RAM_BASE))
RAM_PHYS_BASE := $(CONFIG_PF_S32K5_RAM_BASE)

Add platform support for NXP S32K5 running on the CPE subsystem.
This includes BSP definitions and initialization hooks required for
L4Re Microhypervisor bring-up on CPE.

The CPE subsystem features a single Cortex-R52 cluster with two cores
operating in split-lock mode. Single core and AMP is supported.

Unlike other NXP S32 platforms, CPE MRU instances route interrupts as
GIC SPIs, so MRU virtualization is not required.

Change-Id: Ibfe223e6be7deb36ba86010c7ce9162ff04cd3dd
Co-Authored-By: Flavius Vlasa <flavius.vlasa@nxp.com>
Signed-off-by: Manuel Argüelles <manuel.arguelles@nxp.com>
Copy link
Contributor

@jkloetzke jkloetzke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. I'll queue the PR for merging internally...

@jermar jermar merged commit 9d866c5 into kernkonzept:master Dec 19, 2025
4 checks passed
@manuargue manuargue deleted the upstream-s32k5 branch December 19, 2025 16:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants