Difference between revisions of "IoTGateway/Features/Linux/Peripheral"
(→GPS) |
(→GPS module ublox 5) |
||
Line 174: | Line 174: | ||
::::[*] USB Generic Serial Driver | ::::[*] USB Generic Serial Driver | ||
</small></tt> | </small></tt> | ||
+ | * list usb device | ||
+ | *:no device | ||
+ | *:[[File:GPS_ublox_5_lsusb_nodevice.png]] | ||
+ | *:device plugged in | ||
+ | *:[[File:GPS_ublox_5_lsusb.png]] | ||
* testing | * testing | ||
+ | *:[[File:GPS_ublox_5_real_test.png]] | ||
==I2C== | ==I2C== |
Revision as of 07:01, 12 August 2016
Contents
ADC
analogue to digital converters
Backlight
The relevant files
/sys/class/graphics/fb0 /sys/devices/platform/mxc_sdc_fb.1/graphics/fb0 /sys/devices/platform/mxc_sdc_fb.1/graphics/fb0/power /sys/devices/platform/mxc_sdc_fb.1 /sys/class/graphics /sys/class/backlight /sys/class/backlight/pwm-backlight.0
Turn off
echo 1 > /sys/class/backlight/pwm-backlight.0/bl_power
Turn on
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
Example
Framebuffer
Example
GPIO
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
- Device Drivers --->
- [*] USB support --->
- <*> USB Modem (CDC ACM) support
- [*] USB Gadget Support
- [m] USB Gadget Drivers
- [*] USB support --->
- Device Drivers --->
- [*] USB support --->
- [*] Support for Freescale on-chip EHCI USB controller
- <*> USB Serial Converter support --->
- [*] USB Generic Serial Driver
- [*] USB support --->
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
Example
SD/MMC
Example
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)
UART
Example
USB
Example
Watchdog
Example