環境
- BeagleBone Black Rev.C
- BeagleBoard.org Debian Image 2016-11-06(/etc/dogtag)
- Debian8.6(2016.11.6)
概要
このページによると,8.4以降のバージョンの Debian がインストールされている Beaglebone Black では,特定の GPIO ピンがデフォルトで常時 export されており,unexport することができないらしい.自分も Debian8.6 で同じ現象が起きたため,その対処法をここで紹介する.
以下のように,最初からいくつかのピンが export されている上に,これまでの unexport する手順ではエラーが出てしまう.
root@beaglebone:~# cd /sys/class/gpio/
root@beaglebone:/sys/class/gpio# ls
export gpio115 gpio15 gpio22 gpio27 gpio31 gpio45 gpio48 gpio50 gpio61 gpio67 gpio7 gpiochip64
gpio112 gpio116 gpio2 gpio23 gpio3 gpio4 gpio46 gpio49 gpio51 gpio65 gpio68 gpiochip0 gpiochip96
gpio114 gpio14 gpio20 gpio26 gpio30 gpio44 gpio47 gpio5 gpio60 gpio66 gpio69 gpiochip32 unexport
root@beaglebone:/sys/class/gpio# echo 48 > unexport
bash: echo: write error: Invalid argument
手順
1. cape-universal を無効化
root@beaglebone:~# vi /boot/uEnv.txt
uEnv.txt を root 権限で編集する.
uEnv.txt の
cmdline=coherent_pool=1M quiet cape_universal=enable を
cmdline=coherent_pool=1M quiet cape_universal=disabled に変更して上書き保存.
uEnv.txt(変更後)
# Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0
uname_r=4.4.30-ti-r64
# uuid=
# dtb=
## BeagleBone Black/Green dtb's for v4.1.x (BeagleBone White just works..)
## BeagleBone Black: HDMI (Audio/Video) disabled:
# dtb=am335x-boneblack-emmc-overlay.dtb
## BeagleBone Black: eMMC disabled:
# dtb=am335x-boneblack-hdmi-overlay.dtb
## BeagleBone Black: HDMI Audio/eMMC disabled:
# dtb=am335x-boneblack-nhdmi-overlay.dtb
## BeagleBone Black: HDMI (Audio/Video)/eMMC disabled:
# dtb=am335x-boneblack-overlay.dtb
## BeagleBone Black: wl1835
# dtb=am335x-boneblack-wl1835mod.dtb
## BeagleBone Green: eMMC disabled
# dtb=am335x-bonegreen-overlay.dtb
cmdline=coherent_pool=1M quiet cape_universal=disabled
# In the event of edid real failures, uncomment this next line:
# cmdline=coherent_pool=1M quiet cape_universal=enable video=HDMI-A-1:1024x768@60e
## Example v3.8.x
# cape_disable=capemgr.disable_partno=
# cape_enable=capemgr.enable_partno=
## Example v4.1.x
# cape_disable=bone_capemgr.disable_partno=
# cape_enable=bone_capemgr.enable_partno=
## enable Generic eMMC Flasher:
## make sure, these tools are installed: dosfstools rsync
# cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh
uuid=850b0ebc-fda6-45f7-8b68-df180bc7e37c
2. 再起動
root@beaglebone:~# reboot
再起動後,デフォルトで export されていた gpio がなくなった.
root@beaglebone:~# cd /sys/class/gpio/
root@beaglebone:/sys/class/gpio# ls
export gpiochip0 gpiochip32 gpiochip64 gpiochip96 unexport
さらに,自由に export / unexport できるようになったことを確認できた.
root@beaglebone:/sys/class/gpio# echo 48 > export
root@beaglebone:/sys/class/gpio# ls
export gpio48 gpiochip0 gpiochip32 gpiochip64 gpiochip96 unexport
root@beaglebone:/sys/class/gpio# echo 48 > unexport
root@beaglebone:/sys/class/gpio# ls
export gpiochip0 gpiochip32 gpiochip64 gpiochip96 unexport