Difference between revisions of "iMX6 Rex Ultra Accessing and Testing Peripherals"

From Voipac Wiki
Jump to navigation Jump to search
Line 9: Line 9:
 
== Prerequisites ==
 
== Prerequisites ==
 
=== Hardware ===
 
=== Hardware ===
* DC power supply (5V, 2A)
+
* DC power supply (12V, 1A)
 
* iMX6 Rex Module Ultra
 
* iMX6 Rex Module Ultra
 
* iMX6 Rex Baseboard
 
* iMX6 Rex Baseboard
Line 71: Line 71:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
'''''Input:''''' Boot-up module with HDMI cable plugged in, connect headphones into LINE_OUT connector and plug-in USB flash drive with mp3 file<br />
+
'''''Input:''''' Boot-up module with HDMI cable plugged in, connect headphones into LINE_OUT connector and plug-in USB flash drive with a mp3 file<br />
 
'''''Output:''''' Sound is played and heard
 
'''''Output:''''' Sound is played and heard
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 112: Line 112:
 
root@imx6-rexultra:~# cat /sys/class/gpio/gpio511/value
 
root@imx6-rexultra:~# cat /sys/class/gpio/gpio511/value
 
0
 
0
</syntaxhighlight>
 
 
=== Alternative test ===
 
'''''Input:''''' Press the USER button<br />
 
'''''Output:''''' Button events 1 and 0 are generated
 
<syntaxhighlight lang="bash">
 
root@imx6-tinyrexultra:~# hexdump -C /dev/input/event0
 
00000000  18 f4 d1 56 47 40 09 00  01 00 74 00 01 00 00 00  |...VG@....t.....|
 
00000010  18 f4 d1 56 47 40 09 00  00 00 00 00 00 00 00 00  |...VG@..........|
 
00000020  18 f4 d1 56 17 15 0b 00  01 00 74 00 00 00 00 00  |...V......t.....|
 
00000030  18 f4 d1 56 17 15 0b 00  00 00 00 00 00 00 00 00  |...V............|
 
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Revision as of 12:39, 18 March 2021

Elemental operations of iMX6 Rex Development kit interfaces in Ultra configuration are shown on this page.

Prerequisites

Hardware

  • DC power supply (12V, 1A)
  • iMX6 Rex Module Ultra
  • iMX6 Rex Baseboard

Peripherals and Accessories

  • 1x FullHD monitor with Audio output
  • 1x LVDS touchscreen display
  • 2x MicroSD card
  • 1x MiniPCIe WiFi card
  • 1x MiniPCIe 3G card
  • 1x SATA HDD drive
  • 2x USB FLASH drive
  • 1x headphones
  • 1x microphone

Cables

  • Ethernet cable
  • HDMI cable
  • Micro USB cable
  • RS-232 cable

Audio

Input: Search kernel log for SGTL5000 chip
Output: Audio chip is detected and bound as an input device

root@imx6-rexultra:~# dmesg | grep -i sgtl5000
sgtl5000 0-000a: sgtl5000 revision 0x11
sgtl5000 0-000a: Using internal LDO instead of VDDD
imx-sgtl5000 sound.23: sgtl5000 <-> 2028000.ssi mapping ok
  #0: imx-audio-sgtl5000

Input: Run alsamixer command
Output: Card imx-audio-sgtl5000 is available

root@imx6-rexultra:~# alsamixer
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.0.28 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Card: imx-audio-sgtl5000                             F1:  Help               x
x Chip:                                                F2:  System information x
x View: F3:[Playback] F4: Capture  F5: All             F6:  Select sound card  x
x Item: Headphone [dB gain: -20.00, -20.00]            Esc: Exit               x
x                                                                              x
x     lqqk                       lqqk     lqqk                                 x
x     x  x                       x  x     x  x                                 x
x     x  x                       x  x     x  x                                 x
x     x  x                       x  x     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     x  x                       xaax     x  x                                 x
x     xaax                       xaax     x  x                                 x
x     xaax                       xaax     x  x                                 x
x     mqqj     DAC      lqqk     mqqj     mqqj     lqqk    MIC_IN    lqqk      x
x                       xOOx                       xMMx              xOOx      x
x                       mqqj                       mqqj              mqqj      x
x    23<>23                     75<>75     0                                   x
x  <Headphon>Headphon Headphon   PCM      Mic    Capture  Capture  Capture     x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Input: Boot-up module with HDMI cable plugged in, connect headphones into LINE_OUT connector and plug-in USB flash drive with a mp3 file
Output: Sound is played and heard

