.. include:: /keyword.rst ========================== Flash |G350-EVK| ========================== This guide shows how to "flash"(write) the image you have built into the non-volatile flash memory of Genio 350-EVK. 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 AIoT 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 **AIoT tools** on your :doc:`Linux ` or :doc:`Windows ` host before continuing the process. .. contents:: :local: :depth: 1 Step 1. Connect board to host PC ================================ * Connect power to the board. On Genio 350-EVK, plug the 12V power jack to the **DC IN** port. * Find the **USB0** port on Genio 350-EVK, and connect it to host PC with a micro-USB cable. .. figure:: /_asset/sw_rity_get-started_flash_setup.jpg :align: center :width: 640 Connect to USB0 and DC IN port to host PC .. note:: Make sure you connect to the **USB0** port of the board. They can be confused with **UART** ports, which are also micro-USB ports on many boards. Step 2. Launch genio-flash Tool =============================== Change working folder to the image directory before running the ``genio-flash`` commands: .. prompt:: bash $ auto $ cd $BUILD_DIR/tmp/deploy/images/genio-350-evk ``BUILD_DIR`` variable set will be set within the chapter :ref:`here `. .. _choose-g350-evk-overlay: Choose Board Device Tree Overlays --------------------------------- Before flashing the board, check if there are certain board features you'd like to enable: .. prompt:: bash $ auto $ genio-flash --list-dtbo List of available DTBO: - camera-ap1302-ar0430-dual.dtbo - camera-ap1302-ar0430-single-csi0.dtbo - camera-ap1302-ar0430-single-csi1.dtbo - net-ethernet.dtbo - panel-startek-kd070fhfid015.dtbo - gpu-mali.dtbo - video.dtbo The default configuration is: * HDMI is enabled, which disables ethernet. * DSI LCM is disabled. * Cameras are disabled. Please 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 |G350-EVK|. * Once you enables DSI LCM, HDMI port does not work if the LCM panel is not attached. Flash Image with Selected Overlays ---------------------------------- To use the default configuration, run the following commands: .. prompt:: bash genio-flash --load-dtbo gpu-mali.dtbo --load-dtbo video.dtbo The additional board features are device tree overlays. You can load multiple overlays by adding multiple ``--load-dtbo`` parameters. To enable DSI LCM, and to enable ethernet, which disables HDMI: .. prompt:: bash genio-flash --load-dtbo panel-startek-kd070fhfid015.dtbo --load-dtbo net-ethernet.dtbo To enable CSI0 camera, Ethernet, and the StarTek DSI LCM: .. prompt:: bash $ auto $ genio-flash --load-dtbo camera-ap1302-ar0430-single-csi0.dtbo --load-dtbo net-ethernet.dtbo --load-dtbo panel-startek-kd070fhfid015.dtbo Once you see ``Looking for a MediaTek SoC ...`` prompt, proceed to next step. .. _enter-download-mode: Step 3. Enter Download Mode =========================== Follow these steps to make |G350-EVK| enter download mode: 1. Press and keep pressing the **volume up** button 2. Press and release the **reset** button 3. Release the **volume up** button .. figure:: /_asset/sw_rity_get-started_flash_download-mode.gif :align: center Reset the board to enter download mode You should see flashing process started after releasing the volume up button. A typical successful log looks like this: .. code:: AIoT Tools: v1.3.dev7+gcdbf6fc Yocto Image: name: Rity Demo Image (rity-demo-image) distro: Rity Demo Layer 21.3-dev (rity-demo) codename: dunfell machine: g350-evk overlays: [] Looking for MediaTek SoC matching USB device 0e8d:0003 Opening COM11 using baudate=115200 Connected to MediaTek MT8365 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: 0x3a6800000, real erase len: 0x0 OKAY [ 0.233s] Finished. Total time: 0.238s erasing mmc0boot0 Erasing 'mmc0boot0' (bootloader) request sz: 0x400000, real erase len: 0x400000 OKAY [ 0.008s] Finished. Total time: 0.015s erasing mmc0boot1 Erasing 'mmc0boot1' (bootloader) request sz: 0x400000, real erase len: 0x400000 OKAY [ 0.008s] Finished. Total time: 0.013s flashing mmc0=rity-demo-image-i500-pumpkin.wic.img Sending sparse 'mmc0' 1/4 (239976 KB) OKAY [ 28.000s] Writing 'mmc0' OKAY [ 16.079s] Sending sparse 'mmc0' 2/4 (244076 KB) OKAY [ 29.369s] Writing 'mmc0' OKAY [ 16.151s] Sending sparse 'mmc0' 3/4 (259564 KB) OKAY [ 31.091s] Writing 'mmc0' OKAY [ 18.437s] Sending sparse 'mmc0' 4/4 (99296 KB) OKAY [ 11.605s] Writing 'mmc0' OKAY [ 6.882s] Finished. Total time: 159.160s flashing mmc0boot0=bl2.img Sending 'mmc0boot0' (155 KB) OKAY [ 0.025s] Writing 'mmc0boot0' OKAY [ 0.133s] Finished. Total time: 0.186s flashing mmc0boot1=u-boot-env.bin Sending 'mmc0boot1' (4 KB) OKAY [ 0.002s] Writing 'mmc0boot1' OKAY [ 0.061s] Finished. Total time: 0.099s Rebooting OKAY [ 0.002s] Finished. Total time: 0.003s .. note:: On most AIoT evaluation boards, the **volume up** button is connected to the ``KPCOL0`` pin of the chip. If you have trouble finding the correct button, refer to the user guide or schematics of your board. Flash Other Images ================== 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: .. prompt:: bash $ auto $ genio-flash -i rity-bringup-image 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: .. prompt:: bash $ auto $ cd $BUILD_DIR/tmp/deploy/images/genio-350-evk $ genio-flash $ genio-flash kernel # example to update kernel partition The following table shows common ```` and ```` used in rity-demo-image: .. csv-table:: :header: "Partition", "File" :widths: 10, 10 "mmc0", "N/A" "mmc0boot0", "bl2.img" "mmc0boot1", "u-boot-env.bin" "bootloaders", "fip.bin" "kernel", "fitImage" "rootfs", "N/A" Once you see ``Looking for a MediaTek SoC ...`` prompt, :ref:`put the board into download mode `. You should be able to see flashing process started after releasing the volume up button. Troubleshooting the Driver (Windows Only) ========================================= Please refer to the chapter here: :ref:`missing-yocto-driver`.