Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Set up the Boot switch on the IMXRT1170-EVK board for SDP: set SW1 as 0001 and re-enable the power supply.

  2. On the development host run the Secure Provisioning Tool. In the New Workspace window, select the MIMXRT1176 processor and click Create:

    image-20250319-100327.png
  3. Run the Flash Programmer tool: click Tools->Flash Programmer menu or press Ctrl+R. Answer Yes in the pooped up window:

    image-20250319-100418.png
  4. Click the Load button, select the imxrt1170_demo.img from the file system and confirm Load:

    image-20250319-100457.png
  5. Make sure the Auto erase and Auto verify check-buttons are set and the click the Write button:

    image-20250319-100536.png
  6. Wait until the write operation is completed:

    image-20250319-100549.png
  7. When the writing is completed, close the MCUXpresso Secure Provisioning Tool. Then set up boot jumpers on the target board to boot from QSPI Flash: set SW1 as 0010, SW2 as 0000000000.

  8. Use your preferable serial communication tool to connect to the target serial console (we use picocom in this demo):

    Code Block
    $ picocom -l -b 115200 /dev/ttyACM0 
    picocom v3.1
    
    port is        : /dev/ttyACM0
    flowcontrol    : none
    baudrate is    : 115200
    parity is      : none
    databits are   : 8
    stopbits are   : 1
    escape is      : C-a
    local echo is  : no
    noinit is      : no
    noreset is     : no
    hangup is      : no
    nolock is      : yes
    send_cmd is    : sz -vv
    receive_cmd is : rz -vv -E
    imap is        : 
    omap is        : 
    emap is        : crcrlf,delbs,
    logfile is     : none
    initstring     : none
    exit_after is  : not set
    exit is        : no
    
    Type [C-a] [C-h] to see available commands
    Terminal ready
  9. Power cycle the board. U-Boot and then Linux should start automatically on the serial console:

    Code Block
    U-Boot SPL 2023.04 (Mar 1424 2025 - 1511:5407:3241 +0000)
    Trying to boot from NOR
    
    
    U-Boot 2023.04 (Mar 1424 2025 - 1511:5407:3241 +0000)
    
    Model: NXP imxrt1170-evk board
    DRAM:  960 KiB (effective 64.9 MiB)
    Core:  72 devices, 15 uclasses, devicetree: separate
    MMC:   FSL_SDHC: 0
    Loading Environment from nowhere... OK
    In:    serial@4007c000
    Out:   serial@4007c000
    Err:   serial@4007c000
    Net:   eth0: ethernet@40424000
    Hit any key to stop autoboot:  0 
    ## Booting kernel from Legacy Image at 30080000 ...
       Image Name:   Linux-6.1.22
       Image Type:   ARM Linux Multi-File Image (uncompressed)
       Data Size:    8315694 Bytes = 7.9 MiB
       Load Address: 80008000
       Entry Point:  80008001
       Contents:
          Image 0: 8301696 Bytes = 7.9 MiB
          Image 1: 13986 Bytes = 13.7 KiB
       Verifying Checksum ... OK
    ## Flattened Device Tree from multi component Image at 30080000
       Booting using the fdt at 0x3086accc
    Working FDT set to 3086accc
       Loading Multi-File Image
       Loading Device Tree to 2032900083982000, end 2032f6a1839886a1 ... OK
    Working FDT set to 2032900083982000
    
    Starting kernel ...
    
    Booting Linux on physical CPU 0x0
    Linux version 6.1.22 (vskvortsov@workbench.emcraft.com) (arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release), GNU ld (GNU Arm Embedded Toolchain 10.3-2021.10) 2.36.1.20210621) #2 PREEMPT FriMon Mar 1424 1511:2920:4709 UTC 2025
    CPU: ARMv7-M [411fc272] revision 2 (ARMv7M), cr=00000000
    CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
    OF: fdt: Machine model: NXP IMXRT1170 EVK board
    earlycon: lpuart32_imxrt0 at MMIO32 0x4007c000 (options '')
    printk: bootconsole [lpuart32_imxrt0] enabled
    Reserved memory: created DMA memory pool at 0x83b00000, size 1 MiB
    OF: reserved mem: initialized node dmapool@83b00000, compatible id shared-dma-pool
    Zone ranges:
      Normal   [mem 0x0000000080000000-0x0000000083ffffff]
    Movable zone start for each node
    Early memory node ranges
      node   0: [mem 0x0000000080000000-0x0000000083afffff]
      node   0: [mem 0x0000000083b00000-0x0000000083ffffff]
    Initmem setup node 0 [mem 0x0000000080000000-0x0000000083ffffff]
    Built 1 zonelists, mobility grouping on.  Total pages: 16256
    Kernel command line: earlycon=lpuart32_imxrt,0x4007c000
    Dentry cache hash table entries: 8192 (order: 3, 32768 bytes, linear)
    Inode-cache hash table entries: 4096 (order: 2, 16384 bytes, linear)
    mem auto-init: stack:off, heap alloc:off, heap free:off
    Memory: 51572K51556K/65536K available (3663K kernel code, 195K rwdata, 960K rodata, 3072K init, 93K bss, 13964K13980K reserved, 0K cma-reserved)
    rcu: Preemptible hierarchical RCU implementation.
    rcu: RCU calculated value of scheduler-enlistment delay is 100 jiffies.
    NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
    rcu: srcu_init: Setting srcu_struct sizes based on contention.
    Switching to timer-based delay loop, resolution 41ns
    sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 89478484971ns
    clocksource: mxc_timer1: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns
    Calibrating delay loop (skipped), value calculated using timer frequency.. 48.00 BogoMIPS (lpj=24000)
    pid_max: default: 4096 minimum: 301
    Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
    rcu: Hierarchical SRCU implementation.
    rcu:    Max phase no-delay instances is 400.
    devtmpfs: initialized
    DMA: default coherent area is set
    clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275000 ns
    futex hash table entries: 16 (order: -5, 192 bytes, linear)
    pinctrl core: initialized pinctrl subsystem
    NET: Registered PF_NETLINK/PF_ROUTE protocol family
    imxrt1170-pinctrl 400e8000.iomuxc: initialized IMX pinctrl driver
    imxrt1170-pinctrl 40c08000.iomuxc_lpsr: initialized IMX pinctrl driver
    imxrt1170-pinctrl 40c94000.iomuxc_snvs: initialized IMX pinctrl driver
    mxs_phy 40434000.usbphy1: supply phy-3p0 not found, using dummy regulator
    mxs_phy 40438000.usbphy2: supply phy-3p0 not found, using dummy regulator
    SCSI subsystem initialized
    usbcore: registered new interface driver usbfs
    usbcore: registered new interface driver hub
    usbcore: registered new device driver usb
    imx-lpi2c 40c34000.lpci2c: use pio mode
    i2c i2c-0: LPI2C adapter registered
    pps_core: LinuxPPS API ver. 1 registered
    pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    PTP clock support registered
    Bluetooth: Core ver 2.22
    NET: Registered PF_BLUETOOTH protocol family
    Bluetooth: HCI device and connection manager initialized
    Bluetooth: HCI socket layer initialized
    Bluetooth: L2CAP socket layer initialized
    Bluetooth: SCO socket layer initialized
    clocksource: Switched to clocksource mxc_timer1
    NET: Registered PF_INET protocol family
    IP idents hash table entries: 2048 (order: 2, 16384 bytes, linear)
    tcp_listen_portaddr_hash hash table entries: 1024 (order: 0, 4096 bytes, linear)
    Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear)
    TCP bind hash table entries: 1024 (order: 1, 8192 bytes, linear)
    TCP: Hash tables configured (established 1024 bind 1024)
    UDP hash table entries: 256 (order: 0, 4096 bytes, linear)
    UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear)
    NET: Registered PF_UNIX/PF_LOCAL protocol family
    RPC: Registered named UNIX socket transport module.
    RPC: Registered udp transport module.
    RPC: Registered tcp transport module.
    RPC: Registered tcp NFSv4.1 backchannel transport module.
    Bus freq driver module loaded
    Initialise system trusted keyrings
    workingset: timestamp_bits=30 max_order=14 bucket_order=0
    fuse: init (API version 7.37)
    Key type asymmetric registered
    Asymmetric key parser 'x509' registered
    Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
    io scheduler mq-deadline registered
    io scheduler kyber registered
    OF: graph: no port node found in /soc/mipi_dsi@4080c000
    mipi_dsi_northwest 4080c000.mipi_dsi: i.MX MIPI DSI driver probed
    mxsfb 40804000.lcdif: Defer fb probe due to dispdrv not ready
    4007c000.serial: ttyLP0 at MMIO 0x4007c010 (irq = 467, base_baud = 1500000) is a FSL_LPUART
    fsl-lpuart 4007c000.serial: Serial: Console lpuart rounded baud ratefrom 187500 to 115200
    printk: console [ttyLP0] enabled
    printk: console [ttyLP0] enabled
    printk: bootconsole [lpuart32_imxrt0] disabled
    printk: bootconsole [lpuart32_imxrt0] disabled
    PPP generic driver version 2.4.2
    PPP BSD Compression module registered
    PPP Deflate Compression module registered
    usbcore: registered new interface driver rt2800usb
    usbcore: registered new interface driver cdc_acm
    cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
    usbcore: registered new interface driver uas
    usbcore: registered new interface driver usb-storage
    Goodix-TS 0-0014: supply AVDD28 not found, using dummy regulator
    Goodix-TS 0-0014: ID 911, version: 1060
    input: Goodix Capacitive TouchScreen as /devices/platform/soc/40c34000.lpci2c/i2c-0/0-0014/input/input0
    i2c_dev: i2c /dev entries driver
    usbcore: registered new interface driver btusb
    sdhci: Secure Digital Host Controller Interface driver
    sdhci: Copyright(c) Pierre Ossman
    sdhci-pltfm: SDHCI platform and OF driver helper
    mmc0 bounce up to 128 segments into one, max segment size 65536 bytes
    usbcore: registered new interface driver usbhid
    usbhid: USB HID core driver
    NET: Registered PF_PACKET protocol family
    Bluetooth: RFCOMM TTY layer initialized
    Bluetooth: RFCOMM socket layer initialized
    Bluetooth: RFCOMM ver 1.11
    ARMv7-M VFP coprocessor found
    VFP: Double precision floating points are supported
    Loading compiled-in X.509 certificates
    mmc0: SDHCI controller on 40418000.usdhc [40418000.usdhc] using DMA
    mipi_dsi_northwest 4080c000.mipi_dsi: MIPI DSI dispdv inited
    mxsfb 40804000.lcdif: registered mxc display driver mipi_dsi_northwest
    mmc0: host does not support reading read-only switch, assuming write-enable
    mmc0: new high speed SDHC card at address 0001
    mmcblk0: mmc0:0001 EB1QT 29.8 GiB 
     mmcblk0: p1
    mxsfb 40804000.lcdif: initialized
    input: gpio-keys as /devices/platform/gpio-keys/input/input2
    cfg80211: Loading compiled-in X.509 certificates for regulatory database
    cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
    cfg80211: failed to load regulatory.db
    Freeing unused kernel image (initmem) memory: 3072K
    This architecture does not have kernel memory protection.
    Run /init as init process
    [79] Jan 01 00:00:0102 Running in background
    / # random: crng init done

...