~~ODT~~
GPIO class driver
として実装。/sys/class/gpio/[Node]/value
を read()
する。
極性は Active High (スイッチ ON で 1)。
Node | Switch | Note |
---|---|---|
SW_VOLUME_UP | 音量大 | |
SW_VOLUME_DOWN | 音量小 | |
SW_EMERGENCY | 緊急通報 | |
SW_MENU | メニュー | |
SW_NEXT | 次へ | |
SW_BACK | 前へ | |
SW_OK | 決定 | |
DIN | 外部入出力 | 入力 |
v1.0.0β4 より、割込機能を追加。
/sys/class/gpio/[Node]/edge
に rising
を書き込むことで該当する入力の割込機能が有効になる。
root@plum-lcd:/sys/class/gpio/SW_OK# pwd /sys/class/gpio/SW_OK root@plum-lcd:/sys/class/gpio/SW_OK# ls -l total 0 -rw-r--r-- 1 root root 4096 Aug 2 15:24 active_low lrwxrwxrwx 1 root root 0 Aug 2 15:24 device -> ../../../gpiochip7 -rw-r--r-- 1 root root 4096 Aug 2 15:24 edge drwxr-xr-x 2 root root 0 Aug 2 15:24 power lrwxrwxrwx 1 root root 0 Aug 2 15:18 subsystem -> ../../../../../../../../class/gpio -rw-r--r-- 1 root root 4096 Aug 2 15:18 uevent -rw-r--r-- 1 root root 4096 Aug 2 15:24 value root@plum-lcd:/sys/class/gpio/SW_OK# cat edge none root@plum-lcd:/sys/class/gpio/SW_OK# echo rising > edge root@plum-lcd:/sys/class/gpio/SW_OK# cat edge rising root@plum-lcd:/sys/class/gpio/SW_OK#
root@plum-lcd:/sys/class/gpio/SW_OK# cat /sys/kernel/debug/gpio ... gpiochip7: GPIOs 486-493, parent: platform/11000004.gpio, xioirq-gpio: gpio-486 ( |SW_VOLUME_UP ) in lo gpio-487 ( |SW_VOLUME_DOWN ) in lo gpio-488 ( |SW_EMERGENCY ) in lo gpio-489 ( |SW_MENU ) in lo gpio-490 ( |SW_NEXT ) in lo gpio-491 ( |SW_BACK ) in lo gpio-492 ( |SW_OK ) in lo IRQ <--- "IRQ" が有効になる gpio-493 ( |DIN ) in lo ----------------------------- XIO ENABLE: 40 XIO STATUS: 00 XIO VALUE: 00 ----------------------------- ...
LED class driver
として実装。/sys/class/leds/RADIO_POWER/brightness
に 0(OFF) or 255(ON) を write()
する。
LED class driver
として実装。/sys/class/leds/DO/brightness
に 0(OFF) or 255(ON) を write()
する。
Backlight driver
として実装。/sys/class/backlight/plumLCD-Backlight/brightness
に 0(消灯) 〜 10(最大輝度) を write()
する。
root@plum-lcd:/sys/class/backlight/plumLCD-Backlight# ls -l total 0 -r--r--r-- 1 root root 4096 Jun 25 10:36 actual_brightness -rw-r--r-- 1 root root 4096 Jun 25 10:36 bl_power -rw-r--r-- 1 root root 4096 Jun 25 10:36 brightness <-------------------------- lrwxrwxrwx 1 root root 0 Jun 25 10:36 device -> ../../../11000016.gpio -r--r--r-- 1 root root 4096 Jun 25 10:36 max_brightness drwxr-xr-x 2 root root 0 Jun 25 10:36 power lrwxrwxrwx 1 root root 0 Jun 25 10:36 subsystem -> ../../../../../../../class/backlight -r--r--r-- 1 root root 4096 Jun 25 10:36 type -rw-r--r-- 1 root root 4096 Jun 25 10:36 uevent
/dev/ttyO1
に接続。
/dev/ttyO0
に接続。
Dual-roleDevice として実装。初期状態では、gadget として cdc-acm x 2, cdc-ether x 1 として見せるようになっている。
USB typeA - microB ケーブル1) でホスト PC と接続可能。
ホスト側での見え方は下記のとおり。
[2337306.688997] usb 1-4.2.2: new high-speed USB device number 53 using xhci_hcd [2337306.820140] usb 1-4.2.2: New USB device found, idVendor=1d6b, idProduct=0104 [2337306.820143] usb 1-4.2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [2337306.820145] usb 1-4.2.2: Product: Bar Gadget [2337306.820146] usb 1-4.2.2: Manufacturer: Foo Inc. [2337306.820148] usb 1-4.2.2: SerialNumber: 0123456789 [2337306.844287] cdc_acm 1-4.2.2:1.0: ttyACM0: USB ACM device [2337306.854312] cdc_acm 1-4.2.2:1.2: ttyACM1: USB ACM device [2337306.872420] cdc_ether 1-4.2.2:1.4 usb0: register 'cdc_ether' at usb-0000:03:00.0-4.2.2, CDC Ethernet Device, c2:87:0e:76:f3:5b
T: Bus=01 Lev=03 Prnt=08 Port=01 Cnt=02 Dev#= 53 Spd=480 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=1d6b ProdID=0104 Rev= 0.01 S: Manufacturer=Foo Inc. S: Product=Bar Gadget S: SerialNumber=0123456789 C:* #Ifs= 6 Cfg#= 1 Atr=80 MxPwr= 2mA A: FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=02 Prot=01 A: FirstIf#= 2 IfCount= 2 Cls=02(comm.) Sub=02 Prot=01 A: FirstIf#= 4 IfCount= 2 Cls=02(comm.) Sub=06 Prot=00 I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm E: Ad=82(I) Atr=03(Int.) MxPS= 10 Ivl=32ms I:* If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm E: Ad=84(I) Atr=03(Int.) MxPS= 10 Ivl=32ms I:* If#= 3 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=06 Prot=00 Driver=cdc_ether E: Ad=86(I) Atr=03(Int.) MxPS= 16 Ivl=32ms I: If#= 5 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether I:* If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
2つの tty
では getty
を起動しているため、ホスト側からログイン可能。
Ubuntu 16.04.4 LTS plum-lcd ttyGS0 plum-lcd login: user1 Password: Last login: Mon Jun 25 10:07:02 JST 2018 from 192.168.253.1 on pts/0 Welcome to Ubuntu 16.04.4 LTS (GNU/Linux 4.14.51-PlumLCD+ armv7l) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage user1@plum-lcd:~$
usb0
という I/F として見えるので、Ethernet(ethX) と同様に設定し、ホスト側から SSH などでログイン可能。
user1@plum-lcd:~$ ifconfig usb0 usb0 Link encap:Ethernet HWaddr 22:00:0e:1c:7a:75 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) user1@plum-lcd:~$
ALSA として実装。
user1@plum-lcd:~$ aplay -l **** List of PLAYBACK Hardware Devices **** card 0: AM335xPlumLCD [AM335x-Plum-LCD], device 0: AIC3X tlv320aic3x-hifi-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0 user1@plum-lcd:~$ aplay -L null Discard all samples (playback) or generate zero samples (capture) pulse PulseAudio Sound Server default:CARD=AM335xPlumLCD AM335x-Plum-LCD, Default Audio Device sysdefault:CARD=AM335xPlumLCD AM335x-Plum-LCD, Default Audio Device dmix:CARD=AM335xPlumLCD,DEV=0 AM335x-Plum-LCD, Direct sample mixing device dsnoop:CARD=AM335xPlumLCD,DEV=0 AM335x-Plum-LCD, Direct sample snooping device hw:CARD=AM335xPlumLCD,DEV=0 AM335x-Plum-LCD, Direct hardware device without any conversions plughw:CARD=AM335xPlumLCD,DEV=0 AM335x-Plum-LCD, Hardware device with all software conversions user1@plum-lcd:~$
入出力は下記のとおり接続されている。
Device | PIN | IN/OUT | Note |
---|---|---|---|
ラジオ | LINE1L | IN | モノラル, Lch |
LINE出力 | LINE OUT(Rch) | OUT | モノラル, Rch |
内蔵スピーカー | SPOP / SPOM | OUT | モノラル, Lch |
電池電圧を読み取ることが可能。
root@plum-lcd:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage2_raw 3583
となっているため、電池電圧を算出するには下記計算を行う。
$$ V_{[電池]} = \frac{ADC\_DATA}{4095} \times 1.8 \times 6.11 $$
電源電圧を読み取ることが可能。
root@plum-lcd:~# cat /sys/bus/iio/devices/iio\:device0/in_voltage3_raw 2541
となっているため、電源電圧を算出するには下記計算を行う。
$$ V_{[電源]} = \frac{ADC\_DATA}{4095} \times 1.8 \times 10.77 $$