iMX8M Industrial Accessing and Testing PeripheralsVoipac webshop
Elemental operations of iMX8M Industrial Development Kit interfaces in Max configuration are shown on this page.
Prerequisites
Hardware
- DC power supply (5V, 8A, 40W)
- iMX8M Industrial Development Kit Max
Peripherals and Accessories
- 1x FullHD monitor with Audio output
- 1x MicroSD card
- KOE LVDS capacitive display set
- Newhaven LVDS capacitive display set
- Digilent MIPI-CSI camera
- NXP MIPI-CSI camera
- CANBus module
- Wifi and Bluetooth antenna set
Cables
- Ethernet cable
- HDMI cable
- Micro USB cable
- USB to UART cable
- Headphones
Audio
Input: Search kernel log for wm8904 chip
Output: Audio chip is detected and bound as an input device
[ 1.864809] fsl-asoc-card sound-wm8904: failed to find codec device
[ 2.155773] wm8904 0-001a: 0-001a supply DCVDD not found, using dummy regulator
[ 2.163163] wm8904 0-001a: 0-001a supply DBVDD not found, using dummy regulator
[ 2.170561] wm8904 0-001a: 0-001a supply AVDD not found, using dummy regulator
[ 2.177846] wm8904 0-001a: 0-001a supply CPVDD not found, using dummy regulator
[ 2.185209] wm8904 0-001a: 0-001a supply MICVDD not found, using dummy regulator
[ 2.197860] wm8904 0-001a: revision A
[ 2.699093] debugfs: Directory '308b0000.sai' with parent 'wm8904-audio' already present!
[ 2.707395] fsl-asoc-card sound-wm8904: wm8904-hifi <-> 308b0000.sai mapping ok
[ 2.714808] fsl-asoc-card sound-wm8904: ASoC: no DMI vendor name!
[ 3.145901] #1: wm8904-audio
Input: Run amixer command
Output: Controls for card are available
root@imx8mq-voipac:~# amixer -c1
Simple mixer control 'Headphone',0
Capabilities: volume pswitch
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 63
Front Left: 46 [73%] [-11.00dB] Playback [on]
Front Right: 45 [71%] [-12.00dB] Playback [on]
Simple mixer control 'Headphone ZC',0
Capabilities: pswitch
Playback channels: Front Left - Front Right
Mono:
Front Left: Playback [on]
Front Right: Playback [on]
Simple mixer control 'Line Output',0
Capabilities: volume pswitch
Playback channels: Front Left - Front Right
Capture channels: Front Left - Front Right
Limits: 0 - 63
Front Left: 57 [90%] [0.00dB] Playback [on]
Front Right: 57 [90%] [0.00dB] Playback [on]
Simple mixer control 'Line Output ZC',0
Capabilities: pswitch
Playback channels: Front Left - Front Right
Mono:
Front Left: Playback [on]
Front Right: Playback [on]
...
Input: Boot-up the board with HDMI cable plugged in, connect headphones into HP_OUT connector and plug-in USB flash drive with wav file on it
Output: Sound is played and heard
root@imx8mq-voipac:~# aplay multimedia/sample.wav
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx8mq-voipac:~# #aplay -D sysdefault:CARD=wm8904audio multimedia/sample.wav
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=wm8904audio multimedia/sample.wav
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx8mq-voipac:~# aplay -D sysdefault:CARD=imxaudiohdmi multimedia/sample.wav
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Input: Plug headphones with microphone input into HP_OUT connector and microphone to MIC
Output: Microphone sound is played in headphones
root@imx8mq-voipac:~# #arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio
root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio
Input: Verify Digital microphone
Output: Microphone sound is played in headphones
root@imx8mq-voipac:~# amixer -c1 sset "Capture Input" "DMIC"
root@imx8mq-voipac:~# #arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio
root@imx8mq-voipac:~# arecord -D sysdefault:CARD=wm8904audio -t wav -f cd | aplay -D sysdefault:CARD=wm8904audio
User buttons
Input: Press Enter/Left/Right/Up/Down buttons
Output: Button events 1 and 0 are generated
root@imx8mq-voipac:~# evtest /dev/input/by-path/platform-gpio-buttons-event
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
Input device name: "gpio-buttons"
Supported events:
Event type 0 (EV_SYN)
Event type 1 (EV_KEY)
Event code 28 (KEY_ENTER)
Event code 103 (KEY_UP)
Event code 105 (KEY_LEFT)
Event code 106 (KEY_RIGHT)
Event code 108 (KEY_DOWN)
Properties:
Testing ... (interrupt to exit)
Reset button
Input: Press the RESET button
Output: The board will execute bootloader immediately with "Reset cause: POR"
Note: iMX8M Industrial Development Kit should never freeze or hang after the reset button was pressed. Testing the operation 10 times gives a reliable result
U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000) CPU: i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz) CPU: Industrial temperature grade (-40C to 105C) at 62C Reset cause: POR Model: Voipac i.MX8MQ EVK DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... OK [*]-Video Link 0imx8m_hdmi_probe ....
Power button
Input: Press the POWER button
Output: The board will shutdown. By pressing again board should start booting."
[ OK ] Stopped target Sound Card.
[ OK ] Stopped target System Time Synchronized.
[ OK ] Stopped target System Time Set.
[ OK ] Stopped target Timers.
[ OK ] Stopped Daily Cleanup of Temporary Directories.
Stopping Save/Restore Sound Card State...
Stopping Kernel Logging Service...
Stopping System Logging Service...
Stopping Getty on tty1...
Stopping Serial Getty on ttymxc0...
Stopping Hostname Service...
Stopping Load/Save Random Seed...
[ OK ] Stopped Kernel Logging Service.
[ OK ] Stopped System Logging Service.
[ OK ] Stopped Getty on tty1.
[ OK ] Stopped Serial Getty on ttymxc0.
[ OK ] Stopped Hostname Service.
[ OK ] Stopped Save/Restore Sound Card State.
[ OK ] Stopped Load/Save Random Seed.
[ OK ] Stopped Session c1 of user root.
[ OK ] Removed slice system-getty.slice.
[ OK ] Removed slice system-serial\x2dgetty.slice.
Stopping Login Service...
Stopping User Manager for UID 0...
[ OK ] Stopped User Manager for UID 0.
Stopping User Runtime Directory /run/user/0...
[ OK ] Unmounted /run/user/0.
[ OK ] Stopped User Runtime Directory /run/user/0.
[ OK ] Removed slice User Slice of UID 0.
Stopping D-Bus System Message Bus...
Stopping Permit User Sessions...
[ OK ] Stopped D-Bus System Message Bus.
[ OK ] Stopped Login Service.
[ OK ] Stopped Permit User Sessions.
[ OK ] Stopped target Basic System.
[ OK ] Stopped target Network.
[ OK ] Stopped target Paths.
[ OK ] Stopped Dispatch Password ��…ts to Console Directory Watch.
[ OK ] Stopped Forward Password R��…uests to Wall Directory Watch.
[ OK ] Stopped target Remote File Systems.
[ OK ] Stopped target Slices.
[ OK ] Removed slice User and Session Slice.
[ OK ] Stopped target Sockets.
[ OK ] Closed D-Bus System Message Bus Socket.
[ OK ] Closed dropbear.socket.
[ OK ] Stopped target System Initialization.
[ OK ] Closed Syslog Socket.
Stopping Network Name Resolution...
Stopping Network Time Synchronization...
[ OK ] Stopped Network Name Resolution.
[ OK ] Stopped Network Time Synchronization.
Stopping Network Service...
[ OK ] Stopped Create Volatile Files and Directories.
[ OK ] Stopped target Local File Systems.
Unmounting Temporary Directory (/tmp)...
Unmounting /var/volatile...
[ OK ] Stopped Network Service.
[ OK ] Unmounted Temporary Directory (/tmp).
[ OK ] Unmounted /var/volatile.
[ OK ] Stopped target Local File Systems (Pre).
[ OK ] Stopped target Swap.
[ OK ] Reached target Unmount All Filesystems.
[ OK ] Stopped Remount Root and Kernel File Systems.
[ OK ] Stopped Apply Kernel Variables.
[ OK ] Stopped Load Kernel Modules.
[ OK ] Stopped Create Static Device Nodes in /dev.
[ OK ] Reached target Shutdown.
[ OK ] Reached target Final Step.
[ OK ] Started Power-Off.
[ OK ] Reached target Power-Off.
[ 15.911216] systemd-shutdown[1]: Syncing filesystems and block devices.
[ 15.920832] systemd-shutdown[1]: Sending SIGTERM to remaining processes...
[ 15.936588] systemd-journald[247]: Received SIGTERM from PID 1 (systemd-shutdow).
[ 15.959340] systemd-shutdown[1]: Sending SIGKILL to remaining processes...
[ 15.975454] systemd-shutdown[1]: Unmounting file systems.
[ 15.982656] [353]: Remounting '/' read-only in with options '(null)'.
[ 16.020576] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[ 16.031646] systemd-shutdown[1]: All filesystems unmounted.
[ 16.037301] systemd-shutdown[1]: Deactivating swaps.
[ 16.042421] systemd-shutdown[1]: All swaps deactivated.
[ 16.047678] systemd-shutdown[1]: Detaching loop devices.
[ 16.055830] systemd-shutdown[1]: All loop devices detached.
[ 16.061424] systemd-shutdown[1]: Detaching DM devices.
[ 16.066794] systemd-shutdown[1]: All DM devices detached.
[ 16.072226] systemd-shutdown[1]: All filesystems, swaps, loop devices and DM devices detached.
[ 16.086744] systemd-shutdown[1]: Syncing filesystems and block devices.
[ 16.093483] systemd-shutdown[1]: Powering off.
[ 16.097961] kvm: exiting hardware virtualization
[ 16.097991] imx-sdma 30bd0000.sdma: external firmware not found, using ROM firmware
[ 16.098546] cfg80211: failed to load regulatory.db
[ 16.101341] imx-sdma 302c0000.sdma: loaded firmware 4.5
[ 16.166426] mwifiex_pcie 0000:01:00.0: info: shutdown mwifiex...
[ 16.173169] mwifiex_pcie 0000:01:00.0: PREP_CMD: card is removed
[ 16.240963] mwifiex_pcie 0000:01:00.0: performing cancel_work_sync()...
[ 16.247595] mwifiex_pcie 0000:01:00.0: cancel_work_sync() done
[ 16.288309] reboot: Power down
Then pressing POWER button again:
U-Boot 2020.04-imx_v2020.04_5.4.24_2.1.0+g4979a99482 (May 30 2020 - 06:50:01 +0000) CPU: i.MX8MQLite rev2.1 1300 MHz (running at 800 MHz) CPU: Industrial temperature grade (-40C to 105C) at 62C Reset cause: POR Model: Voipac i.MX8MQ EVK DRAM: 2 GiB MMC: FSL_SDHC: 0, FSL_SDHC: 1 Loading Environment from MMC... OK [*]-Video Link 0imx8m_hdmi_probe ....
CAN
Input: None
Output: Device driver is available
root@imx8mq-voipac:~# ip addr show dev can0
1: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
link/can
To setup can interface to 500kB bitrate use following command:
ip link set can0 up type can bitrate 500000
To test send data use following command:
cansend can0 365#AA.11.11
To test receiving data use following command:
candump can0
Camera Input
Input: Connect DIGILENT Pcam 5C camera module into CSI-2 interface and check if it is detected on I2C bus
Output: Camera is found
root@imx8mq-voipac:~# dmesg | grep ov56
[ 2.383324] ov5640_mipi 1-003c: No pin available
[ 2.387976] ov5640_mipi 1-003c: No sensor pwdn pin available
[ 2.393683] ov5640_mipi 1-003c: No sensor reset pin available
[ 2.399479] ov5640_regulator_enable: cannot get io voltage error - err:-517
[ 3.018132] ov5640_mipi 1-003c: No pin available
[ 3.033972] ov5640_mipi 1-003c: No sensor pwdn pin available
[ 3.046488] ov5640_mipi 1-003c: No sensor reset pin available
[ 3.062091] ov5640_mipi 1-003c: 1-003c supply DVDD not found, using dummy regulator
[ 3.072436] ov5640_mipi 1-003c: 1-003c supply AVDD not found, using dummy regulator
[ 4.325257] mxc-mipi-csi2_yav 30b60000.mipi_csi: Registered sensor subdevice: ov5640_mipi 1-003c
[ 4.337288] ov5640_mipi 1-003c: Camera is found
Input: Connect DIGILENT Pcam 5C camera module into CSI-2 interface and capture image
Output: The image stored in local media with name sample_image.jpeg
root@imx8mq-voipac:~# gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=sample_image.jpeg
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[ 59.069241] ov5640_mipi 1-003c: s_stream: 1
[ 59.759767] skip frame 1
Got EOS from element "pipeline0".[ 61.733964] ov5640_mipi 1-003c: s_stream: 0
Execution ended after 0:00:03.186379448
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
Input: Connect DIGILENT Pcam 5C camera module into CSI-2 interface and capture video
Output: The image displayed on display/monitor
root@imx8mq-voipac:~# GST_DEBUG=GST_BUFFER:5 gst-launch-1.0 v4l2src ! 'video/x-raw,framerate=30/1' ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:00.787577440 510 0xaaab09d54800 DEBUG GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadat
a 0xaaab09db63c0 (GstVideoMeta) of size 112
0:00:00.787728994 510 0xaaab09d54800 DEBUG GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadat
a 0xaaab09db6440 (GstVideoMeta) of size 112
0:00:00.787782512 510 0xaaab09d54800 4116.266441] ov5640_mipi 1-003c: s_stream: 1
mDEBUG GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadata 0xaaab09db64c0 (GstVideoMeta) of siz
e 112
0:00:00.787833750 510 0xaaab09d54800 DEBUG GST_BUFFER gstbuffer.c:2279:gst_buffer_add_meta: alloc metadat
a 0xaaab09db6540 (GstVideoMeta) of size 112
[ 4116.843975] skip frame 1
Video should be displayed on video output (hdmi or lvds display)
Ethernet
Input: None
Output: Device driver is available
Note: MAC address should be identical with the address on the sticker placed on the board
root@imx8mq-voipac:~# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:15:01:50:92 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.122/24 brd 192.168.10.255 scope global dynamic eth0
valid_lft 86103sec preferred_lft 86103sec
inet6 fe80::20d:15ff:fe01:5092/64 scope link
valid_lft forever preferred_lft forever
Input: Plug Ethernet cable into connector
Output: IPv4 address is assigned
[ 348.300585] fec 30be0000.ethernet eth0: Link is Down [ 350.350853] fec 30be0000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
HDMI Output
Input: Connect LCD monitor to the SBC
Output: Desktop UI is displayed correctly
User LED
Input: None
Output: Script switches User LED on baseboard ON and OFF in one second intervals
root@imx8mq-voipac:~#
for LED in /sys/class/leds/user
do
echo Testing ${LED}
echo -n "1" > ${LED}/brightness
sleep 1
echo -n "0" > ${LED}/brightness
sleep 1
done
Input: None
Output: User LED on baseboard is set to heartbeat blinking sequence
root@imx8mq-voipac:~# echo heartbeat > /sys/class/leds/user/trigger
Input: None
Output: User LED on SOM is set to heartbeat blinking sequence
root@imx8mq-voipac:~# echo heartbeat > /sys/class/leds/user-som/trigger
Wifi
Input: None
Output: Device driver is available
root@imx8mq-voipac:~# dmesg | grep mwifiex
[ 5.145232] mwifiex_pcie 0000:01:00.0: enabling device (0000 -> 0002)
[ 5.166217] mwifiex_pcie: PCI memory map Virt0: (____ptrval____) PCI memory map Virt2: (____ptrval____)
[ 6.133666] mwifiex_pcie 0000:01:00.0: info: FW download over, size 632240 bytes
[ 7.004061] mwifiex_pcie 0000:01:00.0: WLAN FW is active
[ 7.049670] mwifiex_pcie 0000:01:00.0: Unknown api_id: 3
[ 7.055024] mwifiex_pcie 0000:01:00.0: Unknown api_id: 4
[ 7.060385] mwifiex_pcie 0000:01:00.0: Unknown GET_HW_SPEC TLV type: 0x217
[ 7.075700] mwifiex_pcie 0000:01:00.0: info: MWIFIEX VERSION: mwifiex 1.0 (16.68.1.p179)
[ 7.080505] mwifiex_pcie 0000:01:00.0 wlp1s0: renamed from mlan0
[ 7.083959] mwifiex_pcie 0000:01:00.0: driver_version = mwifiex 1.0 (16.68.1.p179)
Chek if interface is present
root@imx8mq-voipac:~# ip addr show dev wlp1s0
3: wlp1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 78:c4:0e:a0:32:16 brd ff:ff:ff:ff:ff:ff
Check connection
- edit in /etc/wpa_supplicant.conf ssid and passphrase fields
root@imx8mq-voipac:~# cat /etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=1
network={
ssid="AAA"
scan_ssid=1
key_mgmt=WPA-PSK
psk="BBB"
}
- start wpa_supplicant
root@imx8mq-voipac:~# wpa_supplicant -i wlp1s0 -c/etc/wpa_supplicant.conf &
root@imx8mq-voipac:~# Successfully initialized wpa_supplicant
rfkill: Cannot open RFKILL control device
wlp1s0: Trying to associate with 40:a5:ef:c0:70:62 (SSID='CPE_C0[ 188.254851] mwifiex_pcie 0000:01:00.0: info: trying
to associate to 'CPE_C07061' bssid 40:a5:ef:c0:70:62
7061' freq=2462 MHz)
[ 188.334475] mwifiex_pcie 0000:01:00.0: info: associated to bssid 40:a5:ef:c0:70:62 successfully
wlp1s0: Associated with 40:a5:ef:c0:70:62
wlp1s0: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0
[ 188.351598] IPv6: ADDRCONF(NETDEV_CHANGE): wlp1s0: link becomes ready
wlp1s0: WPA: Key negotiation completed with 40:a5:ef:c0:70:62 [PTK=CCMP GTK=CCMP]
wlp1s0: CTRL-EVENT-CONNECTED - Connection to 40:a5:ef:c0:70:62 completed [id=0 id_str=]
- run udhcpc
udhcpc -i wlp1s0
Bluetooth
Input: None
Output: Remote device is recognized after scan
# attach module
root@imx8mq-voipac:~# hciattach /dev/ttymxc2 any 115200 flow
[ 63.137693] Bluetooth: HCI UART driver ver 2.3
[ 63.142196] Bluetooth: HCI UART protocol H4 registered
[ 63.147407] Bluetooth: HCI UART protocol BCSP registered
[ 63.153061] Bluetooth: HCI UART protocol LL registered
[ 63.158263] Bluetooth: HCI UART protocol ATH3K registered
[ 63.163719] Bluetooth: HCI UART protocol Three-wire (H5) registered
[ 63.170309] Bluetooth: HCI UART protocol Broadcom registered
[ 63.176113] Bluetooth: HCI UART protocol QCA registered
Device setup complete
# put hci0 device up
root@imx8mq-voipac:~# hciconfig hci0 up
# scan for remote bluetooth devices (enable bluetooth on phone and make it discoverable)
root@imx8mq-voipac:~# hcitool scan
Scanning ...
Devices:
hci0 00:0D:18:01:5A:B3
SATA
Input: Plug sata disk to M2 extension board and power on
Output: Sata device is recognized
root@imx8mq-voipac:~# ls -la /dev/sda
brw-rw---- 1 root disk 8, 0 Feb 22 07:13 /dev/sda
# run speed test - write
root@imx8mq-voipac:~# time dd if=/dev/urandom of=/dev/sdb bs=4096 status=progress count=200000
812093440 bytes (812 MB, 774 MiB) copied, 29 s, 28.0 MB/s
200000+0 records in
200000+0 records out
819200000 bytes (819 MB, 781 MiB) copied, 34.1491 s, 24.0 MB/s
real 0m 34.15s
user 0m 0.30s
sys 0m 12.74s
# run speed test - read
root@imx8mq-voipac:~# time dd if=/dev/sdb of=/tmp/test.bin bs=4096 status=progress count=100000
364503040 bytes (365 MB, 348 MiB) copied, 4 s, 91.1 MB/s
100000+0 records in
100000+0 records out
409600000 bytes (410 MB, 391 MiB) copied, 4.5828 s, 89.4 MB/s
real 0m 4.79s
user 0m 0.06s
sys 0m 2.15s
We achieved aw write speed ~ 24MB/s and read speed ~90MB/s