|
|
Line 1: |
Line 1: |
| {{DISPLAYTITLE:Android Peripheral Features}} | | {{DISPLAYTITLE:Android Peripheral Features}} |
− | | + | ==Wi-Fi== |
− | ==Backlight== | + | #Click "Settings" |
− | ===The relevant files===
| + | #:[[File:imx6ABV1_APP_settings.png|800px]] |
− | /sys/class/graphics/fb0
| + | #Turn Wi-Fi on |
− | /sys/devices/platform/mxc_sdc_fb.1/graphics/fb0
| + | #:[[File:imx6ABV1_settings_wifi_on.png|800px]] |
− | /sys/devices/platform/mxc_sdc_fb.1/graphics/fb0/power
| + | #Choose ESSID (e.g. ESSD Testing ) |
− | /sys/devices/platform/mxc_sdc_fb.1
| + | #:[[File:imx6ABV1_settings_wifi_choose_ESSID.png|800px]] |
− | /sys/class/graphics
| + | #Input correct password |
− | /sys/class/backlight
| + | #:[[File:imx6ABV1_settings_wifi_password.png]] |
− | /sys/class/backlight/pwm-backlight.0
| + | #Wi-Fi Authenticating/Connecting/Obtaining IP address |
− | | + | #:[[File:imx6ABV1_settings_wifi_authenticating.png|800px]] |
− | ===Turn off===
| + | #:[[File:imx6ABV1_settings_wifi_connecting.png|800px]] |
− | echo 1 > /sys/class/backlight/pwm-backlight.0/bl_power
| + | #:[[File:imx6ABV1_settings_wifi_obtaining_ip.png|800px]] |
− | | + | #Wi-Fi connected |
− | ===Turn on===
| + | #:[[File:imx6ABV1_settings_wifi_connected.png|800px]] |
− | echo 0 > /sys/class/backlight/pwm-backlight.0/bl_power
| |
− | | |
− | ===Brightness control===
| |
− | echo 0 > /sys/class/backlight/pwm-backlight.0/brightness
| |
− | echo 255 > /sys/class/backlight/pwm-backlight.0/brightness
| |
− | | |
− | ==Camera==
| |
− | Example
| |
− | | |
− | ==CAN Bus==
| |
− | ===Configuration/Testing===
| |
− | ====Configuration====
| |
− | *Connect can0 and can1
| |
− | | |
− | <CAN1_D+> connect to <CAN2_D+>
| |
− | | |
− | <CAN1_D-> connect to <CAN2_D->
| |
− | | |
− | # ip link set can0 up type can bitrate 125000
| |
− | # ip link set can1 up type can bitrate 125000
| |
− | | |
− | ====Testing====
| |
− | *Test 1
| |
− | # candump can1 &
| |
− | # cansend can0 12345678#123412341234
| |
− | The following shows the result
| |
− | can1 12345678 [6] 12 34 12 34 12 34
| |
− | | |
− | *Test 2
| |
− | # cansend can0 133#ababdede
| |
− | The following shows the result
| |
− | can1 133 [4] AB AB DE DE
| |
− | | |
− | ==CPU==
| |
− | ===CPU Frequency===
| |
− | ;Using available CPU frequency policies
| |
− | Read CPU frequency
| |
− | # cpufreq-info | grep "current CPU frequency"
| |
− | current CPU frequency is 396 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 396 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 396 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 396 MHz (asserted by call to hardware).
| |
− | | |
− | Check available CPU frequency policy
| |
− | # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
| |
− | conservative ondemand userspace powersave interactive performance
| |
− | | |
− | Change CPU frequency policy
| |
− | # echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
| |
− | | |
− | Check CPU frequency
| |
− | # cpufreq-info | grep "current CPU frequency"
| |
− | current CPU frequency is 996 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 996 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 996 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 996 MHz (asserted by call to hardware).
| |
− | | |
− | ;Setting the CPU frequency explicitly
| |
− | Read available CPU frequenies
| |
− | # cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
| |
− | 396000 792000 996000
| |
− | | |
− | Change CPU frequency explicitly
| |
− | # echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
| |
− | # echo 792000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
| |
− | | |
− | Check CPU frequency
| |
− | # cpufreq-info | grep "current CPU frequency"
| |
− | current CPU frequency is 792 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 792 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 792 MHz (asserted by call to hardware).
| |
− | current CPU frequency is 792 MHz (asserted by call to hardware).
| |
− | | |
− | | |
− | ===CPU Hot-Plugging===
| |
− | Manually turn off CPU cores
| |
− | #echo 0 > /sys/devices/system/cpu/cpu1/online
| |
− | CPU1: shutdown
| |
− | | |
− | *Can't turn off cpu0
| |
− | | |
− | Check CPU is turned off
| |
− | #cat /proc/interrupts | head -n 1
| |
− | CPU0 CPU2 CPU3
| |
| | | |
| ==Ethernet== | | ==Ethernet== |
− | Example
| + | #Click "Settings" / "Ethernet configuration" , then Turn on Ethernet |
− | | + | #:[[File:imx6ABV1_settings_ethernet_config.png|800px]] |
− | ==Framebuffer==
| + | #Click "Ethernet configuration" |
− | Example
| + | #:[[File:imx6ABV1_settings_ethernet_config_next_level.png|800px]] |
− | | + | #Choose Connection Type (DHCP or Static IP) |
− | ==GPIO==
| + | #:[[File:imx6ABV1_settings_ethernet_config_dhcp.png||400px]][[File:imx6ABV1_settings_ethernet_config_static.png|400px]] |
− | ===Configuration/Testing===
| |
− | ====Configuration====
| |
− | Export GPIO then you can use control GPIO from userr space through sysfs
| |
− | | |
− | GPIO 27 is taken as an example:
| |
− | | |
− | Export GPIO 27
| |
− | # echo 27 /sys/class/gpio/export
| |
− | | |
− | Set GPIO direction to in/out
| |
− | # echo "in" > /sys/class/gpio/gpio27/direction
| |
− | | |
− | Set GPIO value 0/1 if GPIO pin define is output
| |
− | # echo 1 > /sys/class/gpio/gpio27/value
| |
− | | |
− | Directly force a GPIO to output and set its initial value(high=1 low=0)
| |
− | # echo high > /sys/class/gpio/gpio27/direction
| |
− | | |
− | Used as IRQ signal
| |
− | | |
− | Note:You have to configure GPIO to input
| |
− | # echo "rising" > /sys/class/gpio/gpio27/edge
| |
− | *rising: Trigger on rising edge
| |
− | *falling: Trigger on falling edge
| |
− | *both: Trigger on both edges
| |
− | *none: Disable interrupt on both edges
| |
− | | |
− | Unexport GPIO 27
| |
− | # echo 27 /sys/class/gpio/unexport
| |
− | | |
− | ====Testing====
| |
− | GPIO 27 and GPIO 29 are taken as an example:
| |
− | *Connect GPIO 27 and GPIO 29
| |
− | *Export GPIO 27 and GPIO 29
| |
− | # echo 27 /sys/class/gpio/export
| |
− | # echo 29 /sys/class/gpio/export
| |
− | *Set GPIO 27 to output
| |
− | # echo "out" > /sys/class/gpio/gpio27/direction
| |
− | *Set GPIO 29 to input
| |
− | # echo "in" > /sys/class/gpio/gpio29/direction
| |
− | *Change GPIO 27 to 1 and read GPIO 29 value
| |
− | # echo 1 > /sys/class/gpio/gpio27/value
| |
− | # cat /sys/class/gpio/gpio29/value
| |
− | 1
| |
− | *Change GPIO 27 to 0 and read GPIO 29 value
| |
− | # echo 0 > /sys/class/gpio/gpio27/value
| |
− | # cat /sys/class/gpio/gpio29/value
| |
− | 0
| |
− | | |
− | ==GPS==
| |
− | ===GPS module ublox 5===
| |
− | * linux kernel config
| |
− | <tt><small>
| |
− | ::Device Drivers --->
| |
− | :::[*] USB support --->
| |
− | ::::<*> USB Modem (CDC ACM) support
| |
− | ::::[*] USB Gadget Support
| |
− | :::::[m] USB Gadget Drivers
| |
− | | |
− | ::[*] USB support --->
| |
− | :::[*] Support for Freescale on-chip EHCI USB controller
| |
− | :::<*> USB Serial Converter support --->
| |
− | ::::[*] USB Generic Serial Driver
| |
− | </small></tt>
| |
− | * list usb device
| |
− | *:no device
| |
− | *:[[File:GPS_ublox_5_lsusb_nodevice.png|280px]]
| |
− | *:device plugged in
| |
− | *:[[File:GPS_ublox_5_lsusb.png|280px]]
| |
− | * testing
| |
− | *:[[File:GPS_ublox_5_real_test.png|600px]]
| |
− | | |
− | ==I2C==
| |
− | ===Testing===
| |
− | Check i2c busses
| |
− | *Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]
| |
− | #i2cdetect -l
| |
− | i2c-0 i2c 21a0000.i2c I2C adapter
| |
− | i2c-1 i2c 21a4000.i2c I2C adapter
| |
− | i2c-2 i2c 21a8000.i2c I2C adapter
| |
− | | |
− | Check devices on i2c-2 bus
| |
− | #i2cdetect -y -r 2
| |
− | 0 1 2 3 4 5 6 7 8 9 a b c d e f
| |
− | 00: -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 50: UU UU -- -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
| |
− | 70: -- -- -- -- -- -- UU --
| |
− | | |
− | Dump I2C device register content
| |
− | *Usage: i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE [BANK [BANKREG]]]
| |
− | # i2cdump -y -f 2 0x76
| |
− | No size specified (using byte-data access)
| |
− | 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef
| |
− | 00: 54 00 80 43 40 40 40 00 00 00 00 00 00 00 ff ff T.?C@@@S........
| |
− | 10: 85 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ?...............
| |
− | 20: 00 00 00 18 ff ff ff ff ff ff ff ff ff ff ff ff ...?............
| |
− | 30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | 40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | 50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | 60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | 70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | 80: 54 00 80 43 40 40 40 53 00 00 00 00 00 00 ff ff T.?C@@@S........
| |
− | 90: 85 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ?...............
| |
− | a0: 00 00 00 18 ff ff ff ff ff ff ff ff ff ff ff ff ...?............
| |
− | b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
| |
− | | |
− | | |
− | Read a single byte
| |
− | *Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]
| |
− | # i2cget -f -y 2 0x76 7
| |
− | 0x00
| |
− | | |
− | Change its value and verify it
| |
− | *Usage: i2cset [-f] [-y] [-m MASK] [-r] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] ... [MODE]
| |
− | # i2cset -f -y 2 0x76 7 0x53
| |
− | # i2cget -f -y 2 0x76 7
| |
− | 0x53
| |
− | | |
− | ==IR==
| |
− | To decode the infrared signals and provide an uniform interface
| |
− | lircd -d /dev/lirc0
| |
− | | |
− | used parameters:
| |
− | -d --device=device read from given device
| |
− | -u --uinput generate Linux input events
| |
− | | |
− | Executes commands on an IR signal decoded by lircd,
| |
− | irexec -d /devlirc0
| |
− | | |
− | Note:
| |
− | if show these message after running lircd
| |
− | lircd: can't open or create /var/run/lirc/lircd.pid
| |
− | lircd: No such file or directory
| |
− | It has to add the "/var/run/lirc" folder
| |
− | mkdir /var/run/lirc
| |
− | | |
− | How to debug:
| |
− | | |
− | 1. To check that signals are decoded correctly
| |
− | mode2 -d /dev/lirc0
| |
− | It repeats to show "space" and "pulse" while clicking a control button
| |
− | space 8451531
| |
− | pulse 476
| |
− | | |
− | 2. To check input events.
| |
− | | |
− | First, It must add the parameter,"-u", in lircd command
| |
− | lircd -d /dev/lirc0 -u
| |
− | It will register at inputX,
| |
− | input: lircd as /devices/virtual/input/input1
| |
− | Run evtest to check events
| |
− | evtest -d /dev/input/event1
| |
− | | |
− | ==One Wire==
| |
− | Example
| |
− | | |
− | ==RTC==
| |
− | Example
| |
− | | |
− | ==SATA==
| |
− | ===SATA speed===
| |
− | Check SATA speed
| |
− | # dmesg| grep "SATA link up"
| |
− | [ 1.983660] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
| |
− | | |
− | Change SATA speed
| |
− | *Add 'libata.force=1.5Gbps' to kernel boot arguments in U-boot
| |
− | #setenv sataargs $sataargs libata.force=1.5Gbps
| |
− | | |
− | Verify
| |
− | # dmesg| grep "SATA link up"
| |
− | [ 1.993678] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
| |
− | | |
− | ===Testing===
| |
− | Insert SATA disk before boot
| |
− | #find /sys/ . -name block | grep ata | xargs ls $1
| |
− | sda
| |
− | | |
− | *According to the above content, we can know sda is our SATA disk
| |
− | | |
− | Generate random file
| |
− | # dd if=/dev/urandom of=data bs=1 count=1024
| |
− | | |
− | Back up
| |
− | # dd if=/dev/sda of=backup bs=1 count=1024 skip=4096
| |
− | | |
− | Write to SATA disk
| |
− | # dd if=data of=/dev/sda bs=1 seek=4096
| |
− | | |
− | Read and Verify
| |
− | # dd if=/dev/sda of=data1 bs=1 count=1024 skip=4096
| |
− | # diff data data1
| |
− | If fail, it shows as below:
| |
− | Binary files data1 and data differ
| |
− | | |
− | Restore
| |
− | # dd if=backup of=/dev/sda bs=1 seek=4096
| |
− | | |
− | ==SD/MMC==
| |
− | ===Testing===
| |
− | Check sysfs node
| |
− | # cat /sys/block/mmcblk0/device/type
| |
− | MMC
| |
− | # cat /sys/block/mmcblk1/device/type
| |
− | SD
| |
− | | |
− | SD Card is taken as an example:
| |
− | Generate random file
| |
− | # dd if=/dev/urandom of=data bs=1 count=1024
| |
− | | |
− | Back up
| |
− | # dd if=/dev/mmcblk1 of=backup bs=1 count=1024 skip=4096
| |
− | | |
− | Write to SD
| |
− | # dd if=data of=/dev/mmcblk1 bs=1 seek=4096
| |
− | | |
− | Read and Verify
| |
− | # dd if=/dev/mmcblk1 of=data1 bs=1 count=1024 skip=4096
| |
− | # diff data data1
| |
− | If fail, it shows as below:
| |
− | Binary files data1 and data differ
| |
− | | |
− | Restore
| |
− | # dd if=backup of=/dev/mmcblk1 bs=1 seek=4096
| |
− | | |
− | ==SPI==
| |
− | Example
| |
− | | |
− | ==SPWG/JEDIA==
| |
− | Standard Panels Working Group '''(SPWG)'''
| |
− | | |
− | Japan Electronic Industry Development Association '''(JEIDA)'''
| |
− | | |
− | How to setting '''SPWG/JEIDA''' mode in RISC?
| |
− | | |
− | Modify Register '''GPR(IOMUXC_GPR2)'''value
| |
− | | |
− | Address : 0x020E0008(h)
| |
− | | |
− | BIT6 and BIT8 set "0" '''(SPWG)'''
| |
− | | |
− | BIT6 and BIT8 set "1" '''(JEIDA)'''
| |
− |
| |
− | :[[Image:JEIDA1.png|350px]] | |
− | :[[Image:JEIDA2.png|350px]]
| |
− | | |
− | ==UART==
| |
− | ===RS-232===
| |
− | ====Configuration ====
| |
− | Connect UART1(ttymxc1) TX and RX
| |
− | | |
− | Use stty command to set baudrate
| |
− | # stty -F /dev/ttymxc1 115200
| |
− | | |
− | ====Testing====
| |
− | Check baudrate
| |
− | # stty -F /dev/ttymxc1 115200
| |
− | speed 115200 baud; line = 0;
| |
− | | |
− | Read
| |
− | #cat /dev/ttymxc1 &
| |
− | | |
− | Send
| |
− | #echo test > /dev/ttymxc1
| |
− | test
| |
− | | |
− | ==USB==
| |
− | ===Host===
| |
− | ====Testing====
| |
− | Insert a USB disk
| |
− | usb 1-1.2: new high-speed USB device number 4 using ci_hdrc
| |
− | usb-storage 1-1.2:1.0: USB Mass Storage device detected
| |
− | scsi2 : usb-storage 1-1.2:1.0
| |
− | scsi 2:0:0:0: Direct-Access Generic- SD/MMC 1.00 PQ: 0 ANSI: 0 CCS
| |
− | sd 2:0:0:0: [sda] 3862528 512-byte logical blocks: (1.97 GB/1.84 GiB)
| |
− | sd 2:0:0:0: [sda] Write Protect is off
| |
− | sd 2:0:0:0: [sda] No Caching mode page found
| |
− | sd 2:0:0:0: [sda] Assuming drive cache: write through
| |
− | sd 2:0:0:0: [sda] No Caching mode page found
| |
− | sd 2:0:0:0: [sda] Assuming drive cache: write through
| |
− | sda: sda1
| |
− | sd 2:0:0:0: [sda] No Caching mode page found
| |
− | sd 2:0:0:0: [sda] Assuming drive cache: write through
| |
− | sd 2:0:0:0: [sda] Attached SCSI removable disk
| |
− | | |
− | *According to the above content, we can know sda is our usb disk
| |
− | | |
− | Generate random file
| |
− | # dd if=/dev/urandom of=data bs=1 count=1024
| |
− | | |
− | Back up
| |
− | # dd if=/dev/sda of=backup bs=1 count=1024 skip=4096
| |
− | | |
− | Write to usb disk
| |
− | # dd if=data of=/dev/sda bs=1 seek=4096
| |
− | | |
− | Read and Verify
| |
− | # dd if=/dev/sda of=data1 bs=1 count=1024 skip=4096
| |
− | # diff data data1
| |
− | If fail, it shows as below:
| |
− | Binary files data1 and data differ
| |
− | | |
− | Restore
| |
− | # dd if=backup of=/dev/sda bs=1 seek=4096
| |
| | | |
− | ===Client=== | + | ==To Update system== |
− | ====Testing====
| + | #Refer to 1.4.6 to build OTA package. |
| + | #Plug SD card that contains OTA package(update.zip) into SD slot. |
| + | #Click "Settings" / "About tablet" / "Addition system updates" : |
| + | #:[[File:imx6ABV1_settings_addition_system_updates.png|800px]] |
| + | #Wait for one moment, system will reboot for updating |
| + | #:[[File:imx6ABV1_poweroff.png|800px]] |
| + | #It will take some time to update. |
| | | |
| ==Watchdog== | | ==Watchdog== |
| Example | | Example |