トップ 履歴 一覧 カテゴリ ソース 検索 ヘルプ RSS ログイン

OpenBSD/BBB-UserLEDs

INDEX

BeagleBone Black User LEDs

OpenBSD で、BeagleBone BlackUser LEDs を操作する。

最終的には、ディスク・ネットワーク アクセス ランプ 代わりにできたらな…

 User LEDs

BeagleBone Black には、4つのユーザLEDが付いている。これらは、GPIO ピンに接続されている。

LED GPIO SIGNAL PROC PIN
USR0 GPIO1_21 V15
USR1 GPIO1_22 U15
USR2 GPIO1_23 T15
USR3 GPIO1_24 V16

USR0 が内側(LAN側)、USR3 が外側 になる。

Lチカ

BBB の User LED を点灯させる。

 準備

GPIO ピン アクセスは、システム起動時の securelevel 0 で設定されたピンのみがアクセス可能になる。

/etc/rc.securelevel に下記を追加して、セキュアレベルが上がる前にコマンドを実行させ、User LED の設定を行う。

# Set GPIO pin directions for USR LEDs and give them names
gpioctl gpio1 21 set out USR0
gpioctl gpio1 22 set out USR1
gpioctl gpio1 23 set out USR2
gpioctl gpio1 24 set out USR3

セキュアレベルが上がると、下げることはできないので、設定を行った後、反映させるために再起動が必要になる。

NetBSD もセキュアレベルが上がる前に GPIO の初期化を行う必要があるが、/etc/rc.confgpio=YES で有効にして、/etc/gpio.conf で GPIO の設定を行うことができるっぽい…

 点灯

gpioctl(8) コマンドで、GPIO ピン に対して on(1) / off(0) または toggle(2) でステータスを更新して、LED を点灯/消灯させる。名前を定義してる場合は、ピン番号でなく設定した名前で指定することもできる。

bbb# gpioctl gpio1 21
pin 21: state 0
bbb# gpioctl gpio1 21 on
pin 21: state 0 -> 1
bbb# gpioctl gpio1 22 on
pin 22: state 0 -> 1
bbb# gpioctl gpio1 23 on
pin 23: state 0 -> 1
bbb# gpioctl gpio1 24 on
pin 24: state 0 -> 1
bbb# gpioctl gpio1 24 off
pin 24: state 1 -> 0
bbb# gpioctl gpio1 23 off
pin 23: state 1 -> 0
bbb# gpioctl gpio1 22 off
pin 22: state 1 -> 0
bbb# gpioctl gpio1 21 off
pin 21: state 1 -> 0
bbb# gpioctl gpio1 USR0
pin USR0: state 0
bbb# gpioctl gpio1 USR1
pin USR1: state 0
bbb# gpioctl gpio1 USR2
pin USR2: state 0
bbb# gpioctl gpio1 USR3
pin USR3: state 0
bbb# 

Lチカ

 ALL

bbb# cat /etc/rc.securelevel
# Set GPIO pin directions for USR LEDs and give them names
gpioctl gpio1 21 set out USR0
gpioctl gpio1 22 set out USR1
gpioctl gpio1 23 set out USR2
gpioctl gpio1 24 set out USR3

# USR LEDs on/off
gpioctl -q gpio1 USR0 on
gpioctl -q gpio1 USR1 on
gpioctl -q gpio1 USR2 on
gpioctl -q gpio1 USR3 on
sleep 0.5
gpioctl -q gpio1 USR0 off
gpioctl -q gpio1 USR1 off
gpioctl -q gpio1 USR2 off
gpioctl -q gpio1 USR3 off

bbb#
bbb# cat /etc/rc.local
#!/bin/sh
# 〜中略〜

# USR LEDs blink
gpioctl -q gpio1 USR0 on; sleep 0.1; gpioctl -q gpio1 USR0 off
gpioctl -q gpio1 USR1 on; sleep 0.1; gpioctl -q gpio1 USR1 off
gpioctl -q gpio1 USR2 on; sleep 0.1; gpioctl -q gpio1 USR2 off
gpioctl -q gpio1 USR3 on; sleep 0.1; gpioctl -q gpio1 USR3 off
sleep 0.5
gpioctl -q gpio1 USR3 on; sleep 0.1; gpioctl -q gpio1 USR3 off
gpioctl -q gpio1 USR2 on; sleep 0.1; gpioctl -q gpio1 USR2 off
gpioctl -q gpio1 USR1 on; sleep 0.1; gpioctl -q gpio1 USR1 off
gpioctl -q gpio1 USR0 on; sleep 0.1; gpioctl -q gpio1 USR0 off

bbb#

 USR3

起動時のON

bbb# cat /etc/rc.local
#!/bin/sh
# 〜中略〜

# BeagleBone Black User LED - USR3 on
gpioctl -q gpio1 USR3 on

シャットダウン時のOFF

bbb# cat /etc/rc.shutdown
# BeagleBone Black User LED - USR3 off
gpioctl -q gpio1 USR3 off

 USR0

0.5秒おきに点滅させる

bbb# crontab -l
# 〜中略〜

# BeagleBone Black User LED - USR0 on
#@reboot                                 gpioctl -q gpio1 USR0 on

# BeagleBone Black User LED - USR0 on/off
#* * * * * for i in `seq 0 2 59`;do (gpioctl -q gpio1 USR3 on; sleep 1; gpioctl -q gpio1 USR3 off;) done;
#* * * * * for i in `seq 0 1 119`;do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done;
#* * * * * gpioctl -q gpio1 USR0 on; for i in `seq 0 1 118`;do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done;
@reboot                                 while true; do (sleep 0.5; gpioctl -q gpio1 USR0 toggle;) done;

最終更新時間:2024年05月31日 13時09分06秒 指摘や意見などあればSandBoxのBBSへ。