Flash Image to Board

This guide shows how to “flash”(write) the system image into the non-volatile flash memory of Genio EVKs. The flashing process is performed over a USB connection between the target board and the host computer containing the image.

In order to write the on-board storage with Genio Tools, you need to set the SoC in download mode, which allows AIoT Tools to transfer a download agent binary to the SRAM of SoC. The download agent then provides a fastboot interface for subsequent image transfer and storage write operations.

Note

Make sure you have install the Genio Tools on your Linux or Windows host before continuing the process.

Note

These pages are only a quick guide on using Genio Tools to flash images. Please read Genio Tools in order to get the most out of Genio Tools.

Launch genio-flash Tool

Change working directory to the image directory. If you built rity-demo-image from source, the image is default in:

cd $BUILD_DIR/tmp/deploy/images/genio-350-evk

BUILD_DIR variable set was set within the Configure Build Environment chapter.

If you are using a pre-built image, please change to the directory that you’ve extracted the pre-built image. It should contain a partitions.json file.

To use the default configuration, run the following commands:

$ genio-flash --load-dtbo gpu-mali.dtbo --load-dtbo video.dtbo

The default configuration is:

  • HDMI is enabled, which disables Ethernet.

  • DSI LCM is disabled.

  • Cameras are disabled.

To enable DSI LCM, and to enable Ethernet, which disables HDMI:

$ genio-flash --load-dtbo panel-startek-kd070fhfid015.dtbo --load-dtbo net-ethernet.dtbo

To enable CSI0 camera, Ethernet, and the StarTek DSI LCM:

$ genio-flash --load-dtbo camera-ap1302-ar0430-single-csi0.dtbo --load-dtbo net-ethernet.dtbo --load-dtbo panel-startek-kd070fhfid015.dtbo

The additional board features are device tree overlays. You can load multiple overlays by adding multiple --load-dtbo parameters. The following command can be used to see what overlays are available to be enabled:

$ genio-flash --list-dtbo

By default genio-flash will use the prefix rity-demo-image to search for files under image directory. If you are building other images, use -i option to specify different prefix. For example:

$ genio-flash -i rity-bringup-image --load-dtbo gpu-mali.dtbo --load-dtbo video.dtbo

Note

  • Make sure you load the gpu-mali.dtbo``and ``video.dtbo. GPU and video codec does not work if you omitting these overlays.

  • DPI-to-HDMI and Ethernet are mutually exclusive on Genio 350-EVK.

  • Once you enable DSI LCM, the HDMI port does not work if the LCM panel is not attached.

genio-flash should print logs to the terminal similar to this:

AIoT Tools: <tool-version>
Yocto Image:
        name:     Rity Demo Image (rity-demo-image)
        distro:   Rity Demo Layer <iot-yocto-version> (rity-demo)
        codename: kirkstone
        machine:  <machine>
        overlays: ['gpu-mali.dtbo', 'apusys.dtbo', 'video.dtbo']

Looking for MediaTek SoC matching USB device 0e8d:0003

The <tool-version>, <iot-yocto-version> and <machine> strings change according to the tool version, IoT Yocto version and Genio EVK used. Once you see line Looking for MediaTek SoC matching USB device 0e8d:0003 prompt, proceed to the next step.

Enter Download Mode

Follow these steps to make the Genio EVK enter download mode:

  1. Locate the push buttons on the board:

    ../../../_images/sw_rity_get-started_flash_download-mode.gif
  2. Press and keep pressing the volume up button

  3. Press and release the reset button

  4. Release the volume up button

You should see flashing process start. A typical successful log looks like this:

AIoT Tools: <tool-version>
Yocto Image:
        name:     Rity Demo Image (rity-demo-image)
        distro:   Rity Demo Layer <iot-yocto-version> (rity-demo)
        codename: kirkstone
        machine:  genio-1200-evk
        overlays: ['gpu-mali.dtbo', 'apusys.dtbo', 'video.dtbo']

