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.
