Skip to content

CONGA SMX8 MINI

Board Identification

Identifiers:

  • SOM: conga-SMX8-Mini, PN 051203 rev-A
  • Mother board: conga-SMC1/SMARC-ARM, PN 020750

Yocto MACHINE: imx8mm-cgt-sx8m-rev-a

Documentation:

Features:

  • SoC: i.MX 8M Mini, quad core ARM Cortex-A53 64-bit + ARM Cortex M4
  • RAM: 2GB LDPDDR4
  • Storage:
    • 8 MB QSPI NOR flash memory
    • 16 GB eMMC
  • 1x RJ45 Ethernet
  • 4x USB ports type A
  • Video & sound:
    • LVDS
    • Audio jack
  • PCIe Mini Card slot
  • Micro SD slot

Boot Sequence

  • The ROM code loads imx-boot from serial NOR Flash via FlexSPI at offset 0.
  • The following components of imx-boot get executed:
    • U-Boot SPL
    • imx-atf
    • optee
    • U-Boot
  • U-Boot starts the kernel
  • The kernel mounts the initial ram file system (initramfs) and starts Init

First Installation

The steps to do the first installation are:

  • Get a running U-Boot on the machine
  • Install U-boot on the SPI NOR flash
  • Install the remaining of the system on the eMMC

Get a running U-boot in RAM using UUU

  • Get UUU: uuu can generally be installed as a package of your Linux distribution.
  • Connect the micro USB connector X2 of the board to you host PC.
  • Set SW4.1 force recovery switch to ON (or alternatively, toggle SW5).
  • Upload U-Boot SPL on your machine and have it running:
    sudo uuu SDP: boot -f "tmp/deploy/images/imx8mm-cgt-sx8m-rev-a/imx-boot-dev"
    
  • Upload U-Boot proper and have it running. This relies on the ability of U-Boot SPL to boot in SDP (Serial Download Protocol) mode:
    sudo uuu SDPV: write -f "tmp/deploy/images/imx8mm-cgt-sx8m-rev-a/imx-boot-dev"
    sudo uuu SDPV: jump
    

On the serial console (say /dev/ttyUSB0), imx-boot-dev can be seen starting.

U-Boot SPL 2022.04-cgtimx8mm__lf_v2022.04__cgtsx8m-A+gf0b79e36c3 (May 24 2023 - 11:01:29 +0000)
power_bd71837_init
SX8M RevA detected
Memory configuration found (2G)
Doing LPDDR init - 2G variant
DDRINFO: start DRAM init
DDRINFO: DRAM rate 3000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
SEC0:  RNG instantiated
Normal Boot
...
Hit any key to stop autoboot:  0
u-boot=>

Install U-Boot on the SPI NOR flash, using a running U-Boot & TFTP

u-boot=> setenv ipaddr 169.254.142.1
u-boot=> setenv serverip 169.254.142.224
u-boot=> tftp imx-boot-dev
Load address: 0x40400000
Loading: #################################################################
         #################################################################
         #####
         8.8 MiB/s
done
Bytes transferred = 1973280 (1e1c20 hex)

u-boot=> sf probe
SF: Detected w25q64dw with page size 256 Bytes, erase size 4 KiB, total 8 MiB

u-boot=> sf update $loadaddr 0 $filesize
device 0 offset 0x0, size 0x1e1c20
1973280 bytes written, 0 bytes skipped in 15.807s, speed 127799 B/s

Install the remaining of the system on the eMMC, using a running U-Boot, TFTP & gzwrite

u-boot=> tftp welma-image-minimal-dev-imx8mm-cgt-sx8m-rev-a.wic.gz
Load address: 0x40400000
Loading: #################################################################
         #################################################################
         ...
         ###
         10.9 MiB/s
done
Bytes transferred = 162243799 (9aba4d7 hex)
u-boot=> gzwrite mmc 2 $loadaddr $filesize

982515712/985340928
        985340928 bytes, crc 0x6dbe2c97

Regular Boot

The regular boot is done from NOR Flash, as follows:

  • Set SW4.1 recovery switch to OFF (and also SW5).
  • Start the board.

Appendix

Connecting the board

STM32MP157C-DK2.png

Hardware Watchdog

The HW watchdog is configured:

/sys/class/watchdog/watchdog0 -> ../../devices/platform/soc@0/30000000.bus/30280000.watchdog/watchdog/watchdog0
  • Started by U-Boot (timeout 60 s)
  • Serviced by the Linux kernel (as long as no userspace process opens /dev/watchdog0 and takes over)

Using fastboot

An external host can send commands to U-Boot using the fastboot protocol.

Example:

Starting fastboot in U-Boot
u-boot=> usb start
u-boot=> fastboot usb 1
board_usb_init 0, type 1

Sending commands to U-Boot
$ sudo uuu FB: ucmd sf probe
$ sudo uuu FB: ucmd reset