How to write image to VisionSOM-6ULL NAND/eMMC using UUU tool on Windows
From SomLabs Wiki
How to write image to VisionSOM-6ULL NAND/eMMC using UUU tool on Windows
Contents
Prerequisites
- PC with Microsoft Windows 10 64-bit OS
- A complete package with NXP UUU application
- u-boot-dtb.imx/vsom-6ull-fb.bin - u-boot binary file to be programmed into traget
- rootfs.ubi - root file system image
Information
- SOMLABS solution is based on NXP UUU tool, with some extensions added on top of it to easly handle SOMLABS boards.
- You can use different file names than default (u-boot-dtb.imx, rootfs.ubi) - those names are just a example.
- 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-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, this can be done by using build in serial/usb converter.
Programming board with eMMC/uSD card
Flasher does not assume any specific partitions layout. It simply takes raw image of eMMC/SD card and writes it into the storage.
For image programing, use command:
uuu.exe -b vsom_6ull_emmc_flasher sdcard.img
while: sdcard.img - raw image of SD card or eMMC memory
At the command prompt, 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 50C Reset cause: POR Model: SoMLabs VisionSOM-6ULL Board: SomLabs VisionSOM-6ULL DRAM: 512 MiB board_fix_fdt(): boot device: 7, fdt@8789ed8c fdt_enable_by_ofname(): enabling node [/soc/aips-bus@02100000/qspi@021e0000] @00 00641C...result: 0 fdt_enable_by_ofname(): enabling node [/soc/aips-bus@02100000/usdhc@02194000] @0 0005950...result: 0 board_fix_fdt(): configuring USDHC2 for SD mode board_fix_fdt(): offset: 00005950, status 0 NAND: MXS NAND: clock is disabled! 0 MiB MMC: FSL_SDHC: 0 No panel detected: default to SL-TFT7-TP Display: SL-TFT7-TP (800x480) Video: 800x480x24 Error (-2): cannot determine file size In: serial Out: serial Err: serial board_late_init() flash target is MMC:0 Fastboot: Normal Boot from USB for uuu Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Starting download of 16776232 bytes .......................................................................... ..................................................... downloading of 16776232 bytes finished writing to partition 'all' sparse flash target is mmc:0 writing to partition 'all' for sparse, buffer size 16776232 Flashing sparse image at offset 0 Flashing Sparse Image ........ wrote 16776192 bytes to 'all' Starting download of 16776244 bytes .......................................................................... ..................................................... downloading of 16776244 bytes finished writing to partition 'all' sparse flash target is mmc:0 writing to partition 'all' for sparse, buffer size 16776244 Flashing sparse image at offset 0 Flashing Sparse Image ........ wrote 16776192 bytes to 'all' (...) downloading of 16776244 bytes finished writing to partition 'all' sparse flash target is mmc:0 writing to partition 'all' for sparse, buffer size 16776244 Flashing sparse image at offset 0 Flashing Sparse Image ........ wrote 16776192 bytes to 'all' Starting download of 8396852 bytes ................................................................ downloading of 8396852 bytes finished writing to partition 'all' sparse flash target is mmc:0 writing to partition 'all' for sparse, buffer size 8396852 Flashing sparse image at offset 0 Flashing Sparse Image ........ wrote 8396800 bytes to 'all' resetting ...
If the process ends with success, a properly information will show on the command prompt:
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.
Programming board with NAND Flash
For memory programing, use command:
uuu.exe -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 command prompt, 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, a properly information will show on the command prompt:
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.
Splash screen
Prepare spalsh image - maximum size is 800x480px (equal to screen resolution), bpp shall be 24bit or 8-bit with pallete. Image shall be stored as .bmp file. Please ensure that file size is smaller than 1MB.
Flashing splash screen to eMMC
There is no need to perform any additional step to program custom splash image - for applying a splash screen, simply put prepared 'splash.bmp' file into '/boot' directory of the root file system. Please ensure if u-boot on your SD card image supports splash screen displaying.
Flashing splash screen to NAND
Run command:
uuu.exe -b vsom_6ull_nand_splash splash.bmp
Be aware if any of erase blocks in 'splash' partiton are bad, then max. size of splash screen will be smaller. To meet size limit, it is possible to compress bitmap file with gzip and write compressed file to NAND.