Driver Commands
The tables below provide a summary of driver commands for the i.MX 95 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.
- 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.
CAN
| Device | FlexCAN |
| Command (CAN1) | devcan-flexcan -h -M -b250K -u1 can0 |
| Command (CAN2) | 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 (I2C2) | i2c-lpi2c -v -I1 --u 2 |
| Command (I2C3) | i2c-lpi2c -v -I2 --u 3 |
| Command (I2C4) | i2c-lpi2c -v -I3 --u 4 |
| Command (I2C5) | i2c-lpi2c -v -I4 --u 5 |
| Command (I2C6) | i2c-lpi2c -v -I5 --u 6 |
| Command (I2C7) | i2c-lpi2c -v -I6 --u 7 |
| Required binaries | i2c-lpi2c |
| Required libraries | libc.so.6, libgcc_s.so.1 |
| Source location | $BSP_ROOT_DIR/src/hardware/i2c/lpi2c |
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 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-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 |
Octal xSPI NOR Flash Memory
| Device | xSPI NOR FLash |
| Command | devf-nxp-fspi -s soc=base=0x425E0000:irq=80:abma_base=0x28000000:rxclksrc=1 |
| Required binaries | devf-nxp-fspi, flashctl |
| Required libraries | libsecpol.so, libgcc_s.so.1, libc.so.6 |
| Source location | $BSP_ROOT_DIR/src/hardware/flash/boards/nxp-fspi |
For more information about this driver, see the
devf-nxp-fspi
section in the BSP-specific Drivers and Utilities
chapter of this guide.
Real-time clock (RTC)
| Device | RTC |
| Command | rtc-imx95 hw |
| Required binaries | rtc-imx95, date |
| Required libraries | libc.so.6, libgcc_s.so.1 |
| Source location | src/utils/rtc |
For more information about this driver, see the rtc-imx95
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=io=rgpio:cd=0x43820000^00^83,verbose=1 |
| 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,emmc,bw=8,verbose=1 |
| 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 |
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,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/emmcdevb-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=io=rgpio:cd=0x43820000^00^83,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 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 -c /etc/system/config/spi/spi.conf |
| 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 |
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-imx95-evk -u reg -W |
| Required binaries | startup-imx95-evk |
| Required libraries | N/A |
| Source location | $BSP_ROOT_DIR/src/hardware/startup/boards/imx
(common) $BSP_ROOT_DIR/src/hardware/startup/boards/imx/imx9x/95/evk (i.MX95 EVK) |
In addition to the startup-*
options described in the
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=0x4C200100,irq=208,phy=0x4C200000 -dhcd-imx8-xhci ioport=0x4C100000,irq=207 |
| Required binaries | io-usb-otg, usb, tcpm-imx95 |
| Required libraries | devu-hcd-ehci-mx28.so, devu-hcd-imx8-xhci.so, libc.so.6, libgcc_s.so.1 |
| Source location | Prebuilt only |
The tcpm-imx95 is a utility provided by NXP. You must run tcpm-imx95 after you run the devu-hcd-imx8-xhci driver to start USB Type-C. For information about the tcpm-imx95 utility, see the NXP documentation.
io-usb-otg -t memory=/memory/below4G -dhcd-ehci-mx28 ioport=0x4C200100,irq=208,phy=0x4C200000
waitfor /dev/usb/io-usb-otg 4
waitfor /dev/usb/devu-hcd-ehci-mx28.so 4
Example of xHCI controller:
io-usb-otg -t memory=/memory/below4G -dhcd-imx8-xhci ioport=0x4C100000,irq=207
waitfor /dev/usb/io-usb-otg 4
waitfor /dev/usb/devu-hcd-imx8-xhci.so 4
tcpm-imx95 -u 7 -a 0x52 -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, 11specifies a FAT32 filesystem (i.e., mount -t dos /dev/hd0t11 /fs/usb0).
For more information about the devu-hcd-ehci-mx28.so and >devu-hcd-imx8-xhci.so
drivers, see the devu-hcd-ehci-mx28.so
and devu-hcd-imx8-xhci.so
sections
in the BSP-specific Drivers and Utilities
chapter.
USB device controller (io-usb-otg stack)
| Device | USB device controller |
| Command (Mass storage device) | io-usb-otg -d dcd-usbumass-mx8-ci ioport=0x4C200000,irq=208,phy=0x4C200000 |
| Command (Serial) | io-usb-otg -d dcd-usbser-mx8-ci ioport=0x4C200000,irq=208,phy=0x4C200000 -n /dev/otg/io-usb-otg |
| Required binaries | io-usb-otg, usb, ulink_ctrl |
| Required libraries | devu-dcd-usbumass-mx8-ci.so, devu-dcd-usbser-mx8-ci.so, libusbdci.so, libc.so, libgcc_s.so, libusbdci.so |
| Source location | Prebuilt only |
#Start USB device stack
io-usb-otg -d dcd-usbser-mx8-ci ioport=0x4C200000,irq=208 -n /dev/otg/io-usb-otg
waitfor /dev/otg/io-usb-otg
waitfor /dev/otg/devu-dcd-usbser-mx8-ci.so
#Start the USB CDC-ACM function driver and enable USB soft connect
devc-serusb_dcd -e -v -F -s -d iface_list=0,unit=1,path=/dev/otg/io-usb-otg
waitfor /dev/serusb1
ulink_ctrl -l 1 -s /dev/otg/io-usb-otg
#Create Mass storage (USB stick):
devb-ram ram capacity=262144 disk name=ramdisk blk cache=512k
waitfor /dev/ramdisk0
fdisk /dev/ramdisk0 add -t 12
mount -e /dev/ramdisk0
waitfor /dev/ramdisk0t12
mkdosfs /dev/ramdisk0t12
mount -t dos /dev/ramdisk0t12 /ramdisk
#Start the USB device stack
io-usb-otg -d dcd-usbumass-mx8-ci ioport=0x4C200000,irq=208 -n /dev/otg/io-usb-otg
waitfor /dev/otg/io-usb-otg
waitfor /dev/otg/devu-dcd-usbumass-mx8-ci.so
#Start the mass storage function driver and enable USB soft connect
devu-umass_client-block -l lun=0,fname=/dev/ramdisk0t12 -s /dev/otg/io-usb-otg
ulink_ctrl -l 1 -s /dev/otg/io-usb-otg
- In the example above, you only need to specify a different manager name (-n option) for the io-usb-otg command when it's the second instance. This is because the first instance of the io-usb-otg command is using the default path already. Alternatively, you can start multiple devices using one io-usb-otg command.
- You can't run the devu-hcd-ehci-mx28.so driver as a host controller and device controller (dcd-usbumass-mx8-ci, usb-dcd-usbser.mx8-ci) at the same time. For example, if you've run the dcd-usbumass-mx8-ci device controller and want to run a host controller instead, you must first slay the io-usb-otg instance associated with the device controller (e.g., /dev/otg/io-usb-otg path) before you start the host controller.
For more information about the devu-dcd-usbser-mx8-ci.so or dcd-usbumass-mx8-ci.so drivers, see, devu-dcd-usbser-mx8-ci.so
and devu-dcd-usbumass-mx8-ci.so
, respectively in the BSP-specific Drivers and Utilities
chapter.
Watchdog utility
To enable the watchdog:
Launch startup with the -W option:
startup-imx95-evk -WLaunch 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 |
wdtkickin the Utilities Reference guide of the QNX SDP 8.0 documentation.
