Difference between revisions of "iMX8M Industrial Basic Accessing and Testing Peripherals"

From Voipac Wiki
Jump to navigation Jump to search
(Blanked the page)
Tag: Blanking
 
Line 1: Line 1:
[[Category:iMX8M Industrial]]
 
[[Category:iMX8M Industrial Software]]
 
[[Category:iMX8M Industrial Testing]]
 
[[Category:iMX8M Industrial Peripherals]]
 
<!-- -->
 
<div style="float:right">__TOC__</div>
 
  
Elemental operations of iMX8M Industrial Development Kit interfaces are shown on this page.
 
 
== Prerequisites ==
 
=== Hardware ===
 
* DC power supply (5V, 4A)
 
* iMX8M Industrial Development Kit Max
 
 
=== Peripherals and Accessories ===
 
* 1x FullHD monitor with Audio output
 
* 1x MicroSD card
 
* 1x MiniPCIe WiFi card
 
* 1x MiniPCIe 3G card
 
* 1x RPi camera module
 
* 1x SATA HDD drive
 
* 2x USB FLASH drive
 
* 1x Infrared remote
 
 
=== Cables ===
 
* Ethernet cable
 
* HDMI cable
 
* Micro USB cable
 
* USB to UART cable
 
* Headphones
 
 
== Audio ==
 
'''''Input:''''' Search kernel log for SGTL5000 chip<br />
 
'''''Output:''''' Audio chip is detected and bound as an input device
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# dmesg | grep -i sgtl5000
 
sgtl5000 1-000a: sgtl5000 revision 0x11
 
sgtl5000 1-000a: Using internal LDO instead of VDDD
 
imx-sgtl5000 sound-sgtl5000: sgtl5000 <-> 2028000.ssi mapping ok
 
  #0: imx-audio-sgtl5000
 
</syntaxhighlight>
 
 
'''''Input:''''' Run alsamixer command<br />
 
'''''Output:''''' Card imx-audio-sgtl5000 is available
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# alsamixer
 
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.0.29 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: -19.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    xa 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    24<>23                    75<>75    0                                  x
 
x  <Headphon>Headphon Headphon  PCM      Mic    Capture  Capture  Capture    x
 
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
 
</syntaxhighlight>
 
 
'''''Input:''''' Boot-up the board with HDMI cable plugged in, connect headphones into HP_OUT connector and plug-in USB flash drive with MP3 file on it<br />
 
'''''Output:''''' Sound is played and heard
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# aplay multimedia/sample.wav
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/sample.wav
 
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/sample.wav
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=imxhdmisoc multimedia/sample.wav
 
Playing WAVE 'multimedia/sample.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
 
'''''Input:''''' Plug headphones with microphone input into HP_OUT connector<br />
 
'''''Output:''''' Microphone sound is played in headphones
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd | aplay -D sysdefault:CARD=imxaudiosgtl500
 
root@imx6-openrexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -t wav -f cd | aplay -D sysdefault:CARD=sgtl5000audio
 
</syntaxhighlight>
 
 
'''''Input:''''' Plug headphones with microphone input into HP_OUT connector<br />
 
'''''Output:''''' Sound is recorded and played afterwards
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# #arecord -D sysdefault:CARD=imxaudiosgtl500 -t wav -f cd -d 10 multimedia/recorded.wav
 
root@imx6-openrexultra:~# arecord -D sysdefault:CARD=sgtl5000audio -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-openrexultra:~# #aplay -D sysdefault:CARD=imxaudiosgtl500 multimedia/recorded.wav
 
root@imx6-openrexultra:~# aplay -D sysdefault:CARD=sgtl5000audio multimedia/recorded.wav
 
Playing WAVE 'multimedia/recorded.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
 
</syntaxhighlight>
 
 
== User button ==
 
'''''Input:''''' Press Home/Back-/Menu+ buttons<br />
 
'''''Output:''''' Button events 1 and 0 are generated
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# evtest /dev/input/by-path/platform-gpio-keys*-event
 
