Driver Commands

The tables below provide a summary of driver commands for the i.MX 93 EVK board.

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 Utilities Reference. In some cases, the driver or command is specific to this BSP, in which case, you'll find the information in the BSP-specific Drivers and Utilities chapter.
Here's the list of drivers available for this board and the order in which they appear in the buildfile:

CAN

Device FlexCAN
Command (FlexCAN2)

devcan-flexcan -h -M -b250K -u2 can1

Required binaries devcan-flexcan, canctl
Required libraries libc.so.6, libgcc_s.so.1
Source location $BSP_ROOT_DIR/src/hardware/can/flexcan

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

Inter-integrated Circuit (I2C) (four interfaces)

Device I2C
Command (I2C1) i2c-lpi2c -v -I0 --u 1
Command (I2C2) i2c-lpi2c -v -I1 --u 2
Command (I2C3) i2c-lpi2c -v -I2 --u 3
Command (I2C4) i2c-lpi2c -v -I3 --u 4
Required binaries i2c-lpi2c
Required libraries libc.so.6, libgcc_s.so.1
Source location $BSP_ROOT_DIR/src/hardware/i2c/imx

For more information about this driver, see the i2c-lpi2c 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 ffec -d dwceqos -m usb -d axe -d axge -d cdce -d smsc
Required binaries io-sock, if_up, dhcpcd, dhcpcd-run-hooks, ifconfig, pfctl, random
Required libraries devs-ffec.so, devs-dwceqos.so, devs-axe.so, devs-axge.so, devs-cdce.so, devs-smsc.so, libsocket.so, libsecpol.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

For more information about the devs-ffec.so and devs-dwceqos.so drivers, see devs-ffec.so and devs-dwceqos.soin the BSP-specific Drivers and Utilities chapter of this 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.

Real-time clock (RTC)

Device RTC
Command rtc-imx9 hw
Required binaries rtc-imx9, 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-imx9 section in the BSP-specific Drivers and Utilities chapter of this guide.

SD/MMC

Device SD/MMC
Command (SD driver) - USDHC2

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=0x43820000^00^91,verbose=1

waitfor /dev/sd0 3

Command (eMMC Driver) - USDHC1

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=0,~ac12,emmc,bw=8,verbose=1

waitfor /dev/emmc0 3

Required binaries devb-sdmmc-mx8x
Required libraries libcam.so, io-blk.so, cam-disk.so, libgcc_s.so.1, libc.so.6,libsecpol.so
Source location $BSP_ROOT_DIR/src/hardware/devb/sdmmc
Example of running eMMC driver and partitioning, formatting, and mounting a DOS partition on the the eMMC to /fs/emmc:
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=0,~ac12,emmc,bw=8,verbose=1
waitfor /dev/emmc0 3
fdisk /dev/emmc0 add -t 12
mount -e /dev/emmc0
waitfor /dev/emmc0t12
mkdosfs /dev/emmc0t12
mount -t dos /dev/emmc0t12 /fs/emmc
Example of mounting a DOS partition on the SD to the /fs/sd directory:
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=0x43820000^00^91,verbose=1
waitfor /dev/sd0 3
mount -t dos /dev/sd0t12 /fs/sd

For more information about this driver, see the devb-sdmmc-* options described in the QNX OS Utilities Reference guide of the QNX SDP 8.0 documentation.

Serial

Device Serial
Command for UART1 (USB connected to RS232 bridge for console) devc-sermx8 -e -F -S -u 1 0x44380000,51
Command for UART3 devc-sermx8 -F -S -u 3 0x42570000,100
Required binaries devc-sermx8
Required libraries libgcc_s.so.1, libc.so.6
Source location $BSP_ROOT_DIR/src/hardware/devc/sermx8

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

SPI

Device SPI
Command spi-imx8lpspi
Required binaries spi-imx8lpspi
Required libraries libgcc_s.so.1, libc.so.6
Configuration Files /etc/system/config/spi/spi.conf
Source location $BSP_ROOT_DIR/src/hardware/spi/imx8lpspi

In order to access the SPI3 thorugh the 40-pin dual-row Pin Header connector (J1001), the startup needs to be modified and recompiled. Please follow these steps to make the necessary changes in startup:

Make the following changes in $BSP_ROOT_DIR/src/hardware/startup/boards/imx/imx9x/93/evk/board.h:

#define IMX_UART3_INIT_ENABLED       0  -->  #define IMX_UART3_INIT_ENABLED       1
#define IMX_AUDIO_INIT_ENABLED       1  -->  #define IMX_AUDIO_INIT_ENABLED       0

In a terminal on your host system, run the following commands:

cd $BSP_ROOT_DIR/src/hardware/startup
make clean
make install
cd $BSP_ROOT_DIR/images
make clean
make

You should now have an IFS with accessible SPI3.

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

Startup

Device Startup
Command startup-imx93-evk -u reg -W
Required binaries startup-imx93-evk
Required libraries N/A
Source location $BSP_ROOT_DIR/src/hardware/startup/boards/imx93 (common)

$BSP_ROOT_DIR/src/hardware/startup\boards\imx93\evk (i.MX93 EVK)

In addition to the startup-* options described in the QNX OS Utilities Reference, you can also use the following option with this command:

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

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

USB host controller and OTG controller; host mode uses io-usb-otg stack.

Device USB host controller
Command

io-usb-otg -t memory=/memory/below4G -dhcd-ehci-mx28 ioport=0x4C100100,irq=219,phy=0x4C100000, ioport=0x4C200100,irq=220,phy=0x4C200000

Required binaries io-usb-otg, usb, tcpm-imx93
Required libraries devu-hcd-ehci-mx28.so, libc.so.6, libgcc_s.so.1
Source location Prebuilt only

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

Example of eHCI controller:
io-usb-otg -t memory=/memory/below4G -dhcd-ehci-mx28
    ioport=0x4C100100,irq=219,phy=0x4C100000,ioport=0x4C200100,irq=220,phy=0x4C200000
waitfor /dev/usb/io-usb-otg 4
waitfor /dev/usb/devu-hcd-ehci-mx28.so 4
tcpm-imx93 -u 3 -a 0x50 -p 500 &
tcpm-imx93 -u 3 -a 0x51 -p 500 &
                
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-ehci-mx28.so driver, see the devu-hcd-ehci-mx28.so section in the BSP-specific Drivers and Utilities chapter.

Watchdog utility

To enable the watchdog:

  1. Launch startup with the -W option:

    startup-imx93-evk -W
  2. Launch the watchdog timer utility early on in the boot script:

    wdtkick -t 5000
Device Watchdog timer
Command wdtkick

wdtkick -t 5000

Required binaries wdtkick
Required libraries libc.so.6, libgcc_s.so.1
For more information about this driver, see wdtkick in the QNX OS Utilities Reference guide of the QNX SDP 8.0 documentation.
Page updated: