HCL:S32G
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
- TODO:
- SCMI clock ID bindings
- GMAC
- Other subsystems
- S32G3 support
Firmware
The firmware blobs are originally from nxp-alb downstream repos:
Some patches are required in order to boot upstream kernel:
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
- Community images
- Usage
- Download a SDCARD image
- unxz <s32g2-image.raw.xz>
- dd if=<s32g2-image.raw> of=/dev/mmcblk0 status="progress"
- Boot to u-boot shell. Set ethact and ethaddr variables.
# setenv ethact=eth_eqos # setenv ethaddr=<mac-addr> # saveenv
- Reset the board
# reset
OpenSUSE Leap-15.4-based images for S32G2
- OBS Contrib:
- Usage
- Download a SDCARD image from https://download.opensuse.org/repositories/devel:/ARM:/15.4:/Contrib:/S32G2/images/
- unxz <s32g2-image.raw.xz>
- dd if=<s32g2-image.raw> of=/dev/mmcblk0 status="progress"
- Set ethact and ethaddr variables.