Input driver version is 1.0.1
 
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
 
Input device name: "gpio-keys"
 
Supported events:
 
  Event type 0 (EV_SYN)
 
  Event type 1 (EV_KEY)
 
    Event code 102 (KEY_HOME)
 
    Event code 139 (KEY_MENU)
 
    Event code 158 (KEY_BACK)
 
Properties:
 
Testing ... (interrupt to exit)
 
Event: time 1473952105.010541, type 1 (EV_KEY), code 102 (KEY_HOME), value 1
 
Event: time 1473952105.010541, -------------- SYN_REPORT ------------
 
Event: time 1473952105.140569, type 1 (EV_KEY), code 102 (KEY_HOME), value 0
 
Event: time 1473952105.140569, -------------- SYN_REPORT ------------
 
Event: time 1473952106.320588, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
 
Event: time 1473952106.320588, -------------- SYN_REPORT ------------
 
Event: time 1473952106.440540, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
 
Event: time 1473952106.440540, -------------- SYN_REPORT ------------
 
Event: time 1473952109.630544, type 1 (EV_KEY), code 139 (KEY_MENU), value 1
 
Event: time 1473952109.630544, -------------- SYN_REPORT ------------
 
Event: time 1473952109.760589, type 1 (EV_KEY), code 139 (KEY_MENU), value 0
 
Event: time 1473952109.760589, -------------- SYN_REPORT ------------
 
</syntaxhighlight>
 
 
=== Alternative test ===
 
'''''Input:''''' Press Home/Back-/Menu+ buttons<br />
 
'''''Output:''''' Button events 1 and 0 are generated
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# hexdump -C /dev/input/by-path/platform-gpio-keys-event
 
00000000  ef e7 da 57 ca 8e 0a 00  01 00 66 00 01 00 00 00  |...W......f.....|
 
00000010  ef e7 da 57 ca 8e 0a 00  00 00 00 00 00 00 00 00  |...W............|
 
00000020  ef e7 da 57 9f b1 0c 00  01 00 66 00 00 00 00 00  |...W......f.....|
 
00000030  ef e7 da 57 9f b1 0c 00  00 00 00 00 00 00 00 00  |...W............|
 
