Flashing images on NXP S32G-RDB3¶
To build an AutoSD image and flash it onto an NXP S32G-RDB3 board, follow these steps:
- Update the board firmware.
- Build the AutoSD image.
- Optional: Build the NXP BSP kernel into the AutoSD image.
Important
The NXP S32G-RDB3 platform is not fully enabled in the upstream Linux or AutoSD kernels. Therefore, an AutoSD image using the AutoSD kernel cannot use all the features of this board. For a more robust platform experience, you can replace the AutoSD kernel with the NXP BSP vendor kernel by following the instructions in Installing the NXP BSP kernel into the AutoSD image.
- Install the secondary boot loader (SBL) binary into the AutoSD image.
- Flash the image onto an SD card and boot the system.
Updating your S32G-RDB3 firmware¶
Before flashing an AutoSD image onto the S32G-RDB3 board, install the updated firmware.
Prerequisites
- An AArch64 host machine running CentOS Stream, Fedora, or RHEL with Internet access.
Procedure
-
Enable the
@centos-automotive-sig/nxp-board-supportrepo: -
Install the
nxp-arm-trusted-firmware:
After you install the firmware, note the path for the fip.s32 binary you need later for the
Installing the NXP BSP into the AutoSD image procedure:
/usr/share/nxp-arm-trusted-firmware/s32g399ardb3/fip.s32.
Next steps
After the fip.s32 binary is installed in your host, you can build the AutoSD image.
Building an AutoSD image for S32G-RDB3¶
Build the AutoSD image using the s32g_vnp_rdb3 target.
Prerequisites
- An AArch64 host machine running CentOS Stream, Fedora, or RHEL with Internet access.
Procedure
-
Install the
automotive-image-buildertool for your OS or use the container to build. -
Build the image, setting
--targettos32g_vnp_rdb3:Important
This documentation is in the process of being adjusted for the changes implemented in Automotive Image Builder 1.1.4. In the meantime, to keep the sample commands in this documentation valid, you must use the deprecated CLI, as shown in this example.
$ aib-dev build-deprecated \ --distro autosd9 \ --target s32g_vnp_rdb3 \ --mode package \ --export image \ examples/simple.aib.yml \ <my-image>.imgNote
Replace
<my-image>with the name of your image. Replaceexamples/simple.aib.ymlwith your desired image manifest.
Next steps
- Optional: Install the NXP BSP kernel into your image.
- Install the secondary boot loader into your image.
- Flash the image and boot AutoSD on your board.
Optional: Installing the NXP BSP kernel into the AutoSD image¶
To create a bootable AutoSD image for the S32G-RDB3 board, build the NXP BSP kernel and manually install the SBL binary into the image.
Important
The NXP S32G-RDB3 platform is not fully enabled in the upstream Linux or AutoSD kernels. Therefore, an AutoSD image using the AutoSD kernel cannot use all the features of this board. For a more robust platform experience, replace the AutoSD kernel with the NXP BSP vendor kernel.
Prerequisites
- The image you built in Building an AutoSD image for S32G-RDB3
Procedure
-
Build the NXP BSP kernel:
-
Set the following environment variables:
$ IMAGE=<path>/<my-image>.img $ image=$(basename $IMAGE) $ loopdev="$(losetup --show -fP $IMAGE)" $ kernelversion="$(cat include/config/kernel.release)"Note
Replace
<my-image>with the name of your image. -
Create a temporary directory, and mount the third and fourth partitions of the AutoSD image as block devices:
-
Install NXP kernel modules and device tree:
-
Copy the NXP BSP kernel to the AutoSD image that you mounted in
./tmpdir: -
Modify the boot loader:
$ rm ./tmpdir/boot/loader/* $ cat << EOF | sudo tee -a ./tmpdir/boot/loader/entries/ffffffffffffffffffffffffffffffff-${kernelversion}.aarch64.conf title Automotive Stream Distribution (${kernelversion}.aarch64) 9 version ${kernelversion}.aarch64 linux /Image-${kernelversion} devicetree /dtb-${kernelversion}/freescale/s32g399a-rdb3.dtb options root=/dev/mmcblk0p4 rw loglevel=4 efi=noruntime acpi=off console=ttyLF0,115200 module.sig_enforce=1 systemd.show_status=auto libahci.ignore_sss=1 slub_debug=FPZ fsck.mode=skip rcupdate.rcu_normal_after_boot=0 rcupdate.rcu_expedited=1 grub_users $grub_users grub_arg --unrestricted grub_class autosd EOF -
Unmount the filesystem, and detach the loop device:
Installing the secondary boot loader (SBL) binary into the AutoSD image¶
Prerequisites
- The
fip.s32firmware file you updated in Updating your S32G-RDB3 firmware - The image you built in Building an AutoSD image for S32G-RDB3
Procedure
-
Install the SBL binary,
fip.s32, into the AutoSD image:$ sudo dd if=/usr/share/nxp-arm-trusted-firmware/s32g399ardb3/fip.s32 of=<my-image>.img \ skip=512 seek=512 iflag=skip_bytes oflag=seek_bytes \ conv=fsync,notruncNote
Replace
<my-image>with the name of your image.
Next steps
After you have installed the SBL binary and, optionally, the NXP BSP kernel into the AutoSD image, you can flash the image onto the S32G-RDB3 board. For more information about creating and running custom kernels in virtual and physical environments, see Building an AutoSD image that includes a custom kernel.
Flashing the AutoSD image onto the S32G-RDB3 board¶
Flash your customized AutoSD image onto an SD card and boot the system.
Prerequisites
- An SD card
- An S32G-RDB3 board
- The image you’ve built and modified in previous steps
Procedure
-
Flash the image onto an SD card, replacing
</dev/sdX>with your block device:Note
Replace
<my-image>with the name of your image. -
Plug in the SD card and start the system.
Note
Flashed u-boot supports EFI boot, so the system boots without any user interaction.
-
To see the output, log in to the serial port using default credentials: