Difference between revisions of "i.MX25 SODIMM PC Accessing and Testing Peripherals"

From Voipac Wiki
Jump to navigation Jump to search
Line 358: Line 358:
 
== NAND memory ==
 
== NAND memory ==
 
'''''Input:''''' Check file system free disk space<br />
 
'''''Input:''''' Check file system free disk space<br />
'''''Output: Rootfs is UBI type and free space is available'''''
+
'''''Output:''''' Rootfs is UBI type and free space is available
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
root@vmx25:~# df -h
 
root@vmx25:~# df -h

Revision as of 00:40, 22 April 2021

Basic examples of operation of i.MX25 SODIMM PC - Development kit interfaces are shown on this page.

Prerequisites

Hardware

  • DC power supply (12V, 2A)
  • i.MX25 SODIMM PC Module
  • i.MX25 SODIMM PC Base Board

Peripherals and Accessories

  • 1x DVI/VGA monitor
  • 1x MicroSD card
  • 2x USB Flash drive
  • 1x headphones
  • 1x microphone
  • touch panel

Cables

  • Ethernet cable
  • DVI cable or VGA cable
  • Mini 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@vmx25:~# dmesg | grep -i sgtl5000
sgtl5000 0-000a: sgtl5000 revision 0x11
sgtl5000 0-000a: Using internal LDO instead of VDDD: check ER1
imx-sgtl5000 sound: sgtl5000 <-> 50034000.ssi mapping ok
  #0: imx25-vmx25-sgtl5000

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

root@vmx25:~# alsamixer
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqq AlsaMixer v1.1.4 qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Card: imx25-vmx25-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: -15.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          xaax          x
x        x  x                                      xaax          xaax          x
x        x  x                                      xaax          xaax          x
x        x  x                                      xaax          xaax          x
x        x  x                                      xaax          xaax          x
x        xaax                                      xaax          xaax          x
x        xaax                                      xaax          xaax          x
x        xaax                                      xaax          xaax          x
x        xaax                                      xaax          xaax          x
x        tqqu           DAC          lqqk          mqqj          tqqu          x
x        xOOx                        xOOx                        xOOx          x
x        mqqj                        mqqj                        mqqj          x
x       23<>23                                    75<>75        58<>58         x
x   <  Headphone  >Headphone Mux Headphone Pla      PCM         Lineout        x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Input: Plug headphones into HP_OUT connector
Output: Audio media is played into the headphones

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

Input: Plug headphones into HP_OUT and microphone into LINE_IN connector
Output: Microphone sound is played in headphones

root@vmx25:~# arecord -D sysdefault:CARD=imx25vmx25sgtl5 -t wav -f cd | aplay -D sysdefault:CARD=imx25vmx25sgtl5
Recording WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

Input: Plug headphones with microphone feature into HP_OUT connector
Output: Sound is recorded and played afterwards

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

User button

Input: Press the Home/Vol-/Vol+/Back buttons
Output: Button events are generated and received

root@vmx25:~# evtest /dev/input/by-path/platform-43fa8000.kpp-event
Input driver version is 1.0.1
Input device ID: bus 0x19 vendor 0x0 product 0x0 version 0x0
Input device name: "43fa8000.kpp"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 102 (KEY_HOME)
    Event code 114 (KEY_VOLUMEDOWN)
    Event code 115 (KEY_VOLUMEUP)
    Event code 158 (KEY_BACK)
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Key repeat handling:
  Repeat type 20 (EV_REP)
    Repeat code 0 (REP_DELAY)
      Value    250
    Repeat code 1 (REP_PERIOD)
      Value     33
Properties:
Testing ... (interrupt to exit)
Event: time 1525810879.083353, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1525810879.083353, type 1 (EV_KEY), code 102 (KEY_HOME), value 1
Event: time 1525810879.083353, -------------- SYN_REPORT ------------
Event: time 1525810879.243271, type 4 (EV_MSC), code 4 (MSC_SCAN), value 01
Event: time 1525810879.243271, type 1 (EV_KEY), code 102 (KEY_HOME), value 0
Event: time 1525810879.243271, -------------- SYN_REPORT ------------
Event: time 1525810880.293285, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11
Event: time 1525810880.293285, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 1
Event: time 1525810880.293285, -------------- SYN_REPORT ------------
Event: time 1525810880.443263, type 4 (EV_MSC), code 4 (MSC_SCAN), value 11
Event: time 1525810880.443263, type 1 (EV_KEY), code 114 (KEY_VOLUMEDOWN), value 0
Event: time 1525810880.443263, -------------- SYN_REPORT ------------
Event: time 1525810881.213298, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03
Event: time 1525810881.213298, type 1 (EV_KEY), code 158 (KEY_BACK), value 1
Event: time 1525810881.213298, -------------- SYN_REPORT ------------
Event: time 1525810881.353266, type 4 (EV_MSC), code 4 (MSC_SCAN), value 03
Event: time 1525810881.353266, type 1 (EV_KEY), code 158 (KEY_BACK), value 0
Event: time 1525810881.353266, -------------- SYN_REPORT ------------
Event: time 1525810882.133271, type 4 (EV_MSC), code 4 (MSC_SCAN), value 13
Event: time 1525810882.133271, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1
Event: time 1525810882.133271, -------------- SYN_REPORT ------------
Event: time 1525810882.263273, type 4 (EV_MSC), code 4 (MSC_SCAN), value 13
Event: time 1525810882.263273, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0
Event: time 1525810882.263273, -------------- SYN_REPORT ------------