root@imx6-rexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/sample.wav
#root@imx6-rexultra:~# aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/sample.wav 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-rexultra:~# aplay -D sysdefault:CARD=imxhdmisoc multimedia/sample.wav 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Input: Plug headphones into HEADPHONES connector and mic into MICROPHONE connector
Output: Microphone sound is played in headphones

root@imx6-rexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500
#root@imx6-rexultra:~# arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500

Input: Plug headphones into HEADPHONES connector and mic into MICROPHONE connector
Output: Sound is recorded and played afterwards

root@imx6-rexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd -d 10 multimedia/recorded.wav 
#root@imx6-rexultra:~# arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd -d 10 multimedia/recorded.wav 
Recording WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
root@imx6-rexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/recorded.wav 
#root@imx6-rexultra:~# aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/recorded.wav 
Playing WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

User button

Input: Press and hold USER button (pca9535 driver is used)
Output: GPIO register is read and displayed state of the button

root@imx6-rexultra:~# echo 511 > /sys/class/gpio/export
root@imx6-rexultra:~# echo in > /sys/class/gpio/gpio511/direction
root@imx6-rexultra:~# cat /sys/class/gpio/gpio511/value
1
root@imx6-rexultra:~# cat /sys/class/gpio/gpio511/value
0

Reset button

Input: Press the RESET button
Output: Module will execute bootloader immediately with "Reset cause: POR"
Note: Module should never freeze or hang after the reset button was pressed. Testing the operation 10 times gives a reliable result

U-Boot 2014.10-dirty (Mar 12 2016 - 11:34:54)

CPU:   Freescale i.MX6Q rev1.2 at 792 MHz
Reset cause: POR
Board: MX6 Rex - pro
I2C:   ready
DRAM:  2 GiB
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
SF: Detected SST25VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB
*** Warning - bad CRC, using default environment

In:    serial
Out:   serial
Err:   serial
Net:   FEC [PRIME]
Hit any key to stop autoboot:  0

Ethernet

Input: None
Output: Device driver is available
Note: MAC address should be identical with the address on the sticker placed on module

root@imx6-rexultra:~# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0d:15:00:cc:e2 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::20d:15ff:fe00:cce2/64 scope link

Input: Plug Ethernet cable into connector and issue DHCP command
Output: IPv4 address is assigned

root@imx6-rexultra:~# dmesg | tail
...
libphy: 2188000.ethernet:03 - Link is Up - 100/Full
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
root@imx6-rexultra:~# udhcpc -i eth0
udhcpc (v1.22.1) started
Sending discover...
Sending select for 192.168.0.178...
Lease of 192.168.0.178 obtained, lease time 600

HDMI Output

Input: Connect LCD monitor to baseboard
Output: Desktop UI is correctly displayed
600px

I2C

Input: Scan I2C bus 0
Output: Available devices:

  • SGTL5000 audio (0x0A)
root@imx6-rexultra:~# i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- UU -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Scan I2C bus 1
Output: Available devices:

  • GPIO expander (0x27)
  • touchscreen TSC2007 (0x48)
  • HDMI Output EDID (0x50)
  • RTC clock (0x51)
  • EEPROM (0x57)

Note: HDMI monitor must be disconnected otherwise I2C bus 1 scanning bus might freeze.

root@imx6-rexultra:~# i2cdetect -y 1 
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- 18 -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
50: UU UU -- -- -- -- -- UU -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Scan I2C bus 2
Output: I2C bus 2 is allocated for external use via System Header

root@imx6-rexultra:~# i2cdetect -y 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Input: Trigger I2C GPIO expander detection.
Output: GPIO expander is detected

root@imx6-rexultra:~# echo -n "1-0027" > /sys/bus/i2c/drivers/pca953x/unbind
root@imx6-rexultra:~# echo -n "1-0027" > /sys/bus/i2c/drivers/pca953x/bind
pca953x 1-0027: interrupt support not compiled in

Input: Trigger I2C RTC detection
Output: RTC is detected