00000040  f0 e7 da 57 28 70 06 00  01 00 9e 00 01 00 00 00  |...W(p..........|
 
00000050  f0 e7 da 57 28 70 06 00  00 00 00 00 00 00 00 00  |...W(p..........|
 
00000060  f0 e7 da 57 18 93 08 00  01 00 9e 00 00 00 00 00  |...W............|
 
00000070  f0 e7 da 57 18 93 08 00  00 00 00 00 00 00 00 00  |...W............|
 
00000080  f1 e7 da 57 69 78 02 00  01 00 8b 00 01 00 00 00  |...Wix..........|
 
00000090  f1 e7 da 57 69 78 02 00  00 00 00 00 00 00 00 00  |...Wix..........|
 
000000a0  f1 e7 da 57 68 9b 04 00  01 00 8b 00 00 00 00 00  |...Wh...........|
 
000000b0  f1 e7 da 57 68 9b 04 00  00 00 00 00 00 00 00 00  |...Wh...........|
 
</syntaxhighlight>
 
 
== Reset button ==
 
'''''Input:''''' Press the RESET button<br />
 
'''''Output:''''' The board will execute bootloader immediately with "Reset cause: POR"<br />
 
'''''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
 
<syntaxhighlight lang="bash">
 
U-Boot 2015.10+fslc+g7d8ddd7 (Dec 15 2016 - 18:52:24 +0100)
 
 
CPU:  Freescale i.MX6QUAD rev1.1 996 MHz (running at 792 MHz)
 
CPU:  Extended Commercial temperature grade (-20C to 105C) at 44C
 
Reset cause: POR
 
Board: iMX6-OpenRex
 
I2C:  ready
 
DRAM:  512 MiB
 
MMC:  FSL_SDHC: 0
 
SF: Detected SST26VF032B with page size 256 Bytes, erase size 4 KiB, total 4 MiB
 
In:    serial
 
Out:  serial
 
Err:  serial
 
Net:  FEC [PRIME]
 
Hit any key to stop autoboot:  0
 
OpenRex U-Boot>
 
</syntaxhighlight>
 
 
== CAN ==
 
'''''Input:''''' None<br />
 
'''''Output:''''' Device driver is available
 
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# ip addr show dev can0
 
2: can0: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
 
    link/can
 
root@imx6-openrexultra:~# ip addr show dev can1
 
3: can1: <NOARP,ECHO> mtu 16 qdisc noop state DOWN group default qlen 10
 
    link/can
 
</syntaxhighlight>
 
 
== Camera Input  ==
 
'''''Input:''''' Connect RPi camera module into CSI interface and check if it is detected on I2C bus<br />
 
'''''Output:''''' I2C address 0x36 is occupied and under use<br />
 
'''''Note:''''' HDMI monitor may cause I2C communication issues
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# i2cdetect -y 1
 
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
00:          -- -- -- -- -- -- -- UU -- -- -- -- --
 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
30: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- --
 
40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
 
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
70: -- -- -- -- -- -- -- -- 
 
</syntaxhighlight>
 
 
'''''Input:''''' Connect RPi camera into CSI interface and check kernel modules<br />
 
'''''Output:''''' Device driver ov5647_camera_mipi_int(or ov5647_camera_mipi) is loaded
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# lsmod
 
Module                  Size  Used by
 
mxc_v4l2_capture      27362  1
 
ipu_bg_overlay_sdc      5230  1 mxc_v4l2_capture
 
ipu_still              2304  1 mxc_v4l2_capture
 
ipu_prp_enc            5864  1 mxc_v4l2_capture
 
ipu_csi_enc            3807  1 mxc_v4l2_capture
 
ipu_fg_overlay_sdc      6056  1 mxc_v4l2_capture
 
lm75                    4768  0
 
sht21                  2126  0
 
ov5647_camera_mipi_int    30415  0
 
v4l2_int_device        2897  3 ov5647_camera_mipi_int,ipu_csi_enc,mxc_v4l2_capture
 
at24                    5488  0
 
fxas2100x              6680  0
 
fxos8700                9014  0
 
mxc_dcic                6536  0
 
iwl4965                88394  0
 
iwlegacy              62850  1 iwl4965
 
galcore              226429  2
 
</syntaxhighlight>
 
 
'''''Input:''''' Connect RPi camera module into CSI interface and capture image<br />
 
'''''Output:''''' The image is displayed on HDMI monitor
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo 2 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
root@imx6-openrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-bayer,width=1920,height=1080,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
 
Setting pipeline to PAUSED ...
 
Pipeline is live and does not need PREROLL ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
ERROR: v4l2 capture: unsupported ioctrl!
 
ERROR: v4l2 capture: unsupported ioctrl!
 
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 
Additional debug info:
 
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
 
There may be a timestamping problem, or this computer is too slow.
 
mxc_hdmi 20e0000.hdmi_video: Read EDID again
 
mxc_hdmi 20e0000.hdmi_video: create default modelist
 
EVENT plugin
 
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 
Additional debug info:
 
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
 
There may be a timestamping problem, or this computer is too slow.
 
^Chandling interrupt.
 
Interrupt: Stopping pipeline ...
 
Execution ended after 0:00:27.103901670
 
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
power_down_callback: ipu0/csi1
 
</syntaxhighlight>
 
 
=== Alternative test ===
 
'''''Input:''''' Connect RPi camera module into CSI interface and capture image<br />
 
'''''Output:''''' The image is displayed on HDMI monitor
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo 1 > /sys/bus/i2c/devices/1-0036/ov5647_mode
 
root@imx6-openrexultra:~# gst-launch-1.0 v4l2src device="/dev/video0" ! video/x-bayer,width=1280,height=720,framerate=30/1 ! queue ! bayer2rgb ! videoconvert ! fbdevsink
 
Setting pipeline to PAUSED ...
 
Pipeline is live and does not need PREROLL ...
 
Setting pipeline to PLAYING ...
 
New clock: GstSystemClock
 
ERROR: v4l2 capture: unsupported ioctrl!
 
ERROR: v4l2 capture: unsupported ioctrl!
 
WARNING: from element /GstPipeline:pipeline0/GstFBDEVSink:fbdevsink0: A lot of buffers are being dropped.
 
Additional debug info:
 
/home/marek/workdir/imx6/yocto/fsl-release-bsp-4.1/build-x11/tmp/work/cortexa9hf-vfp-neon-poky-linux-gnueabi/gstreamer1.0/1.6.0-r0/gstreamer-1.6.0/libs/gst/base/gstbasesink.c(2846): gst_base_sink_is_too_la:
 
There may be a timestamping problem, or this computer is too slow.
 
^Chandling interrupt.
 
Interrupt: Stopping pipeline ...
 
Execution ended after 0:00:06.514209667
 
Setting pipeline to PAUSED ...
 
Setting pipeline to READY ...
 
Setting pipeline to NULL ...
 
Freeing pipeline ...
 
root@imx6-openrexultra:~# power_down_callback: ipu0/csi1
 
</syntaxhighlight>
 
 
Software integration and additional commands or settings of CSI camera interface are available on separate [[iMX6 OpenRex Camera|iMX6 OpenRex Camera page]].
 
 
== Ethernet ==
 
'''''Input:''''' None<br />
 
'''''Output:''''' Device driver is available<br />
 
'''''Note:''''' MAC address should be identical with the address on the sticker placed on the board
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# ip addr show dev eth0
 
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
 
    link/ether 00:0d:15:00:d1:75 brd ff:ff:ff:ff:ff:ff
 
</syntaxhighlight>
 
 
'''''Input:''''' Plug Ethernet cable into connector and issue DHCP command<br />
 
'''''Output:''''' IPv4 address is assigned
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# dmesg | tail
 
...
 
fec 2188000.ethernet eth0: Link is Down
 
fec 2188000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off
 
</syntaxhighlight>
 
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# udhcpc -i eth0
 
udhcpc (v1.23.2) started
 
Sending discover...
 
Sending discover...
 
Sending select for 192.168.1.39...
 
Lease of 192.168.1.39 obtained, lease time 600
 
/etc/udhcpc.d/50default: Adding DNS 192.168.1.1
 
/etc/udhcpc.d/50default: Adding DNS 192.168.1.2
 
</syntaxhighlight>
 
 
== HDMI Output ==
 
'''''Input:''''' Connect LCD monitor to the SBC<br />
 
'''''Output:''''' Desktop UI is displayed correctly<br />
 
[[image:iMX6_TinyRex_Development_Kit-HDMI_terminal.png|580px]]
 
 
== I2C ==
 
'''''Input:''''' Scan I2C bus 0<br />
 
'''''Output:''''' Available devices:<br />
 
* PMIC control (0x08)
 
* Compass + Accelerometer FXOS8700 (0x1C)
 
* Gyroscope FXAS21002 (0x20)
 
* EEPROM (0x50/0x57)
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# i2cdetect -y 0
 
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
00:          -- -- -- -- -- UU -- -- -- -- -- -- --
 
10: -- -- -- -- -- -- -- -- -- -- -- -- UU -- -- --
 
20: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
50: UU UU UU UU UU UU UU UU -- -- -- -- -- -- -- --
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
70: -- -- -- -- -- -- -- --   
 
</syntaxhighlight>
 
 
'''''Input:''''' Scan I2C bus 1<br />
 
'''''Output:''''' Available devices:<br />
 
* Audio SGTL5000 (0x0A)
 
* CSI Camera (0x36)
 
* Humidity sensor SHT21 (0x40)
 
* Temperature sensor TMP101 (0x48)
 
* HDMI Output EDID (0x50)
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# i2cdetect -y 1
 
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
 
00:          -- -- -- -- -- -- -- UU -- -- -- -- --
 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
30: -- -- -- -- -- -- UU -- -- -- -- -- -- -- -- --
 
40: UU -- -- -- -- -- -- -- UU -- -- -- -- -- -- --
 
50: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
 
70: -- -- -- -- -- -- -- --       
 
</syntaxhighlight>
 
 
'''''Input:''''' Scan I2C bus 2<br />
 
'''''Output:''''' This I2C bus is reserved for external use and accessible via connectors<br />
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# 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: -- -- -- -- -- -- -- --
 
</syntaxhighlight>
 
 
'''''Input:''''' Trigger I2C EEPROM detection<br />
 
'''''Output:''''' I2C EEPROM is detected
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo -n "0-0050" > /sys/bus/i2c/drivers/at24/unbind
 
root@imx6-openrexultra:~# echo -n "0-0050" > /sys/bus/i2c/drivers/at24/bind
 
at24 0-0050: 2048 byte 24c16 EEPROM, writable, 1 bytes/write
 
</syntaxhighlight>
 
 
'''''Input:''''' Write and read data from I2C EEPROM<br />
 
'''''Output:''''' If successful, console text 'Data are the same' should appear
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo -n "0123" > eeprom_in
 
root@imx6-openrexultra:~# cat eeprom_in > /sys/bus/i2c/devices/0-0050/eeprom
 
root@imx6-openrexultra:~# head -c 4 /sys/bus/i2c/devices/0-0050/eeprom > eeprom_out
 
root@imx6-openrexultra:~# diff eeprom_in eeprom_out && echo "Data are the same"
 
Data are the same
 
</syntaxhighlight>
 
 
=== Altarnative test ===
 
'''''Input:''''' List I2C bus 0, 1 and 2<br />
 
'''''Output:''''' Available devices are displayed
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0]
 
0-0008
 
0-001c
 
0-0020
 
0-0050
 
0-0051
 
0-0052
 
0-0053
 
0-0054
 
0-0055
 
0-0056
 
0-0057
 
</syntaxhighlight>
 
 
== Sensors ==
 
'''''Input:''''' Test Compass, Accelerometer (FXOS8700) and Gyroscope (FXAS21002) sensors<br />
 
'''''Output:''''' Sensors are registered by the Linux kernel
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleAccelerometer/enable
 
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleMagnetometer/enable
 
root@imx6-openrexultra:~# echo 1 > /sys/devices/virtual/misc/FreescaleGyroscope/enable
 
misc FreescaleGyroscope: mma enable setting active
 
root@imx6-openrexultra:~# evtest
 
No device specified, trying to scan all of /dev/input/event*
 
Available devices:
 
/dev/input/event0:      gpio_ir_recv
 
/dev/input/event1:      MCE IR Keyboard/Mouse (gpio-rc-recv)
 
/dev/input/event2:      gpio-keys
 
/dev/input/event3:      fxos8700
 
/dev/input/event4:      fxas2100x
 
Select the device event number [0-4]: 3
 
...
 
root@imx6-openrexultra:~# evtest
 
No device specified, trying to scan all of /dev/input/event*
 
Available devices:
 
/dev/input/event0:      gpio_ir_recv
 
/dev/input/event1:      MCE IR Keyboard/Mouse (gpio-rc-recv)
 
/dev/input/event2:      gpio-keys
 
/dev/input/event3:      fxos8700
 
/dev/input/event4:      fxas2100x
 
Select the device event number [0-4]: 4
 
...
 
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleAccelerometer/enable
 
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleMagnetometer/enable
 
root@imx6-openrexultra:~# echo 0 > /sys/devices/virtual/misc/FreescaleGyroscope/enable
 
</syntaxhighlight>
 
 
'''''Input:''''' Test SHT21 humidity sensor<br />
 
'''''Output:''''' Sensor provides actual humidity and temperature values
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0040/hwmon/hwmon*/humidity1_input
 
20741
 
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0040/hwmon/hwmon*/temp1_input
 
30853
 
</syntaxhighlight>
 
 
'''''Input:''''' Test TMP101 temperature sensor<br />
 
'''''Output:''''' Sensor provides current temperature readout
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# cat /sys/devices/soc0/soc/2100000.aips-bus/21a4000.i2c/i2c-1/1-0048/hwmon/hwmon*/temp1_input
 
32125
 
</syntaxhighlight>
 
 
== Infrared receiver ==
 
'''''Input:''''' Press Infrared remote keys. (For Samsung Infrared remote load "nec" protocol)<br />
 
'''''Output:''''' Events are detected
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo nec > /sys/devices/soc0/ir-receiver/rc/rc0/protocols
 
root@imx6-openrexultra:~# evtest /dev/input/by-path/platform-ir-receiver-event
 
Input driver version is 1.0.1
 
Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100
 
Input device name: "gpio_ir_recv"
 
Supported events:
 
  Event type 0 (EV_SYN)
 
  Event type 1 (EV_KEY)
 
    Event code 152 (KEY_SCREENLOCK)
 
  Event type 4 (EV_MSC)
 
    Event code 4 (MSC_SCAN)
 
Key repeat handling:
 
  Repeat type 20 (EV_REP)
 
    Repeat code 0 (REP_DELAY)
 
      Value    500
 
    Repeat code 1 (REP_PERIOD)
 
      Value    125
 
Properties:
 
Testing ... (interrupt to exit)
 
Event: time 1474009071.488894, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70707
 
Event: time 1474009071.488894, -------------- SYN_REPORT ------------
 
Event: time 1474009072.178245, type 4 (EV_MSC), code 4 (MSC_SCAN), value 7070b
 
Event: time 1474009072.178245, -------------- SYN_REPORT ------------
 
</syntaxhighlight>
 
 
== User LED ==
 
'''''Input:''''' None<br />
 
'''''Output:''''' Script switches User LED ON and OFF in one second intervals
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~#
 
for LED in /sys/devices/soc0/leds*/leds/*
 
do
 
echo Testing ${LED}
 
echo -n "1" > ${LED}/brightness
 
sleep 1
 
echo -n "0" > ${LED}/brightness
 
sleep 1
 
done
 
</syntaxhighlight>
 
 
'''''Input:''''' None<br />
 
'''''Output:''''' User LED is set to heartbeat blinking sequence
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo -n "heartbeat" >  /sys/devices/soc0/leds*/leds/module-led/trigger
 
</syntaxhighlight>
 
 
== SD Activity LED ==
 
'''''Input:''''' None<br />
 
'''''Output:''''' SD activity LED is set to show the status of SD card interface
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# echo -n "mmc1" > /sys/devices/soc0/leds*/leds/sd-activity-led/trigger
 
</syntaxhighlight>
 
 
== Microcontroller LPC1347 ==
 
'''''Input:''''' LPC1347 firmware<br />
 
'''''Output:''''' MCU program is executed and LED starts blinking
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# openrex-isp-handler.sh lpc/LPC1347-userLED.bin
 
ISP low
 
RST low
 
RST high
 
lpc21isp version 1.97
 
File lpc/LPC1347-userLED.bin:
 
        loaded...
 
        image size : 1068
 
Image size : 1068
 
Synchronizing (ESC to abort). OK
 
Read bootcode version: 2
 
5
 
Read part ID: LPC1345, 32 kiB FLASH / 8 kiB SRAM (0x28010541)
 
Will start programming at Sector 1 if possible, and conclude with Sector 0 to ensure that checksum is written last.
 
Erasing sector 0 first, to invalidate checksum. OK
 
Sector 0: ..........................
 
Download Finished... taking 0 seconds
 
Now launching the brand new code
 
RST low
 
ISP high
 
RST high
 
</syntaxhighlight>
 
 
== DDR memory ==
 
'''''Input:''''' None<br />
 
'''''Output:''''' Memory test passes without any errors
 
<syntaxhighlight lang="bash">
 
root@imx6-openrexultra:~# 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  251MB (263602176 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
 

Latest revision as of 09:47, 11 January 2022