Driver Commands

The tables below provide a summary of driver commands for the Verdin i.MX 8M Plus Dahlia.

Some of the drivers are commented out in the buildfile. To use these drivers on the target hardware, you may need to uncomment them in the buildfile, rebuild the image, and then load the image onto the board.

The order that the drivers are started in the provided buildfile is one way to start them. The order that you start the drivers is completely customizable and is often specific to your system requirements. For example, if you need an audible sound to play immediately, you must start the audio driver earlier than other drivers. It's important to recognize that the order you choose impacts the boot time.

Note:
Some drivers depend on other drivers, so it's sometimes necessary to start them in a specific order.
  • For more information on best practices for building an embedded system and optimizing boot times for your system, see the Building Embedded Systems and the Boot Optimization guides in the QNX Software Development Platform 8.0 documentation.
  • For more information about the drivers and commands listed here, see the QNX OS Utilities Reference. This chapter provides information about BSP-specific options for any of the commands and drivers that aren't described in the QNX OS Utilities Reference. In some cases, the driver or command is specific to this BSP, in which cases, you'll find the information in the chapter BSP-specific Drivers and Utilities.
Here's the list of drivers available for this board and the order in which they appear in the buildfile:

Startup

Device Startup
Command startup-imx8mp-verdin -W
Required binaries startup-imx8mp-verdin
Required libraries libstartup.a
Source location $BSP_ROOT_DIR/src/hardware/startup/boards/imx8mp (common), $BSP_ROOT_DIR/src/hardware/startup/boards/imx8mp/verdin (board-specific)

In additional to the common options available for the startup-* command as described in the QNX OS Utilities Reference in the QNX SDP 8.0 documentation, this driver supports these options:

-W
Enable watchdog timer support. Ensure that you start the watchdog driver after when you use this option.

Serial

Device Serial
Command for UART3 (X18) devc-sermx1 -e -F -S -u 3 0x30880000,60
Required binaries devc-sermx1
Required libraries libc.so.6, libgcc_s.so.1, libsecpol.so
Source location $BSP_ROOT_DIR/src/hardware/devc/sermx1

For more information about this driver, see the devc-sermx1 section in the BSP-specific Drivers and Utilities chapter of this guide.

I2C

Device I2C
Command (I2C1) i2c-imx -p 0x30A20000 -i67 -c66000000
Command (I2C2) i2c-imx -p 0x30A30000 -i68 -c66000000
Command (I2C3) i2c-imx -p 0x30A40000 -i69 -c66000000
Command (I2C4) i2c-imx -p 0x30A50000 -i70 -c66000000
Required binaries i2c-imx
Required libraries libc.so.6, libgcc_s.so.1, libsecpol.so
Source location $BSP_ROOT_DIR/src/hardware/i2c/imx

For more information about this driver, see the i2c-imx section in the BSP-specific Drivers and Utilities chapter of this guide.

Network

Device Ethernet
Command

io-sock -m phy -m fdt -m phy_fdt -d dwceqos -m pci -d em -d ix -d re -m usb -d axe -d axge -d cdce -d smsc

Required binaries io-sock, dhcpcd, dhcpcd-run-hooks, ifconfig, if_up, pfctl, netstat
Required libraries devs-dwceqos.so, devs-em.so, devs-ix.so, devs-re.so, devs-axe.so, devs-axge.so, devs-cdce.so, devs-smsc.so libsocket.so, libsecpol.so, libedit.so, libexpat.so, libxo.so, libfdt.so, librpc.so, libjail.so, mods-phy.so, mods-pci.so, mods-usb.so, mods-fdt.so, mods-phy_fdt.so, libgcc_s.so.1, libc.so.6, qcrypto-openssl-3.so, libtracelog.so, libqcrypto
Source location Binary only

For more information about this driver, see devs-dwceqos.so in the BSP-specific Drivers and Utilities chapter of this guide.

For information about io-sock, see QNX SDP 8.0 High-Performance Networking Stack User's Guide.

Note:
There must be a filesystem on the device for dhcpcd to generate an IP address and for generating SSH keys. If no persistent filesystem is is present then a RAM file system will be created at /dev/fs9p0.

PCI Server

Device PCI
Command pci-server --bus-scan-limit=1 -c
Required binaries pci-server
Required libraries pci_hw-nxp-imx8m-cpu.so, libc.so.6, libgcc_s.so.1, libsecpol.so, pci_server-buscfg-generic.so, pci_debug2.so, pci_slog2.so, pci_strings.so, pci_cap-0x01.so, pci_cap-0x05.so, pci_cap-0x10.so, pci_cap-0x11.so
Configuration files /etc/system/config/pci/pci_hw-imx8m-verdin.cfg
Environment variables PCI_HW_MODULE,

PCI_HW_CONFIG_FILE,

PCI_DEBUG_MODULE,

PCI_BASE_VERBOSITY,

