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

The dtbo overlays included by default are: * gpu-mali.dtbo * video.dtbo * display-dsi.dtbo * display-hdmi.dtbo

The default configuration is:

  • GPU support is enabled (out-of-tree driver).

  • Video encoder, decoder and MDP are enabled.

  • HDMI is enabled (which disables Ethernet as both of them use the same DPI pin).

  • DSI LCM is enabled.

  • Cameras are disabled.

To enable CSI0 camera and Ethernet:

$ genio-flash --load-dtbo camera-ap1302-ar0430-single-csi0.dtbo --load-dtbo net-ethernet.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

The default overlays are marked by an asterisk *. 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

Note

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

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

Genio Tools: <tool-version>
Yocto Image:
        name:     Rity Demo Image (rity-demo-image)
        distro:   Rity Demo Layer <iot-yocto-version> (rity-demo)
        codename: scarthgap
        machine:  <machine>
        overlays: ['gpu-mali.dtbo', 'apusys.dtbo', 'video.dtbo', 'display-dsi.dtbo', 'display-hdmi.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:

Genio Tools: <tool-version>
Yocto Image:
        name:     Rity Demo Image (rity-demo-image)
        distro:   Rity Demo Layer <iot-yocto-version> (rity-demo)
        codename: scarthgap
        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.