root@imx6-rexultra:~# echo -n "1-0051" > /sys/bus/i2c/drivers/rtc-pcf8563/unbind
root@imx6-rexultra:~# echo -n "1-0051" > /sys/bus/i2c/drivers/rtc-pcf8563/bind
rtc-pcf8563 1-0051: chip found, driver version 0.4.3
rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable.
rtc-pcf8563 1-0051: low voltage detected, date/time is not reliable.
rtc rtc1: invalid alarm value: 2030-10-20 41:58:0
rtc-pcf8563 1-0051: rtc core: registered rtc-pcf8563 as rtc1

Input: Trigger I2C EEPROM detection
Output: I2C EEPROM is detected

root@imx6-rexultra:~# echo -n "1-0057" > /sys/bus/i2c/drivers/at24/unbind
root@imx6-rexultra:~# echo -n "1-0057" > /sys/bus/i2c/drivers/at24/bind 
at24 1-0057: 256 byte 24c02 EEPROM, writable, 1 bytes/write

Input: Write and Read data from I2C EEPROM
Output: If successful, console text 'Data are the same' should appear

root@imx6-rexultra:~# echo -n "0123" > eeprom_in
root@imx6-rexultra:~# cat eeprom_in > /sys/bus/i2c/devices/1-0057/eeprom
root@imx6-rexultra:~# head -c 4 /sys/bus/i2c/devices/1-0057/eeprom > eeprom_out
root@imx6-rexultra:~# diff eeprom_in eeprom_out && echo "Data are the same"
Data are the same

Altarnative test

Input: List I2C bus 0, 1 and 2
Output: Available devices are displayed

root@imx6-rexultra:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0]
0-000a
root@imx6-rexultra:~# ls /sys/bus/i2c/devices/i2c-1 | grep ^[1]
1-0048
1-0050
root@imx6-rexultra:~# ls /sys/bus/i2c/devices/i2c-2 | grep ^[2]

User LED

Input: None
Output: Red LED assembled on module switches from ON to OFF state with heartbeat pulses afterwards

root@imx6-tinyrexultra:~# echo -n "none" > /sys/devices/soc0/leds*/leds/module-led/trigger 
root@imx6-tinyrexultra:~# echo -n "1" > /sys/devices/soc0/leds*/leds/module-led/brightness
root@imx6-tinyrexultra:~# echo -n "0" > /sys/devices/soc0/leds*/leds/module-led/brightness
root@imx6-tinyrexultra:~# echo -n "heartbeat" >  /sys/devices/soc0/leds*/leds/module-led/trigger

Input: GPIO expander PCA9535 driver
Output: Red LED assembled on baseboard switches from ON to OFF state

root@imx6-rexultra:~# echo 510 > /sys/class/gpio/export
root@imx6-rexultra:~# echo out > /sys/class/gpio/gpio510/direction
root@imx6-rexultra:~# echo 1 > /sys/class/gpio/gpio510/value
root@imx6-rexultra:~# echo 0 > /sys/class/gpio/gpio510/value

LVDS display

Details how to properly connect display with LVDS and touchsreen interfaces are described on Display Set page.

Input: Configure kernel command line in uboot and boot up the module Output: GUI can be seen on LVDS screen

Rex U-Boot > setenv video 'video=mxcfb0:dev=ldb,edt570,if=RGB666 video=mxcfb1:off'
Rex U-Boot > boot

DDR memory

Input: None
Output: Memory test passes without any error

root@imx6-rexultra:~# memtester 2G 1   
memtester version 4.1.3 (32-bit)
Copyright (C) 2010 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).

pagesize is 4096
pagesizemask is 0xfffff000
want 2048MB (2147483648 bytes)
got  267MB (280412160 bytes), trying mlock ...locked.
Loop 1/1:
  Stuck Address       : ok         
  Random Value        : ok
  Compare XOR         : ok
  Compare SUB         : ok
  Compare MUL         : ok
  Compare DIV         : ok
  Compare OR          : ok
  Compare AND         : ok
  Sequential Increment: ok
  Solid Bits          : ok         
  Block Sequential    : ok         
  Checkerboard        : ok         
  Bit Spread          : ok         
  Bit Flip            : ok         
  Walking Ones        : ok         
  Walking Zeroes      : ok         