Alternate test

Input: Press the Home/Vol-/Vol+/Back buttons
Output: Button events are generated and received

root@vmx25:~# hexdump -C /dev/input/by-path/platform-43fa8000.kpp-event 
00000000  4f 8a f8 5a cf 05 04 00  04 00 04 00 01 00 00 00  |O..Z............|
00000010  4f 8a f8 5a cf 05 04 00  01 00 66 00 01 00 00 00  |O..Z......f.....|
00000020  4f 8a f8 5a cf 05 04 00  00 00 00 00 00 00 00 00  |O..Z............|
00000030  4f 8a f8 5a 7f 01 06 00  04 00 04 00 01 00 00 00  |O..Z............|
00000040  4f 8a f8 5a 7f 01 06 00  01 00 66 00 00 00 00 00  |O..Z......f.....|
00000050  4f 8a f8 5a 7f 01 06 00  00 00 00 00 00 00 00 00  |O..Z............|
00000060  4f 8a f8 5a 7c bc 0a 00  04 00 04 00 11 00 00 00  |O..Z|...........|
00000070  4f 8a f8 5a 7c bc 0a 00  01 00 72 00 01 00 00 00  |O..Z|.....r.....|
00000080  4f 8a f8 5a 7c bc 0a 00  00 00 00 00 00 00 00 00  |O..Z|...........|
00000090  4f 8a f8 5a 3c b8 0c 00  04 00 04 00 11 00 00 00  |O..Z<...........|
000000a0  4f 8a f8 5a 3c b8 0c 00  01 00 72 00 00 00 00 00  |O..Z<.....r.....|
000000b0  4f 8a f8 5a 3c b8 0c 00  00 00 00 00 00 00 00 00  |O..Z<...........|
000000c0  50 8a f8 5a 4b cd 02 00  04 00 04 00 03 00 00 00  |P..ZK...........|
000000d0  50 8a f8 5a 4b cd 02 00  01 00 9e 00 01 00 00 00  |P..ZK...........|
000000e0  50 8a f8 5a 4b cd 02 00  00 00 00 00 00 00 00 00  |P..ZK...........|
000000f0  50 8a f8 5a fe c8 04 00  04 00 04 00 03 00 00 00  |P..Z............|
00000100  50 8a f8 5a fe c8 04 00  01 00 9e 00 00 00 00 00  |P..Z............|
00000110  50 8a f8 5a fe c8 04 00  00 00 00 00 00 00 00 00  |P..Z............|
00000120  50 8a f8 5a 10 5d 09 00  04 00 04 00 13 00 00 00  |P..Z.]..........|
00000130  50 8a f8 5a 10 5d 09 00  01 00 73 00 01 00 00 00  |P..Z.]....s.....|
00000140  50 8a f8 5a 10 5d 09 00  00 00 00 00 00 00 00 00  |P..Z.]..........|
00000150  50 8a f8 5a ce a6 0b 00  04 00 04 00 13 00 00 00  |P..Z............|
00000160  50 8a f8 5a ce a6 0b 00  01 00 73 00 00 00 00 00  |P..Z......s.....|
00000170  50 8a f8 5a ce a6 0b 00  00 00 00 00 00 00 00 00  |P..Z............|

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

barebox 2017.12.0-g952939f-dirty #3 Sat May 26 21:21:42 CEST 2018


Board: Voipac VMX25
SDRAM at 0x80000000: 32MB (256Mb, 13 ROWs, 9 COLs)
SDRAM at 0x90000000: 32MB (256Mb, 13 ROWs, 9 COLs)
mdio_bus: miibus0: probed
nand: ONFI flash detected
nand: NAND device: Manufacturer ID: 0x2c, Chip ID: 0xda (Micron MT29F2G08ABAEAWP), 256MiB, page size: 2048, OOB size: 64
Bad block table found at page 131008, version 0x01
Bad block table found at page 130944, version 0x01
netconsole: registered as netconsole-1
malloc space: 0x90efd700 -> 0x91dfadff (size 15 MiB)
running /env/bin/init...
DTB: /env/dtb/imx25-voipac-vmx25-264.dtb