Looking for MediaTek SoC matching USB device 0e8d:0003
Opening COM33 using baudate=115200
Connected to MediaTek MT8195 SoC
Sending bootstrap to address: 0x201000
Jumping to bootstrap at address 0x201000 in AArch64 mode
erasing mmc0
< waiting for any device >
Erasing 'mmc0'                                     (bootloader) request sz: 0xe8f800000, real erase len: 0x0
OKAY [  9.627s]
Finished. Total time: 9.655s
erasing mmc0boot0
Erasing 'mmc0boot0'                                (bootloader) request sz: 0x800000, real erase len: 0x800000
OKAY [  0.013s]
Finished. Total time: 0.018s
erasing mmc0boot1
Erasing 'mmc0boot1'                                (bootloader) request sz: 0x800000, real erase len: 0x800000
OKAY [  0.004s]
Finished. Total time: 0.010s
 flashing mmc0=rity-demo-image-genio-1200-evk.wic.img
Sending sparse 'mmc0' 1/9 (262140 KB)              OKAY [  6.440s]
Writing 'mmc0'                                     OKAY [  9.393s]
Sending sparse 'mmc0' 2/9 (262140 KB)              OKAY [  6.332s]
Writing 'mmc0'                                     OKAY [ 10.185s]
Sending sparse 'mmc0' 3/9 (230376 KB)              OKAY [  5.607s]
Writing 'mmc0'                                     OKAY [  8.196s]
Sending sparse 'mmc0' 4/9 (262140 KB)              OKAY [  6.362s]
Writing 'mmc0'                                     OKAY [  9.354s]
Sending sparse 'mmc0' 5/9 (262140 KB)              OKAY [  6.401s]
Writing 'mmc0'                                     OKAY [ 10.089s]
Sending sparse 'mmc0' 6/9 (262140 KB)              OKAY [  6.413s]
Writing 'mmc0'                                     OKAY [  9.291s]
Sending sparse 'mmc0' 7/9 (242392 KB)              OKAY [  5.924s]
Writing 'mmc0'                                     OKAY [  8.585s]
Sending sparse 'mmc0' 8/9 (262140 KB)              OKAY [  6.417s]
Writing 'mmc0'                                     OKAY [  9.288s]
Sending sparse 'mmc0' 9/9 (129780 KB)              OKAY [  3.159s]
Writing 'mmc0'                                     OKAY [  4.605s]
Finished. Total time: 132.157s
flashing mmc0boot0=bl2.img
Sending 'mmc0boot0' (205 KB)                       OKAY [  0.007s]
Writing 'mmc0boot0'                                OKAY [  0.026s]
Finished. Total time: 0.054s
flashing mmc0boot1=u-boot-env.bin
Sending 'mmc0boot1' (4 KB)                         OKAY [  0.002s]
Writing 'mmc0boot1'                                OKAY [  0.015s]
Finished. Total time: 0.028s
Rebooting                                          OKAY [  0.002s]
Finished. Total time: 0.002s

Note

If you are experiencing issues flashing on Windows, please refer to the troubleshooting guide.

Flash a Single Partition

During development, you might want to update a single partition instead of completely re-write the entire storage. For example, after modifying and rebuilding the kernel image, it is much faster to just flash the fitImage. There are 4 partitions that can be updated individually on open SDK: mmc0boot0, mmc0boot1, bootloaders, kernel. The mmc0 and rootfs partitions do not support individual updates.

To flash just one partition, you can run the following command:

genio-flash $PARTITION
genio-flash kernel # example to update kernel partition

The following table shows common $PARTITION used in rity-demo-image:

Partition

File

mmc0

N/A

mmc0boot0

bl2.img

mmc0boot1

u-boot-env.bin

bootloaders

fip.bin

kernel

fitImage

rootfs

N/A

Hint

See the Genio Tools page for more information on how to utilise genio-flash.