Done.


Further information about DDR3 memories and its calibration can be accessed in Memory Calibration details.

Modem

Input: Plug HE910 3G card into PCIe mini 2 slot and plug SIM card into SIM1 slot
Output: HE910 3G card is detected and AT commands executed

root@imx6-rexultra:~# lsusb | grep -i 1bc7
Bus 001 Device 003: ID 1bc7:0021 Telit HE910
root@imx6-rexultra:~# cat > /etc/minirc.he910 << EOF
pu port             /dev/ttyACM0
pu baudrate         115200
pu bits             8
pu parity           N
pu stopbits         1
pu rtscts           No
pu xonxoff          No
pu escape-key       ^B
EOF
root@imx6-rexultra:~# echo "Press 'Ctrl+B z q' to exit"
root@imx6-rexultra:~# minicom -o he910
AT
AT+CPIN?
AT+CREG?
AT+COPS?

Log:

AT
OK
AT+CPIN?
+CPIN: READY

OK
AT+CREG?
+CREG: 0,1

OK
AT+COPS?
+COPS: 0,0,"Vodafone",0

OK

PCI Express

The procedure uses to a WiFi wireless card to test PCIe interface. More details concerning wireless cards are located on WiFi and Bluetooth Cards page .

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot 1
Output: Card is detected by system

root@imx6-rexultra:~# lspci 
00:00.0 PCI bridge: Device 16c3:abcd (rev 01)
01:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Wireless WiFi card firmware is loaded

root@imx6-rexultra:~# dmesg | grep iwl4965
iwl4965: Intel(R) Wireless WiFi 4965 driver for Linux, in-tree:
iwl4965: Copyright(c) 2003-2011 Intel Corporation
iwl4965 0000:01:00.0: Detected Intel(R) Wireless WiFi Link 4965AGN, REV=0x4
iwl4965 0000:01:00.0: device EEPROM VER=0x36, CALIB=0x5
iwl4965 0000:01:00.0: Tunable channels: 13 802.11bg, 19 802.11a channels
iwl4965 0000:01:00.0: loaded firmware version 228.61.2.24

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Card scans neighbour networks

root@imx6-rexultra:~# rfkill unblock wlan
root@imx6-rexultra:~# ip link set wlan0 up
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@imx6-rexultra:~# iw dev wlan0 scan
BSS 20:aa:4b:7e:21:97(on wlan0)
        TSF: 9263203904202 usec (107d, 05:06:43)
        freq: 5220
        beacon interval: 100 TUs
        capability: ESS Privacy ShortPreamble (0x0031)
        signal: -69.00 dBm
        last seen: 0 ms ago
        SSID: OpenWrt5g
        Supported rates: 6.0* 9.0 12.0* 18.0 24.0* 36.0 48.0 54.0 
        DS Parameter set: channel 44
        Country: CZ     Environment: Indoor/Outdoor
                Channels [36 - 48] @ 23 dBm
        RSN:     * Version: 1
                 * Group cipher: CCMP
                 * Pairwise ciphers: CCMP
                 * Authentication suites: PSK
                 * Capabilities: 16-PTKSA-RC 1-GTKSA-RC (0x000c)
        WPA:     * Version: 1
                 * Group cipher: CCMP
                 * Pairwise ciphers: CCMP
                 * Authentication suites: PSK
        Extended capabilities: 6
        WMM:     * Parameter version 1
                 * BE: CW 15-1023, AIFSN 3
                 * BK: CW 15-1023, AIFSN 7
                 * VI: CW 7-15, AIFSN 2, TXOP 3008 usec
                 * VO: CW 3-7, AIFSN 2, TXOP 1504 usec

Alternative test

Input: Plug Wireless WiFi Link 4965AGN mini PCIe card into mini PCIe slot
Output: Card scans neighbour networks

