How to write image to VisionSOM-6ULL NAND memory using UUU tool on Linux
From SomLabs Wiki
How to write image to VisionSOM-6ULL NAND memory using UUU tool on Linux

Prerequisites
- PC with Linux Ubuntu 16.04 or newer
- A complete package with NXP UUU application - ftp.somlabs.com/Tools/somlabs-visionsom-flasher.zip
- vsom-6ull-fb.bin - u-boot binary file to be programmed into target (from the complete package above or generated by yourself)
- rootfs.ubi - root file system image (generated by yourself)
Information
- SoMLabs solution is based on NXP UUU tool (Universal Update Utility), with some extensions added on top of it to easily handle SoMLabs boards.
- You can use different file names than default (u-boot-dtb.imx, rootfs.ubi) - those names are just examples.
- Please note also, that file can be located in any directory - you need to specify complete file path then.
- If you are using VisionSOM module with i.MX6UL processor, please change in commands given below '6ull' to '6ul'
- Default NAND paritions layout for 4M boot variant (remaining NAND area is used for root file system by default):

Preparing
For programming a memory of VisionSOM-6ULL, switch boot selector to mode: SERIAL.
BOOTx | Boot Mode | |
---|---|---|
BOOT1 | BOOT0 | |
1 | 1 | Reserved |
1 | 0 | Internal |
0 | 1 | Serial |
0 | 0 | Fuses |

Connect the VisionCB-6ULL-STD board to the host PC using microUSB cable connected to the USB-OTG connector. To observe progress/error reports during programming, please use serial console. If you are using standard VisionSOM carrier board (VisionCB-6ULL-STD), this can be done by using build in serial/usb converter.

Programming VisionSOM NAND Flash memory
Make UUU executable:
chmod 755 uuu
For memory programing, use command:
sudo ./uuu -b vsom_6ull_nand_flasher vsom-6ull-fb.bin rootfs.ubi
(while: vsom-6ull-fb.bin - u-boot binaries; rootfs.ubi - user root filesystem)
At the console, a progress bar will appear:

The serial terminal output will look like this:
U-Boot 2018.03-00022-g23f402fe9c-dirty (May 27 2019 - 23:52:18 +0200) CPU: Freescale i.MX6ULL rev1.0 792 MHz (running at 396 MHz) CPU: Industrial temperature grade (-40C to 105C) at 49C Reset cause: POR Model: SoMLabs VisionSOM-6ULL Board: SomLabs VisionSOM-6ULL DRAM: 512 MiB board_fix_fdt(): boot device: 14, fdt@8789ed8c fdt_enable_by_ofname(): enabling node [/soc/gpmi-nand@01806000] @00001080...result: 0 SomLabs VisionSOM-6ULL - configuring NAND interface... NAND: 512 MiB MMC: No panel detected: default to SL-TFT7-TP Display: SL-TFT7-TP (800x480) Video: 800x480x24 Attempt to read outside the flash area In: serial Out: serial Err: serial board_late_init() Fastboot: Normal Boot from USB for uuu Hit any key to stop autoboot: 0 Starting download of 687104 bytes ..... downloading of 687104 bytes finished imxkobs: Image header: header: 402000D1 boot_data: 877FF420 dcd_addr: 877FF42C self: 877FF400 csf: 00000000 boot_data@ 80800020 start: 877FF000 length: 000A8000 do_imxkobs(): max_boot_stream_size_in_bytes = 1048576, boot_stream_size_in_bytes = 688128, boot_stream_size_in_pages = 168 do_imxkobs(): fw#1 0x00100000 - 0x00200000 (0x001a8000) do_imxkobs(): fw#2 0x00200000 - 0x00300000 (0x002a8000) do_imxkobs(): fcb checksum: FFFFFA7E do_imxkobs(): erasing boot area... do_imxkobs(): writing firmware image copy 1... do_imxkobs(): writing firmware image copy 2... do_imxkobs(): writing DBBT header... do_imxkobs(): writing DBBT data... do_imxkobs(): writing FCB... writing fcb[0] @ 00000000 writing fcb[1] @ 00080000 do_imxkobs(): done Starting download of 47185920 bytes .......................................................................... .......................................................................... .......................................................................... .......................................................................... ................................................................ downloading of 47185920 bytes finished NAND erase.part: device 0 offset 0x400000, size 0x1fc00000 Skipping bad block at 0x1ff00000 Skipping bad block at 0x1ff40000 Skipping bad block at 0x1ff80000 Skipping bad block at 0x1ffc0000 OK NAND write: device 0 offset 0x400000, size 0x2d00000 47185920 bytes written: OK resetting ...
If the process ends with success, the following information will be shown on the console:

The SoM will not boot due to present boot selector setup. Revert the boot selector back to: INTERNAL and press RESET. The board should start booting.
