Migrating i.MX 6SoloX SOM to Release 2.3.2 Print


This note explains how to upgrade the i.MX 6SoloX SOM running an earlier release to Release 2.3.2 and newer. The procedure below assumes that you have configured networking in U-Boot and placed the release 2.3.2 images to the TFTP directory on your host.

Perform the following step-wise procedure to migrate:

  • Reboot and stop at the U-Boot prompt:
  • U-Boot 2015.04-imx6sx-2.3.1 (Feb 28 2017 - 19:16:36)netw

    CPU:    Freescale i.MX6SX rev1.2 at 792 MHz
    CPU:    Temperature 50 C
    Reset cause: WDOG
    Board: Emcraft SLX-SOM rev 2A
    I2C:     ready
    DRAM:    512 MiB
    NAND:    512 MiB
    MMC:     FSL_SDHC: 0
    Display: LCD-TN43 (480x272)
    Video: 480x272x24
    gis input --- No input
    In:      serial
    Out:     serial
    Err:     serial
    Net:     FEC [PRIME]
    Normal Boot
    Hit any key to stop autoboot: 0
    SLX-SOM U-Boot >

  • Print the current U-Boot environment:
  • SLX-SOM U-Boot > print
    addip=setenv bootargs ${bootargs} 0
    ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:eth0:off fec_mac=${ethaddr} args=run args_quiet0
    args_common=console=ttymxc0,1152000
    args_nfs=setenv bootargs ${args_common} ignore_loglevel root=/dev/nfs0
    nfsroot=${serverip}:/mnt/nfs/slx-som/rootfs,v3,nolock0
    args_quiet=setenv bootargs ${args_common} ${ubirfs} quiet=quiet0
    args_verbose=setenv bootargs ${args_common} ${ubirfs} ignore_loglevel0
    autoload=yes0
    baudrate=1152000
    boot_dtb=nand read ${dtb_addr} ${dtb_offset} 0x20000 && bootm ${loadaddr} - ${dtb_addr}0
    bootargs=console=ttymxc0,115200 rootwait=1 rw ubi.mtd=4,2048 rootfstype=ubifs root=ubi0:rootfs ubi.fm_autoconvert=1 quiet=quiet ip=172.17.80.3:172.17.0.1::::eth0:off fec_mac=3C:FB:96:77:88:AB bootcmd=run reliableboot0
    bootdelay=10
    dtb_addr=0x830000000
    dtb_offset=0xe000000
    dtbimage=slx-som/rootfs.dtb0
    dtbupdate=tftp ${dtbimage} && nand erase.spread ${dtb_offset} ${filesize} && nand write ${loadaddr} ${dtb_offset} ${filesize}0
    ethact=FEC0
    ethaddr=3C:FB:96:77:88:AB0
    ethprime=FEC0
    fileaddr=807fffc00
    filesize=51e5a00
    flashsize=51e5a00
    image=psl/slx/imx6sx-2.3.1/rootfs.uImage0
    ipaddr=172.17.80.30
    loadaddr=0x807fffc00
    nandboot=nand read ${loadaddr} ${uImage_offset} ${flashsize} && run args addip && run boot_dtb0
    netboot=tftp ${image} && run args addip && run boot_dtb0
    panel=LCD-TN430
    reliableboot=run nandboot0
    rootfs_offset=0x1a200000
    rootfsimage=rootfs.ubi0
    rootfsupdate=tftp ${rootfsimage} && nand erase.spread ${rootfs_offset} 0xa000000 && nand write ${loadaddr} ${rootfs_offset} ${filesize}0
    serverip=172.17.0.10
    splash_offset=0x4000000
    splashfile=slx-som/boot_screen.bmp0
    splashimage=0x80007fc00
    splashpos=m,m0
    splashupdate=tftp ${splashfile} && nand erase.spread ${splash_offset} ${filesize} && nand write ${loadaddr} ${splash_offset} ${filesize}0
    uImage_offset=0xe200000
    ubirfs=rootwait=1 rw ubi.mtd=4,2048 rootfstype=ubifs root=ubi0:rootfs ubi.fm_autoconvert=10
    update=tftp ${image} && nand erase.spread ${uImage_offset} ${filesize} && nand write ${loadaddr} ${uImage_offset} ${filesize} && setenv flashsize ${filesize} && saveenv
    verify=no

    Environment size: 2164/65531 bytes
    SLX-SOM U-Boot >

  • Update the rootfs image:
  • SLX-SOM U-Boot > setenv rootfsimage psl/slx/imx6sx-2.3.2/rootfs.ubi
    SLX-SOM U-Boot > save
    Saving Environment to NAND...
    Erasing NAND...
    Erasing at 0x220000 -- 100% complete.
    Writing to NAND... OK
    SLX-SOM U-Boot > run rootfsupdate
    Using FEC device
    TFTP from server 172.17.0.1; our IP address is 172.17.80.3
    Filename 'psl/slx/imx6sx-2.3.2/rootfs.ubi'.
    Load address: 0x807fffc0
    Loading:#########################################################
    #################################################################
    #################################################################
    #################################################################
    ...

  • Update the kernel image:
  • SLX-SOM U-Boot > setenv image psl/slx/imx6sx-2.3.2/rootfs.uImage
    SLX-SOM U-Boot > save
    Saving Environment to NAND...
    Erasing NAND...
    Erasing at 0x220000 -- 100% complete.
    Writing to NAND... OK
    SLX-SOM U-Boot >
    SLX-SOM U-Boot > run update
    Using FEC device
    TFTP from server 172.17.0.1; our IP address is 172.17.80.3
    Filename 'psl/slx/imx6sx-2.3.2/rootfs.uImage'.
    Load address: 0x807fffc0
    Loading:#########################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #########################################
    7.1 MiB/s
    done
    Bytes transferred = 5367472 (51e6b0 hex)

    NAND erase.spread: device 0 offset 0xe20000, size 0x51e6b0
    Erasing at 0x1320000 -- 100% complete.
    OK

    NAND write: device 0 offset 0xe20000, size 0x51e6b0
    5367472 bytes written: OK
    Saving Environment to NAND...
    Erasing redundant NAND...
    Erasing at 0x240000 -- 100% complete.
    Writing to redundant NAND... OK
    SLX-SOM U-Boot >

  • Update the DTB image:
  • SLX-SOM U-Boot > setenv dtbimage psl/slx/imx6sx-2.3.2/rootfs.dtb
    SLX-SOM U-Boot > save
    Saving Environment to NAND...
    Erasing NAND...
    Erasing at 0x220000 -- 100% complete.
    Writing to NAND... OK
    SLX-SOM U-Boot >
    SLX-SOM U-Boot >
    SLX-SOM U-Boot > run dtbupdate
    Using FEC device
    TFTP from server 172.17.0.1; our IP address is 172.17.80.3
    Filename 'psl/slx/imx6sx-2.3.2/rootfs.dtb'.
    Load address: 0x807fffc0
    Loading: ###
    437.5 KiB/s
    done
    Bytes transferred = 37651 (9313 hex)

    NAND erase.spread: device 0 offset 0xe00000, size 0x9313
    Erasing at 0xe00000 -- 100% complete.
    OK

    NAND write: device 0 offset 0xe00000, size 0x9313
    37651 bytes written: OK
    SLX-SOM U-Boot >

  • Boot to the shell prompt:
  • SLX-SOM U-Boot > re
    resetting ...

    U-Boot 2015.04-imx6sx-2.3.1 (Feb 28 2017 - 19:16:36)

    CPU: Freescale i.MX6SX rev1.2 at 792 MHz
    CPU: Temperature 55 C
    Reset cause: WDOG
    Board: Emcraft SLX-SOM rev 2A
    I2C: ready
    ...
    fec 21b4000.ethernet (unnamed net_device) (uninitialized): Invalid MAC address: 00:00:00:00:00:00 fsl-asoc-card sound: ASoC: CPU DAI (null) not registered
    init started: BusyBox v1.17.0 (2017-04-18 17:41:00 +0400)
    ~ #
    ~ #
    ~ # main: GUI started
    ~ #

  • Update the U-Boot image and reboot:
  • ~ # kobs-ng -x -v /u-boot.imx
    MTD CONFIG:
    chip_0_device_path = "/dev/mtd0"
    chip_1_device_path = "(null)"
    search_exponent = 2
    data_setup_time = 80
    data_hold_time = 60
    address_setup_time = 25
    data_sample_time = 6
    ...
    mtd: We write one page for save guard. *
    ~ # reboot
    The system is going down NOW!
    Sent SIGTERM to all processes
    TERM
    Requesting system rebootesses
    reboot: Restarting system


    U-Boot 2015.04-imx6sx-2.3.2 (Apr 18 2017 - 17:33:59)

    CPU:Freescale i.MX6SX rev1.2 at 792 MHz
    CPU:Temperature 51 C
    Reset cause: WDOG
    ...

  • Stop at the U-Boot prompt:
  • U-Boot 2015.04-imx6sx-2.3.2 (Apr 18 2017 - 17:33:59)
    CPU:   Freescale i.MX6SX rev1.2 at 792 MHz
    CPU:   Temperature 55 C
    Reset cause: WDOG
    Board: Emcraft SLX-SOM rev 2A
    I2C:   ready
    DRAM:  512 MiB
    NAND:  512 MiB
    MMC:   FSL_SDHC: 0
    Display: LCD-TN43 (480x272)
    Video: 480x272x24
    gis input --- No input
    In:    serial
    Out:   serial
    Err:   serial
    Net:   FEC [PRIME]
    Normal Boot
    Hit any key to stop autoboot:  0
    SLX-SOM U-Boot >

  • Reset the U-Boot environment to default:
  • SLX-SOM U-Boot > env default -f -a
    ## Resetting to default environment
    SLX-SOM U-Boot > save
    Saving Environment to NAND...
    Erasing NAND...
    Erasing at 0x220000 -- 100% complete.
    Writing to NAND... OK
    SLX-SOM U-Boot >

  • Restore the networking parameters saved at step 1:
  • SLX-SOM U-Boot > setenv ethaddr 3C:FB:96:77:88:AB
    SLX-SOM U-Boot > setenv ipaddr 172.17.80.3
    SLX-SOM U-Boot > setenv serverip 172.17.0.1
    SLX-SOM U-Boot > save
    Saving Environment to NAND...
    Erasing redundant NAND...
    Erasing at 0x260000 -- 100% complete.
    Writing to redundant NAND... OK
    SLX-SOM U-Boot >

  • Optionally, restore other custom macros and variables saved on step 1.
  • Reset and boot to the new Linux image:
  • SLX-SOM U-Boot > reset

    resetting ...


    U-Boot 2015.04-imx6sx-2.3.2 (Apr 18 2017 - 17:33:59)

    CPU:   Freescale i.MX6SX rev1.2 at 792 MHz
    CPU:   Temperature 55 C
    Reset cause: WDOG
    Board: Emcraft SLX-SOM rev 2A
    I2C:   ready
    DRAM:  512 MiB
    NAND:  512 MiB
    MMC:   FSL_SDHC: 0
    Display: LCD-TN43 (480x272)
    Video: 480x272x24
    gis input --- No input
    In:    serial
    Out:   serial
    Err:   serial
    Net:   FEC [PRIME]
    Normal Boot
    Hit any key to stop autoboot:  0 


    Loading from nand0, offset 0xe20000
    Image Name:   Linux-4.5.0-imx6sx-2.3.2
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    5367408 Bytes = 5.1 MiB
    Load Address: 80008000
    Entry Point:  80008000

    NAND read: device 0 offset 0xe00000, size 0x20000
    131072 bytes read: OK
    ## Booting kernel from Legacy Image at 807fffc0 ...
    Image Name:   Linux-4.5.0-imx6sx-2.3.2
    Image Type:   ARM Linux Kernel Image (uncompressed)
    Data Size:    5367408 Bytes = 5.1 MiB
    Load Address: 80008000
    Entry Point:  80008000
    Verifying Checksum ... OK
    ## Flattened Device Tree blob at 83000000
    Booting using the fdt blob at 0x83000000
    Loading Kernel Image ... OK
    Loading Device Tree to 9df30000, end 9df3c312 ... OK

    Starting kernel ...
    Uncompressing Linux... done, booting the kernel.
    Booting Linux on physical CPU 0x0
    Linux version 4.5.0-imx6sx-2.3.2 ( This e-mail address is being protected from spambots. You need JavaScript enabled to view it ) (gcc version 4.9.3 (GCC) ) #1 SMP PREEMPT Tue Apr 18 17:40:24 +0400 2017
    CPU: ARMv7 Processor [412fc09a] revision 10 (ARMv7), cr=10c5387d
    CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
    Machine model: Emcraft SLX-SOM board
    debug: ignoring loglevel setting.
    Memory policy: Data cache writealloc
    >On node 0 totalpages: 131072
    free_area_init_node: node 0, pgdat 8094e8c0, node_mem_map 9fbf8000
    ...