root@imx6-rexultra:~# ip link set wlan0 up
IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
root@imx6-rexultra:~# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 20:AA:4B:7E:21:97
                    Channel:44
                    Frequency:5.22 GHz (Channel 44)
                    Quality=39/70  Signal level=-71 dBm  
                    Encryption key:on
                    ESSID:"OpenWrt5g"
                    Bit Rates:6 Mb/s; 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s
                              36 Mb/s; 48 Mb/s; 54 Mb/s
                    Mode:Master
                    Extra:tsf=0000086d2e342cf9
                    Extra: Last beacon: 40ms ago
                    IE: Unknown: 00094F70656E5772743567
                    IE: Unknown: 01088C129824B048606C
                    IE: Unknown: 03012C
                    IE: Unknown: 0706435A20240417
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    IE: Unknown: 7F080000000000000040
                    IE: Unknown: DD180050F2020101000003A4000027A4000042435E0062322F00

SATA

Input: Power off the baseboard, connect HDD to SATA connector, provide power for the hard drive and turn on the board
Output: HDD is detected

root@imx6-rexultra:~# dmesg | grep -i -e sata -e ata1
ahci-imx 2200000.sata: fsl,transmit-level-mV not specified, using 00000024
ahci-imx 2200000.sata: fsl,transmit-boost-mdB not specified, using 00000480
ahci-imx 2200000.sata: fsl,transmit-atten-16ths not specified, using 00002000
ahci-imx 2200000.sata: fsl,receive-eq-mdB not specified, using 05000000
ahci-imx 2200000.sata: SSS flag set, parallel bus scan disabled
ahci-imx 2200000.sata: AHCI 0001.0300 32 slots 1 ports 3 Gbps 0x1 impl platform mode
ahci-imx 2200000.sata: flags: ncq sntf stag pm led clo only pmp pio slum part ccc apst 
ata1: SATA max UDMA/133 mmio [mem 0x02200000-0x02203fff] port 0x100 irq 306
ata1: SATA link down (SStatus 0 SControl 300)
ahci-imx 2200000.sata: no device found, disabling link.
ahci-imx 2200000.sata: pass ahci_imx..hotplug=1 to enable hotplug

SATA device can be used as a default bootlader and filesystem source. SATA Interface page contains detailed steps to follow.

SD card

Top slot SD card (mmcblk1)

Input: Plug and unplug SD card
Output: Kernel log shows that mmc1 device is added and removed

root@imx6-rexultra:~# dmesg | tail
...
mmc1: new high speed SDHC card at address e624
mmcblk1: mmc1:e624 SU08G 7.40 GiB 
 mmcblk1: p1 p2
FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
EXT4-fs (mmcblk1p2): recovery complete
EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Opts: (null)
mmc1: card e624 removed

Bottom slot SD card (mmcblk2)

Input: Plug SD card with a filesystem and boot-up the module
Output: Module boots up successfully

root@imx6-rexultra:~# dmesg | grep -i "Kernel command line"
Kernel command line: console=ttymxc0,115200 root=/dev/mmcblk2p2 rootwait rw

SPI Flash Memory

Input: Trigger M25P80 flash detection
Output: SPI Flash sst25vf016b(sst25vf032b) is detected

root@imx6-rexultra:~# echo -n "spi2.0" > /sys/bus/spi/drivers/m25p80/unbind
root@imx6-rexultra:~# echo -n "spi2.0" > /sys/bus/spi/drivers/m25p80/bind 
m25p80 spi2.0: found sst25vf032b, expected m25p32
m25p80 spi2.0: sst25vf032b (4096 Kbytes)

Input: Write and Read data from m25p80 flash
Output: If successful, console text 'Data are the same' should appear

root@imx6-rexultra:~# echo -n "0123" > mtd_in
root@imx6-rexultra:~# mtd_debug write /dev/mtd0 0 4 mtd_in 
Copied 4 bytes from mtd_in to address 0x00000000 in flash
root@imx6-rexultra:~# mtd_debug read /dev/mtd0 0 4 mtd_out
Copied 4 bytes from address 0x00000000 in flash to mtd_out
root@imx6-rexultra:~# diff mtd_in mtd_out && echo "Data are the same"
Data are the same

UART serial console

Input: Connect RS-232 cable into baseboard connector and open serial console with baud rate 115200 8n1
Output: The board is controlled and responsive to serial terminal commands

root@imx6-rexultra:~# uname -a
Linux imx6-rexpro 3.14.58-yocto+g11e5ba3 #1 SMP PREEMPT Sun Mar 13 20:20:31 CET 2016 armv7l GNU/Linux

USB