Hit m for menu or any other key to stop autoboot:    0

CAN

Input: None
Output: Device driver is registered and ready for use

root@vmx25:~# ip addr show dev can0
3: can0: <NOARP40000> mtu 16 qdisc noop qlen 10
    link/[280] 
root@vmx25:~# ip addr show dev can1
4: can1: <NOARP40000> mtu 16 qdisc noop qlen 10
    link/[280]

Ethernet

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

oot@vmx25:~# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:0d:15:00:aa:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.11/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

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

root@vmx25:~# dmesg | tail
...
fec 50038000.ethernet eth0: Link is Down
fec 50038000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
root@vmx25:~# udhcpc -i eth0
udhcpc (v1.24.1) started
Sending discover...
Sending select for 192.168.1.11...
Lease of 192.168.1.11 obtained, lease time 600
/etc/udhcpc.d/50default: Adding DNS 192.168.1.1
/etc/udhcpc.d/50default: Adding DNS 192.168.1.2

DVI output

Input: Connect LCD monitor to the base board
Output: Desktop UI is displayed correctly

I2C

Input: Scan I2C bus 0
Output: Available devices:

  • SGTL5000 audio (0x0A)
  • EEPROM memory (0x56/0x57)
  • real time clock DS1339 (0x68)
root@vmx25:~# 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: -- -- -- -- -- -- UU UU -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

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

root@vmx25:~# echo -n "0-0056" > /sys/bus/i2c/drivers/at24/unbind
root@vmx25:~# echo -n "0-0056" > /sys/bus/i2c/drivers/at24/bind 
at24 0-0056: 65536 byte 24c512 EEPROM, writable, 128 bytes/write
root@vmx25:~# echo -n "0-0057" > /sys/bus/i2c/drivers/at24/unbind
root@vmx25:~# echo -n "0-0057" > /sys/bus/i2c/drivers/at24/bind 
at24 0-0057: 65536 byte 24c512 EEPROM, writable, 128 bytes/write

Alternate test

Input: Scan I2C bus 0
Output: Available devices:

  • SGTL5000 audio (0x0A)
  • EEPROM memory (0x56/0x57)
  • real time clock DS1339 (0x68)
root@vmx25:~# ls /sys/bus/i2c/devices/i2c-0 | grep ^[0]
0-000a
0-0056
0-0057
0-0068

User LED

Input: None
Output: Script switches User LED ON and OFF in one second intervals

