LoginSignup
1
0

More than 5 years have passed since last update.

BeagleBoneGreenのGPIO端子の設定

Last updated at Posted at 2019-03-10

BeagleBoneGreenでGPSを受信する02で書いた/boot/uEnv.txtを編集する方法で端子設定をするとconfig-pinを使ったGPIOの機能設定ができなくなります。(他の方法があるかもしれない。。)
PCのu-centerからGPSモジュールの設定を変更したい場合にUART端子にPCからのUART入出力を接続するのですが、出力(送信)がBeagleBoneと衝突してしまい、現在の設定値を取得するコマンドや設定するコマンドが正しく送信できません。BeagleBoneの端子設定をGPIO入力にすれば回避できますが、/boot/uEnv.txtを編集して再起動を毎回するのは面倒ですので他の方法でGPIOの設定を行います。

参考:https://gist.github.com/pdp7/d4770a6ba17e666848796bf5cfd0caee

スタートアップスクリプトの作成

GPIO端子をUART端子に変更する設定を記述します。

$ sudo nano /usr/bin/enable-uart-pins.sh
enable-uart-pins.sh
#!/bin/bash

config-pin p9.24 uart
config-pin p9.26 uart

enable-uart-pins.shのパーミッションを変更します。

$ sudo chmod 755 /usr/bin/enable-uart-pins.sh

サービス起動スクリプトの作成

enable-uart-pins.shが起動時に実行されるようにします。

$ sudo nano /lib/systemd/system/enable-uart-pins.service
enable-uart-pins.service
[Unit]
Description=Enable UART pins
After=generic-board-startup.service

[Service]
Type=simple
ExecStart=/usr/bin/enable-uart-pins.sh

[Install]
WantedBy=multi-user.target

サービス起動設定

システム起動時に作成したサービスが起動するようにします。

sudo systemctl daemon-reload
sudo systemctl enable enable-uart-pins.service

動作確認

再起動後にサービスが起動されていることとGPIO設定が変更されていることを確認します。

$ sudo systemctl status enable-uart-pins.service

● enable-uart-pins.service - Enable UART pins
   Loaded: loaded (/lib/systemd/system/enable-uart-pins.service; enabled; vendor
   Active: inactive (dead) since Sun 2019-03-10 09:31:34 JST; 1h 16min ago
  Process: 2061 ExecStart=/usr/bin/enable-uart-pins.sh (code=exited, status=0/SU
 Main PID: 2061 (code=exited, status=0/SUCCESS)

 3月 10 09:31:33 beaglebone systemd[1]: Started Enable UART pins.
lines 1-7/7 (END)
$ config-pin -q p9.24 && config-pin -q p9.26
P9_24 Mode: uart
P9_26 Mode: uart

これでu-centerの設定を行うときはconfig-pin p9.24 gpioで一時的にBeagleBoneの送信端子をGPIOに変更しUART出力を無効にできます。UARTに戻すときはconfig-pin p9.24 uartで。

GPIOの入出力設定

GPIOは通常は入力がデフォルトです。GPIOが出力の場合、これもPCのUART出力と衝突してしまうため設定変更が必要です。BeagleBoneのP9.24とP9.26は初期状態は入力です。
(ちなみに、JTAG兼用端子などはデフォルトが出力に設定されている場合があります。これはプロセッサまたはマイコンによって異なるためデータシートで確認して下さい。)
GPIOの入出力設定は/sys/class/gpio/gpio**/directioninまたはoutを書き込むことで設定できます。

$ sudo echo in > /sys/class/gpio/gpio24/direction
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0