Input: Plug USB flash drive with single VFAT partition into bottom USB connector
Output: Filesystem recognises the flash drive and automatically mounts it. SMC Hub with ID 0424:2514 is mounted

root@imx6-rexultra:~# lsusb
Bus 001 Device 003: ID 1bc7:0021 Telit HE910
Bus 001 Device 005: ID 054c:0243 Sony Corp. MicroVault Flash Drive
Bus 001 Device 004: ID 0930:6544 Toshiba Corp. Kingston DataTraveler 2.0 Stick (2GB)
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@imx6-rexultra:~# mount | grep /run/media/sd*
/dev/sda1 on /run/media/sda1 type vfat (rw,relatime,gid=6,fmask=0007,dmask=0007,allow_utime=0020,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

Input: Generate a dummy file and copy it into USB flash drive
Output: Generated file and copied file have the same checksum

root@imx6-rexultra:~# rm -f file.txt /run/media/sda1/file.txt 
root@imx6-rexultra:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.435456 s, 2.4 MB/s
root@imx6-rexultra:~# cp file.txt /run/media/sda1/
root@imx6-rexultra:~# md5sum file.txt /run/media/sda1/file.txt
33ef96efccbbf570bfce477735ed2068  file.txt
33ef96efccbbf570bfce477735ed2068  /run/media/sda1/file.txt
root@imx6-rexultra:~# rm file.txt /run/media/sda1/file.txt

USB OTG

Input: Load USB serial gadget driver and connect baseboard to host PC over micro USB cable
Output: Driver is successfully loaded and host PC detects a new USB serial gadget device

iMX6 Rex Development kit:

root@imx6-rexultra:~# modprobe -i g_serial
g_serial gadget: Gadget Serial v2.4
g_serial gadget: g_serial ready
root@imx6-rexultra:~# g_serial gadget: high-speed config #2: CDC ACM config

Host PC:

user@voipac:~$ lsusb 
...
Bus 001 Device 014: ID 0525:a4a7 Netchip Technology, Inc. Linux-USB Serial Gadget (CDC ACM mode)
...

Touchscreen

Input: Search kernel log for TSC2007 chip
Output: TSC2007 chip is detected and bound as input device

root@imx6-rexultra:~# dmesg | grep -i tsc2007
input: TSC2007 Touchscreen as /devices/soc0/soc.0/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/input/input0
evbug: Connected device: input0 (TSC2007 Touchscreen at 1-0048/input0)

Input: Press the touchscreen
Output: Touchscreen events are generated

root@imx6-rexultra:~# evtest /dev/input/by-path/platform-21a4000.i2c-event 
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "TSC2007 Touchscreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value   3529
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value    375
      Min        0
      Max     4095
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max     4095
Properties:
Testing ... (interrupt to exit)
Event: time 1457899907.959665, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1457899907.959665, type 3 (EV_ABS), code 0 (ABS_X), value 1657
Event: time 1457899907.959665, type 3 (EV_ABS), code 1 (ABS_Y), value 2486
Event: time 1457899907.959665, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3268
Event: time 1457899907.959665, -------------- EV_SYN ------------
Event: time 1457899907.969094, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1457899907.969094, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1457899907.969094, -------------- EV_SYN ------------

Alternative test

Input: Press the touchscreen
Output: Touchscreen events are generated

root@imx6-rexultra:~# hexdump -C /dev/input/event0 
00000000  79 ca e5 56 cd a3 07 00  01 00 4a 01 01 00 00 00  |y..V......J.....|
00000010  79 ca e5 56 cd a3 07 00  03 00 00 00 2f 08 00 00  |y..V......../...|
00000020  79 ca e5 56 cd a3 07 00  03 00 01 00 a7 07 00 00  |y..V............|
00000030  79 ca e5 56 cd a3 07 00  03 00 18 00 64 06 00 00  |y..V........d...|
00000040  79 ca e5 56 cd a3 07 00  00 00 00 00 00 00 00 00  |y..V............|
00000050  79 ca e5 56 a7 c4 07 00  01 00 4a 01 00 00 00 00  |y..V......J.....|
00000060  79 ca e5 56 a7 c4 07 00  03 00 18 00 00 00 00 00  |y..V............|
00000070  79 ca e5 56 a7 c4 07 00  00 00 00 00 00 00 00 00  |y..V............|