PCI_SLOG_MODULE,

PCI_BKWD_COMPAT_MODULE,

PCI_MODULE_BLACKLIST,

For more information about the environment, see the Environment variables section in the Overview chapter of the PCI Server User's Guide.

Source location Prebuilt only

For more information about this driver, see the pci-server section in the QNX OS Utilities Reference guide of the QNX SDP 8.0 documentation.

Real-time clock (RTC)

Device RTC
Command rtc hw
Required binaries rtc, date
Required libraries libc.so.6, libgcc_s.so.1
Source location src/utils/r/rtc

For more information about this driver, see the rtc in the Utilities Reference guide of the QNX SDP 8.0 documentation.

SD/MMC

Device SD/MMC
Command (microSD card driver)

devb-sdmmc-mx8x cam pnp,cache,quiet blk ra=64k:2048k,memory="sysram&below4G:sysram",maxio=256,cache=4m disk name=sd sdio idx=1,bs=cd=0x30210000^12^588,verbose=1

waitfor /dev/sd

Command ( eMMC, which uses USDHC3 controller)

devb-sdmmc-mx8x cam cache,quiet sdmmc partitions=on blk ra=64k:2048k,memory="sysram&below4G:sysram",maxio=256,cache=4m disk name=emmc sdio idx=2,emmc,bw=8,hs=tuning_mode=standard,verbose=1

waitfor /dev/emmc0
Required binaries devb-sdmmc-mx8x
Required libraries libc.so.6, libgcc_s.so.1, libsecpol.so, cam-disk.so, io-blk.so, libcam.so
Source location $BSP_ROOT_DIR/src/hardware/devb/sdmmc

For more information about this driver, see devb-sdmmc-mx8x in the chapter BSP-specific Drivers and Utilities of this guide.

SPI

Device SPI
Command spi-ecspi
Required binaries spi-ecspi
Required libraries libc.so.6, libgcc_s.so.1, libsecpol.so
Configuration files spi.conf (Update the configuration file for DMA, as required)
Source location $BSP_ROOT_DIR/src/hardware/spi/ecspi

For more information about this driver, see spi-ecspi in the chapter BSP-specific Drivers and Utilities of this guide.

USB OTG host controller (io-usb-otg stack)

Device USB host controller
Command for xHCI USBH4 (X8) io-usb-otg -d hcd-imx8-xhci ioport=0x38100000,irq=72,ioport=0x38200000,irq=73
Required binaries io-usb-otg, usb, tcpm-imx8mp
Required libraries libusbdi.so, devu-hcd-imx8-xhci.so, libc.so.6, libgcc_s.so.1,
Source location Prebuilt only

The tcpm-imx8mp is a utility provided by NXP. You must run tcpm-imx8mp after you run the devu-hcd-imx8-xhci driver to start USB Type-C. For information about the tcpm-imx8mp utility, see the NXP documentation.

Example of xHCI controller:
io-usb-otg -d hcd-imx8-xhci ioport=0x38100000,irq=72,ioport=0x38200000,irq=73
waitfor /dev/usb/io-usb-otg 4
waitfor /dev/usb/devu-hcd-imx8-xhci.so 4
tcpm-imx8mp &
devb-umass cam pnp
When a mass storage device is plugged in, devb-umass creates a resource manager under /dev/hdXtY where X represents the partition number and Y represents the partition type. For example, if you use a mass storage with one FAT32 partition (MBR), it creates two resource manager paths, which are /dev/hd0 and /dev/hd0t11. You would mount the second resource manager, where in this example, 11 specifies a FAT32 filesystem (i.e., mount -t dos /dev/hd0t11 /fs/usb0).

For more information about the devu-hcd-imx8-xhci.so driver, see the devu-hcd-imx8-xhci.so section in the BSP-specific Drivers and Utilities chapter.

GPIO

Device GPIO
Command (/dev/gpio) gpio-imx8mp
Required binaries gpio-imx8mp
Required libraries libslog2.so, libsecpol.so
Source location $BSP_ROOT_DIR/src/hardware/support/gpio-imx/resmgr, $BSP_ROOT_DIR/src/hardware/support/gpio-imx/test

For more information about this driver, see gpio-imx8mp in the chapter BSP-specific Drivers and Utilities of this guide.

Watchdog utility

To enable the watchdog:

  1. Modify the buildfile so that startup launches with the -W option:

    startup-imx8mp-verdin -u arg -W
  2. Launch the watchdog timer utility early on in the boot script:

    wdtkick -t 5000
Device Watchdog timer
Command wdtkick -t 5000
Required binaries wdtkick
Required libraries libc.so.6, libgcc_s.so.1
Source location $BSP_ROOT_DIR/src/hardware/support/wdtkick

For more information about this driver, see wdtkick in the Utilities Reference guide of the QNX SDP 8.0 documentation.

Page updated: