Installing Linux Using USB Serial Downloader Print


Understanding NXP uuu Tool

The i.MX 8M Mini kit software manufacturing procedure makes use of the NXP uuu tool running on the Linux development host. The uuu tool performs installation of the Yocto images from the development host to the kit using the USB Serial Downloader interface.


Locating uuu Tool and Scripts

The latest version of the uuu tool can be downloaded from the NXP github page: https://github.com/NXPmicro/mfgtools/releases/latest

The uuu tool operation is controlled by special scripts, which direct the tool what operations to perform. Scripts for flashing EMMC and SD card via USB can be downloaded from the below links:
uuu.script-imx8mmnavq-sdcard
uuu.script-imx8mmnavq-emmc


Installing Using USB Serial Downloader Protocol (SDP)

Perform the following step-wise procedure to install the Yocto images to the Emcraft i.MX 8M Mini kit:

  1. Power the kit off by disconnecting the USB Type C cable from the development host.
  2. Set the board boot mode to the USB serial downloader mode by setting the boot as follows:
  3. Power the kit on by connecting the USB Type C cable to the development host.
  4. Check that the new USB device has appeared on your development host:

    [psl@i7 ~]$ lsusb | grep -i nxp
    Bus 008 Device 010: ID 1fc9:0134 NXP Semiconductors

  5. On the host, go to the Yocto images build directory:

    [psl@i7 ~]$ cd /tmp/deploy/images/imx8mmnavq/
    [psl@i7 imx8mmnavq]$ ls -1
    ...
    imx-boot-imx8mmnavq-sd.bin-flash_navq
    imx-image-hovergames-demo-imx8mmnavq.wic.bz2
    ...

    The images above are:
    • imx-boot-imx8mmnavq-sd.bin-flash_navq - U-Boot initial bootloader image;
    • imx-image-hovergames-demo-imx8mmnavq.wic.bz2 - MMC bootable image (U-Boot, Linux, root filesystem).
  6. Copy the uuu tool and the uuu manufacturing scripts into the build directory:

    [psl@i7 imx8mmnavq]$ ls -1 uuu*
    uuu
    uuu.script-imx8mmnavq-emmc
    uuu.script-imx8mmnavq-sdcard
    [psl@i7 imx8mm]$ cat uuu.script-imx8mmnavq-sdcard
    uuu_version 1.0.1
    ...
    [psl@i7 imx8mmnavq]

  7. Depending on what storage will be used for boot, microSD or EMMC, launch the uuu tool with appropriate script as a parameter for installing the bootable Linux image:

    [psl@i7 imx8mmnavq]$ sudo ./uuu -d uuu.script-imx8mmnavq-emmc
    uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.82-0-g9c56e46

    Wait for Known USB Device Appear...

  8. The uuu tool will proceed to install the Production Yocto image to the storage device (EMMC or microSD card) on the target board:

    uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.3.74-2-g302da91

    Success 1 Failure 0

    1:2 1/ 1 [=================100%=================] S: boot -f imx-boot-imx8m
    1:3 7/ 7 [Done ] FB: Done

  9. When uuu has finished, the bootable Linux image has been installed to the on-module storage. Given proper setting of the boot switches, next power-on will boot the target board from the the appropriate storage device (EMMC or microSD).


Verifying New Installation

Perform the following step-wise procedure to verify boot of the newly installed Linux images from the on-module eMMC:

  1. Power the kit off by disconnecting the USB Type C cable from the development host.
  2. Depending on what storage device is used for boot, EMMC or microSD, select the appropriate boot mode by setting the boot switches as follows:
  3. Power the kit on by connecting the USB Type C cable to the development host.
  4. Verify that the following Linux boot-up messages appear on the serial console:

    U-Boot SPL 2019.04+gd62847f248 (May 19 2020 - 09:22:02 +0000) power_bd71837_init DDRINFO: start DRAM init DDRINFO:ddrphy calibration done DDRINFO: ddrmix config done Normal Boot Trying to boot from MMC2 U-Boot 2019.04+gd62847f248 (May 19 2020 - 09:22:02 +0000) CPU: Freescale i.MX8MMQ rev1.0 1800 MHz (running at 1200 MHz) CPU: Commercial temperature grade (0C to 95C) at 36C Reset cause: POR Model: Emcraft i.MX8MM Cube board DRAM: 2 GiB ... Starting kernel ... [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 5.4.3+ga922dd67988c (oe-user@oe-host) (gcc version 9.2.0 (GCC)) #1 SMP PREEMPT Tue May 19 10:16:49 UTC 2020 [ 0.000000] Machine model: FSL i.MX8MM EVK board [ 0.000000] earlycon: ec_imx6q0 at MMIO 0x0000000030890000 (options '115200') [ 0.000000] printk: bootconsole [ec_imx6q0] enabled [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] Reserved memory: created CMA memory pool at 0x0000000078000000, size 640 MiB ... Mounting /run/media/mmcblk2p1... [ OK ] Mounted /run/media/mmcblk2p1. [ 8.494745] fec 30be0000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx [ 8.502532] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 10.115764] random: crng init done [ 10.119172] random: 7 urandom warning(s) missed due to ratelimiting [ OK ] Started Load/Save Random Seed. i.MX 8M Mini Release beta1-20200519 imx8mmcube ttymxc1 imx8mmcube login:

  5. Enter the Linux session by typing navq for both, user name and password. At this point, you have the full control of the i.MX 8M Mini kit from Linux, as the superuser.