root@vmx25:~#
for LED in /sys/devices/platform/leds/leds/*
do
	echo Testing ${LED}
	echo -n "gpio" >  ${LED}/trigger
	sleep 1
	echo -n "1" > ${LED}/brightness
	sleep 1
	echo -n "0" > ${LED}/brightness
	sleep 1
done

root@vmx25:~# echo -n "heartbeat" >  /sys/devices/platform/leds/leds/led1/trigger
root@vmx25:~# echo -n "mmc0" > /sys/devices/platform/leds/leds/led2/trigger

DDR memory

Input: None
Output: Memory test passes without any errors

root@vmx25:~# memtester 32M 1
memtester version 4.3.0 (32-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).

pagesize is 4096
pagesizemask is 0xfffff000
want 32MB (33554432 bytes)
got  32MB (33554432 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.

NAND memory

Input: Check file system free disk space
Output: Rootfs is UBI type and free space is available

root@vmx25:~# df -h
Filesystem                Size      Used Available Use% Mounted on
ubi0:rootfs             109.1M     45.4M     63.8M  42% /
devtmpfs                 27.5M         0     27.5M   0% /dev
tmpfs                    27.6M     76.0K     27.5M   0% /run
tmpfs                    27.6M     40.0K     27.6M   0% /var/volatile

RTC clock

Input: Search kernel log for DS1307.
Output: RTC chip was detected

root@vmx25:~# dmesg | grep -i ds1307
rtc-ds1307 0-0068: SET TIME!
rtc-ds1307 0-0068: registered as rtc0
rtc-ds1307 0-0068: setting system clock to 2000-01-01 00:34:09 UTC (946686849)

SD card

Input: Plug micro SD card into slot located on the module. Boot up the system
Output: Linux kernel detects inserted MMC0 device

root@vmx25:~# dmesg | grep -i 'sdhc\|mmc0'
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
sdhci-pltfm: SDHCI platform and OF driver helper
mmc0 bounce up to 128 segments into one, max segment size 65536 bytes
mmc0: SDHCI controller on 53fb4000.esdhc [53fb4000.esdhc] using DMA
mmc0: host does not support reading read-only switch, assuming write-enable
mmc0: new high speed SDHC card at address 59b4
mmcblk0: mmc0:59b4 SS04G 3.69 GiB

SPI Flash

Input: Trigger M25P80 flash detection
Output: SPI flash sst25vf032b is detected

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

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

root@vmx25:~# mtdinfo /dev/mtd4
mtd4
Name:                           spi0.0
Type:                           nor
Eraseblock size:                4096 bytes, 4.0 KiB
Amount of eraseblocks:          1024 (4194304 bytes, 4.0 MiB)
Minimum input/output unit size: 1 byte
Sub-page size:                  1 byte
Character device major/minor:   90:8
Bad blocks are allowed:         false
Device is writable:             true

root@vmx25:~# echo -n "0123" > mtd_in
root@vmx25:~# mtd_debug write /dev/mtd4 0 4 mtd_in
Copied 4 bytes from mtd_in to address 0xffffffff00000000 in flash
root@vmx25:~# mtd_debug read /dev/mtd4 0 4 mtd_out
Copied 4 bytes from address 0xbed5ef1600000000 in flash to (null)
root@vmx25:~# diff mtd_in mtd_out && echo "Data are the same"
Data are the same

Suspend

Input: Put the board into suspend state (mem state). Wait 10 seconds and then press HOME button
Output: The board wakes up

root@vmx25:~# echo mem > /sys/power/state
PM: suspend entry (deep)
PM: Syncing filesystems ... done.
Freezing user space processes ... (elapsed 0.002 seconds) done.
OOM killer disabled.
Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
Suspending console(s) (use no_console_suspend to debug)
OOM killer enabled.
Restarting tasks ... done.
PM: suspend exit
root@vmx25:~#

Touchscreen

Input: Connect touch panel into the base board connector, power up the board and press the panel
Output: Touch events are detected

root@vmx25:~# evtest /dev/input/by-path/platform-43fa4000.cspi-event 
Input driver version is 1.0.1
Input device ID: bus 0x0 vendor 0x0 product 0x0 version 0x0
Input device name: "ADS7846 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   2409
      Min        0
      Max     8000
    Event code 1 (ABS_Y)
      Value   2129
      Min        0
      Max     4800
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max      255
Properties:
Testing ... (interrupt to exit)
Event: time 1527375683.885927, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1527375683.885927, type 3 (EV_ABS), code 0 (ABS_X), value 2223
Event: time 1527375683.885927, type 3 (EV_ABS), code 1 (ABS_Y), value 1562
Event: time 1527375683.885927, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 58
Event: time 1527375683.885927, -------------- SYN_REPORT ------------
Event: time 1527375683.905846, type 3 (EV_ABS), code 0 (ABS_X), value 2226
Event: time 1527375683.905846, type 3 (EV_ABS), code 1 (ABS_Y), value 1572
Event: time 1527375683.905846, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 7
Event: time 1527375683.905846, -------------- SYN_REPORT ------------
Event: time 1527375683.924951, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1527375683.924951, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1527375683.924951, -------------- SYN_REPORT ------------

UART serial console

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

root@vmx25:~# uname -a
Linux vmx25 4.14.21-yocto+g4a31b3d #2 PREEMPT Sat May 26 19:51:25 UTC 2018 armv5tejl GNU/Linux

USB

Input: Plug USB flash drives with single VFAT partition into the USB connectors
Output: USB Flash drives are listed and mounted without any errors

root@vmx25:~# lsusb
Bus 001 Device 004: ID 125f:d31a A-DATA Technology Co., Ltd. 
Bus 001 Device 003: ID 125f:d31a A-DATA Technology Co., Ltd. 
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@vmx25:~# mount /dev/sda1 /media/

Input: Plug USB flash drive into mini USB connector. A link should be placed on H401 jumper
Output: Plugged USB device is listed

root@vmx25:~# lsusb
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
Bus 002 Device 003: ID 125f:d31a A-DATA Technology Co., Ltd. 
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

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

root@vmx25:~# rm -f file.txt /media/file.txt 
root@vmx25:~# dd if=/dev/urandom of=file.txt count=1024 bs=1024
1024+0 records in
1024+0 records out
root@vmx25:~# cp file.txt /media/
root@vmx25:~# md5sum file.txt /media/file.txt 
200a9fd3e9850fcedf85ed50d4c4733d  file.txt
200a9fd3e9850fcedf85ed50d4c4733d  /media/file.txt
root@vmx25:~# rm file.txt /media/file.txt
root@vmx25:~# umount /media

USB OTG

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

i.MX25 SODIMM PC - Development kit:

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

Host PC:

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

DVI output

Input: Connect VGA monitor to the base board
Output: Desktop UI is displayed correctly