Introduction
The following guide will provide different HummingBoard RZ/G2LC boot options.
This guide uses build artifacts from the SolidRun BSP repository. You need to clone this repo and build the artifacts first.
The RZ/G2LC HummingBoards have two basic boot modes: SD boot and eMMC boot. The boot process starts with loading the bootloaders to the memory from the SD or eMMC. This article will explain how to boot HummingBoard in different modes and flash bootloaders to the eMMC.
Boot from SD card
Prepare the SD card. Connect the SD card to your PC and flash the image on it.
sudo dd if=images/rzg2lc_solidrun_buildroot-sd-xxxxxxx.img of=/dev/sdX bs=1M
Note: xxxxxxx in the file name is the software revision number that changes over time.
Note: the SD card is assumed to be connected to /dev/sdX device and unmounted. Don’t forget to change X to the actual device letter.
Set the S3 DIP switch to “Boot from uSD. “
Connect the USB cable and open the serial terminal. If you have trouble with this step, refer to the serial connection article.
Plug the SD card into the HummingBoard and connect the power supply.
After that step, the board will boot automatically.
Boot from USB
It’s possible to place the rootfs and boot partitions on the USB drive. This allows us to boot the Linux and get access to the eMMC.
Prepare the SD card. Connect the SD card to your PC and flash the bootloader image.
sudo dd if=images/rzg2lc_solidrun-sd-bootloader-xxxxxxx.img of=/dev/sdX bs=1M
Prepare a USB drive with the boot partition and the rootfs partition.
sudo dd if=images/rzg2lc_solidrun_buildroot-sd-xxxxxxx.img of=/dev/sdX bs=1M
Note: the USB drive is assumed to be connected to /dev/sdX device and unmounted. Don’t forget to change X to the actual device letter.
Set the S3 DIP switch to “Boot from uSD. “
Connect the USB cable and open the serial terminal. If you have trouble with this step, refer to the serial connection article.
Plug the SD card and USB drive into the HummingBoard, and connect the power supply.
After this step, the board will boot. Stop it in the U-Boot command line in your terminal.
In: serial@1004b800
Out: serial@1004b800
Err: serial@1004b800
Net: EEPROM: TlvInfo v1 len=18
eth0: ethernet@11c20000
Hit any key to stop autoboot: 2
=>
Set the bootargs for the USB boot:
setenv bootargs "rw rootwait earlycon root=/dev/sda2"
Load kernel and fdt file from the USB drive:
usb start load usb 0:1 $kernel_addr_r boot/Image load usb 0:1 $fdt_addr_r boot/rzg2lc-hummingboard.dtb
If you need an eMMC access from Linux:
setenv sdio_select emmc
Boot the Linux kernel:
booti $kernel_addr_r - $fdt_addr_r
After that step, the board will boot using the rootfs placed on the second USB drive partition.
Boot using TFTP
U-Boot allows to load the kernel, ramdisk, and fdt over TFTP. In this example, we will use ramdisk for the rootfs.
Prepare the SD card. Connect the SD card to your PC and flash the bootloader image.
sudo dd if=images/rzg2lc_solidrun-sd-bootloader-xxxxxxx.img of=/dev/sdX bs=1M
Set the S3 DIP switch to “Boot from uSD. “
Prepare the TFTP server. Place the following files on the server:
images/tmp/Image
images/tmp/rzg2lc-hummingboard.dtb
images/tmp/initrd.img
Connect the USB cable and open the serial terminal. If you have trouble with this step, refer to the serial connection article.
Plug the SD card, USB drive, and Ethernet cable into the HummingBoard, and connect the power supply.
After this step, the board will boot. Stop it in the U-Boot command line in your terminal.
Set the TFTP server address:
setenv serverip <the.server.ip.addr>
Get the IP address:
dhcp
Set the boot args and load boot artifacts:
setenv bootargs "earlycon" tftpboot $kernel_addr_r Image tftpboot $fdt_addr_r rzg2lc-hummingboard.dtb tftpboot $ramdisk_addr_r initrd.img
If you need an eMMC access from Linux:
setenv sdio_select emmc
Boot the Linux kernel:
booti $kernel_addr_r $ramdisk_addr_r $fdt_addr_r
After that step, the board will boot using the ramdisk rootfs.
Note: since the rootfs is in the RAM, all changes in the filesystem will be lost after reboot.
Flashing bootloaders and rootfs from Linux
This paragraph assumes you boot Linux using rootfs placed on the USB or Ramdisk. And you switched the S3 DIP switch to “Boot from eMMC“ before jumping to Linux.
Also, you need to place bootloader files:
bl_bp-rzg2lc-solidrun.bin
fip-rzg2lc-solidrun.bin
rzg2lc_solidrun_buildroot-sd-xxxxxxx.img
Disable eMMC boot partition write protection:
echo 0 > /sys/block/mmcblk0boot0/force_ro
Flash the bootloaders:
dd if=bl2_bp-rzg2lc-solidrun.bin of=/dev/mmcblk0boot0 bs=512 seek=1 dd if=fip-rzg2lc-solidrun.bin of=/dev/mmcblk0boot0 bs=512 seek=256
Enable boot partition:
mmc bootbus set single_backward x1 x8 /dev/mmcblk0 mmc bootpart enable 1 0 /dev/mmcblk0
Flash the bootfs and rootfs:
dd if=rzg2lc_solidrun_buildroot-sd-a6f9227.img of=/dev/mmcblk0 bs=4M
After this step, you can reboot, and the board will start booting from eMMC.
Flashing bootloaders over serial
An RZ/G2LC CPU has a serial downloader mode. With this mode, it’s possible to flash the bootloader to SOM’s eMMC using flash-writer bare-metal software.
Prepare the board:
Connect serial cable
Connect power supply
Go to the flash-writer script dir:
cd build_scripts/flash-writer/
Note: The config.ini file contains all the necessary script configuration, including binaries paths and the serial device. That config sets /dev/ttyUSB0
as the default serial device. Don’t forget to change the SERIAL_DEVICE_INTERFACE
variable to the actual device if it’s different in your system.
Flash the bootloaders:
sudo ./flash_writer_tool.sh config.ini fw sudo ./flash_writer_tool.sh config.ini bl2 sudo ./flash_writer_tool.sh config.ini fip sudo ./flash_writer_tool.sh config.ini emmc_config
Note: The fw command uploads the flash-writer bare-metal software to the RAM. You can change the order or skip some of the commands if you need, but the fw command should always come first since it uploads the necessary software for the other commands.
Set the S3 DIP switch to eMMC boot and press reset.