This README contains some useful information for TQMa8MxNL on MBa8Mx REV.030x
[[TOC]]
- TQMa8MQNL REV.020x
- TQMa8MDLNL REV.020x
See here for the software base versions.
See top level README for configurations usable as MACHINE.
MBa8x HW Rev.030x only
- RAM configs: 1 GiB
- CPU variants:
- i.MX8MNQ
- i.MX8MNDL
- Fuses
- speed grade / temperature grade detection
- UART (console on UART3)
- GPIO
- LED
- Button
- BOOT_CFG
- MUX CFG
- I2C
- GPIO expander
- system EEPROM parsing
- e-MMC / SD
- Read
- Write
- ENET (GigE via Phy on MBa8Mx)
- Bootdevices:
- SD-Card on USDHC2
- e-MMC on USDHC3
- QSPI-NOR on FlexSPI
- USB
- USB 2.0 Host / Hub
- USB DRD (USB 2.0 OTG, Cable Detect, VBUS)
- QSPI NOR
- Read with 1-1-1 SDR
- PP / Erase with 1-1-1 SDR
- Cortex M7
- env settings for starting from TCM
- examples with UART4 as debug console
TODO or not tested / supported
- RAM 2 GB
- CPU variants i.MX8MNS
- RAM configs 1 GiB
- CPU variants:
- i.MX8MNQ
- i.MX8MNDL
- speed grade / temperature grade detection
- I2C
- Temperature Sensors
- RTC
- EEPROMS
- GPIO expanders
- GPIO
- LED
- Button
- HOG
- UART
- console on UART3
- 2 x UART via pin head or X15
- SPI
- 2 x via spidev in userland
- ENET (GigE via Phy on MBa8Mx)
- Audio
- Codec Line In (X14)
- Codec Line Out (X13)
- USB
- USB 2.0 Host / Hub
- USB DRD (USB 2.0 OTG, Cable Detect, VBUS)
- PWM
- Buzzer
- Backlight for LVDS
- DSI
- DSI to LVDS bridge
- GPU
- QSPI NOR
- Read with 1-1-4 SDR
- PP / Erase with 1-1-1 SDR
- Cortex M7
- examples running from TCM
- use UART4 as debug console
- MIPI CSI (see Issues section)
- Gray with Vision Components GmbH camera (Sensor OV9281)
- Raw Bayer with Vision Components GmbH camera (Sensor IMX327)
- Audio
- Audio codec mic in not tested
- DSI
- DSI to DP bridge
- MIKRO Bus
- SIM
- UART4: needs ATF modification, to make it usable for linux. Primary used as
debug UART for Cortex M7. Modification needed in file
plat/imx/imx8m/imx8mn/imx8mn_bl31_setup.c
. Disable assignment of UART4 - delete statementRDC_PDAPn(RDC_PDAP_UART4, D1R | D1W),
in rdc configuration table. - MBa8Mx before REV.0300 is not supported.
- Default setting for
fdt_file
in u-boot does not match new naming scheme. See Build Artifacts for complete list of supported Device Tree files - LVDS shows wrong colors on older Tianma display kit (HW issue on older display kit revisions)
- Mikrobus Modul RTC5 on ecspi1 don't answer
- Audio does not work after suspend / resume (clocking problem)
- MIPI CSI
- driver stack is not completely v4l2-compliance test proof. The IOCTLS for format / resolution enumeration and query can return invalid / wrong values depending of the internal state of the driver stack. Please follow given examples for a working setup.
- IMX327: bayer support with 12 Bit does not work at the moment, only 10 Bit with 1280x720 is tested with gstreamer
- IMX327: when configuring to SRGGB12 reboot may be needed to get a working capture again
- OV9281: gstreamer: capture not starting out of the box, need to use
yavta
to capture some frames,gstreamer
starts afterwards
Artifacs can be found at the usual locations for bitbake:
${TMPDIR}/deploy/images/${MACHINE}
- *.dtb: device tree blobs
- imx8mn-tqma8mqnl-mba8mx.dtb
- imx8mn-tqma8mqnl-mba8mx-lcdif-lvds-tm070jvhg33.dtb (LVDS support with TIANMA TM070JVHG33)
- imx8mn-tqma8mqnl-mba8mx-lcdif-lvds-tm070jvhg33-imx327.dtb (LVDS support with TIANMA TM070JVHG33 plus Vision Components CSI camera with Sony IMX327)
- imx8mn-tqma8mqnl-mba8mx-lcdif-lvds-tm070jvhg33-ov9281.dtb (LVDS support with TIANMA TM070JVHG33 plus Vision Components CSI camera with OmniVision OV9281)
- imx8mn-tqma8mqnl-mba8mx-rpmsg.dtb (CortexM / RPMSG Support)
- Image: Linux kernel image
- *.wic: SD / e-MMC system image
- *.rootfs.ext4: RootFS image
- *.rootfs.tar.gz: RootFS archive (NFS root etc.)
- imx-boot-${MACHINE}-sd.bin-flash_spl_uboot: boot stream for SD / e-MMC
- imx-boot-${MACHINE}-sd.bin-flash_evk_flexspi: boot stream for FlexSPI
- imx-boot-${MACHINE}-mfgtool.bin-flash_spl_uboot: boot stream for UUU
- hello_world.bin (Cortex M7 demo, UART4, TCM)
- rpmsg_lite_pingpong_rtos_linux_remote.bin (Cortex M7 demo, UART4, TCM)
Note:
- S5 / S6: not used for TQMa8MxNL
- S9:2: BOOT_MODE0
- S9:3: BOOT_MODE1
- S9:1 and S9:4: not needed for booting
- S10: Board config
- X means position of DIP, - means don't care
DIP S10 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
ON | x | x | x | x |
OFF |
BOOT Mode [3:0] is mapped to the following DIP Switches:
- 3: DIP Switch BOOT_MODE 3 (TQMa8MxML ADAP)
- 2: DIP Switch BOOT_MODE 2 (TQMa8MxML ADAP, inverted)
- 1: DIP Switch S9:3 (MBa8Mx, inverted)
- 0: DIP Switch S9:2 (MBa8Mx, inverted)
BOOT_MODE: 0000
BOOT MODE (ADAP) |
4 | 3 | 2 | 1 | MBa8Mx S9 |
4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|
ON | x | x | x | ||||||
OFF | - | x | - | - | - |
BOOT_MODE: 0001
BOOT MODE (ADAP) |
4 | 3 | 2 | 1 | MBa8Mx S9 |
4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|
ON | x | x | |||||||
OFF | - | x | - | - | x | - |
BOOT_MODE: 0010
BOOT MODE (ADAP) |
4 | 3 | 2 | 1 | MBa8Mx S9 |
4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|
ON | x | x | |||||||
OFF | - | x | - | - | x | - |
BOOT_MODE: 0011
BOOT MODE (ADAP) |
4 | 3 | 2 | 1 | MBa8Mx S9 |
4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|
ON | x | ||||||||
OFF | - | x | - | - | x | x | - |
BOOT_MODE: 0110
BOOT MODE (ADAP) |
4 | 3 | 2 | 1 | MBa8Mx S9 |
4 | 3 | 2 | 1 |
---|---|---|---|---|---|---|---|---|---|
ON | x | ||||||||
OFF | - | x | x | - | - | x | - |
S7
- 1/2: unused
- 3: UART2_MUX_CTRL
- ON: UART3/UART_SYSC -> USB (X16)
- OFF: UART3/UART_SYSC -> Pin head (X17)
- BSP default: ON
- 4: UART1_MUX_CTRL
- ON: UART1/UART2 -> USB (X15)
- OFF: UART1/UART2 -> Pin head (X17)
- BSP default: OFF
S8
- 1: TQMa8M_SYS_RST#
- BSP default: OFF
- 2: TQMa8M_ONOFF
- BSP default: OFF
- 3: I2C_ADDR_SW (I2C Address of GPIO Expander D31)
- BSP default: OFF
- 4: SPI_MUX_CTRL
- ON: SPI1 Signals to X20 (MikroBus)
- OFF: SPI1 Signals to X34
- BSP default: OFF
S9
- 1: EN_VCC_FAN
- 2: BOOT_MODE0
- 3: BOOT_MODE1
- 4: DSI_MUX_CTL
- ON: DSI to eDP bridge
- OFF: DSI to LVDS bridge
Complete system image:
write *.wic Image to SD (offset 0)
To create a bootable SD-Card with boot stream only (file name see above):
write bootstream at offset 32 kiB (0x8000) to SD-Card
Example for Linux:
sudo dd if=<bootstream> of=/dev/sd<x> bs=1k seek=32 conv=fsync
To create a bootable e-MMC with complete system image:
write *.wic image to e-MMC (offset 0)
To create a bootable e-MMC with boot stream only (file name see above)
Boot from SD-Card and write bootstream at offset 32 kiB (0x8000) to e-MMC
Example for Linux:
sudo dd if=<bootstream> of=/dev/mmcblk0 bs=1k seek=32 conv=fsync
Example for U-Boot:
# 32k -> 64 blocks -> 0x40
tftp <bootstream>
setexpr bsz ${filesize} + 1ff
setexpr bsz ${bsz} / 200
printenv bsz
mmc dev 0
mmc write ${loadaddr} 40 ${bsz}
To create a bootable QSPI NOR with boot stream only (file name see above)
Example for U-Boot, booting from SD-Card:
# SPI-NOR @ FlexSPI, offset 0
tftp <bootstream>
sf probe
sf update ${loadaddr} 0 ${filesize}
For ease of development a set of variables and scripts are in default env.
Note: Update and start scripts expect a partitioned / initialized SD-Card or e-MMC.
U-Boot environment variables
uboot
: name of bootstream image (default = bootstream.bin)mmcdev
: 0 for e-MMC, 1 for SD-Card (automatically generated, can be overwritten)mmcpart
: partition number for kernel and devicetree (default = 1)mmcpath
: path to kernel and device tree (default = /)fdt_file
: device tree blob,image
: kernel image,
SD / e-MMC
Download bootstream from TFTP and update:
run update_uboot_mmc
Download device tree blob from TFTP and update:
run update_fdt_mmc
Download kernel image from TFTP and update:
run update_kernel_mmc
Cortex M7 image: set env var cm_image
to name of your Cortex M7 image,
provide the file via TFTP and update via run update_cm_mmc
FLEXSPI
Download bootstream from TFTP and update:
run update_uboot_spi
See here for details about using Serial Download mode and UUU.
Note: see known issue section above.
Gray with Omnivision OV9281
- Devicetree:
imx8mn-tqma8mqnl-mba8mx-lcdif-lvds-tm070jvhg33-ov9281.dtb
- gstreamer example:
# configure
yavta -f Y8 -s 1280x800 -c20 /dev/video0
# grab to file
WAYLAND_DISPLAY=/run/wayland-0 gst-launch-1.0 v4l2src device=/dev/video0 ! videorate ! video/x-raw,format=GRAY8,framerate=1/1 ! \
jpegenc ! multifilesink location=test%d.jpg
# show live video
WAYLAND_DISPLAY=/run/wayland-0 gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! \
autovideosink -v sync=false
Raw Bayer with Sony IMX327
- Devicetree:
imx8mn-tqma8mqnl-mba8mx-lcdif-lvds-tm070jvhg33-imx327.dtb
- gstreamer example:
# configure
yavta -f SRGGB10 -s 1280x720 /dev/video0
# show live video
WAYLAND_DISPLAY=/run/wayland-0 gst-launch-1.0 v4l2src device=/dev/video0 force-aspect-ratio=false ! \
video/x-bayer,format=rggb,bpp=10,width=1280,height=720,framerate=25/1 ! \
bayer2rgbneon show-fps=t reduce-bpp=t ! autovideoconvert ! \
autovideosink sync=false
Demos are compiled to use UART4 (MBa8Mx X17:56,58 + X17:54 for GND) with 115200 8N1. For demos available in the BSP and the device tree to be used see artifacts section.
Detailed documentation for CortexM support can be found here.
SEL_USB_HUB_B (GPIO2_1) | |
---|---|
USB OTG (X19) | 0 (default) |
USB HUB (X6) | 1 |
Change by switching from GPIO2_1 (SEL_USB_HUB_B)
gpio toggle GPIO2_1
followed by usb reset