This guide shows how to “flash”(write) the image you have built into the non-volatile flash memory of AIoT-i350-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 AIoT 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.
Connect power to the board. On AIoT-i350-EVK, plug the 12V power jack to the DC IN port.
Find the USB0 port on AIoT-i350-EVK, and connect it to host PC with a micro-USB cable.
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.
Change working folder to the image directory before running the
BUILD_DIR variable set will be set within the chapter here: For v22.1.
Choose Board Device Tree Overlays
Before flashing the board, check if there are certain board features you’d like to enable:
aiot-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
The default configuration is:
HDMI is enabled, which disables ethernet.
DSI LCM is disabled.
Cameras are disabled.
DPI-to-HDMI and Ethernet are mutually exclusive on i350-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:
The additional board features are device tree overlays. You can load multiple overlays by adding multiple
To enable DSI LCM, and to enable ethernet, which disables HDMI:
aiot-flash --load-dtbo panel-startek-kd070fhfid015.dtbo --load-dtbo net-ethernet.dtbo
To enable CSI0 camera, Ethernet, and the StarTek DSI LCM:
aiot-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.
Follow these steps to make i350-evk enter download mode:
Press and keep pressing the volume up button
Press and release the reset button
Release the volume up button
You should see flashing process started after releasing the volume up button. A typical successful log looks like this:
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: i350-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
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.
aiot-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:
aiot-flash -i rity-bringup-image
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:
The mmc0 and rootfs partitions do not support individual updates.
To flash just one partition, you can run the following command:
cd $BUILD_DIR/tmp/deploy/images/i350-evk aiot-flash <partition_name> aiot-flash kernel # example to update kernel partition
The following table shows common
<file> used in rity-demo-image:
Once you see
Looking for a MediaTek SoC ... prompt, put the board into download mode. You should be able to see flashing process started after releasing the volume up button.