HCL:S32G

Jump to: navigation, search

NXP S32G is a family of automotive System-on-Chip chipsets.

Kernel upstream status for S32G2

  • Applied features
    • Basic dt-bindings / device trees
    • linflex uart serial driver with s32g2 compatible
    • s32g2 support in usdhc.
    • s32cc/s32g2 pinctrl drivers

Firmware

The firmware blobs are originally from nxp-alb downstream repos:

NXP U-Boot

NXP TF-A

Some patches are required in order to boot upstream kernel:

u-boot-bsp38-suse

tfa-bsp38-suse

Examples of building fw blobs: U-Boot for EVB:

make s32g2xxaevb_defconfig; make

U-Boot for RDB2:

make s32g274ardb2_defconfig; make

TF-A for EVB:

make ARCH=aarch64 PLAT=s32g2xxaevb BL33=../u-boot/u-boot.bin

TF-A for RDB2:

make ARCH=aarch64 PLAT=s32g274ardb2 BL33=../u-boot/u-boot.bin

Note: Please add ARCH= and CROSS_COMPILE= option if you run these instructions on non-aarch64 machines.

[Optional] A fip.s32 will be built and you can flash it to SDCARD, for example:

# remain the 1st 8MB SRAM
fip_bin=fip.s32
mmcdev="/dev/mmcblk0"

# [Optional] Workaround: Duplicate the IVT (offset: 0x1000) to offset 0 in order to support older SoC revisions.
dd if=${fip_bin} of=${mmcdev} conv=notrunc skip=16 seek=0 bs=256 count=1

# Write fip.s32
dd if=${fip_bin} of=${mmcdev} conv=notrunc bs=512 seek=1 skip=1

# [Optional] Erase u-boot env.
dd if=/dev/zero of=${mmcdev} conv=notrunc bs=1024 seek=1920 count=8

Upstream kernel - boot flow

tfa-bsp38-suse -> u-boot-bsp38-suse (via EFI boot with CONFIG_DISTRO_DEFAULTS=y)-> grub2 -> openSUSE for S32G2

The boot device tree is from u-boot-bsp38-suse.

OpenSUSE Tumbleweed images for S32G2

# setenv ethact=eth_eqos
# setenv ethaddr=<mac-addr>
# saveenv
    • Reset the board
# reset

OpenSUSE Leap-15.4-based images for S32G2