Raspberry Pi 2(Raspbian Jessie) のGPIOのシリアルポートを使う
Raspberry Pi 2のOSをRaspbian Jessieにアプグレードしました。
2016/04/18 追記 /boot/cmdline.txtの修正について追記しました。
ボード上のGPIOのシリアルピンを使う場合、
デフォルトでは1)システムコンソール出力(printk()の出力)と、2)コンソールログイン(getty)に
利用されており、それらに利用されないように設定する必要があります。
1)の対応は、/boot/cmdline.txt の定義を修正します。
具体的には "console=ttyAMA0,115200 kgdboc=ttyAMA0,115200" を削除し、
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4
elevator=deadline rootwait
となります。
ただし、これでもシャットダウンとリブート時等に若干メッセージが出力されるみたいです。
一時的なら/proc/sys/kernel/printk の設定変更でも良いかもしれません(未確認)。
2)は/etc/inittabを開いて修正しようとすると、ファイルがありません。
JESSIEではシステムまわりがsystemdに移行しため、無くなったんですね。
色々と調べ、次のような感じでコンソール(getty)の利用設定が出来るようです。
停止/開始
$sudo systemctl stop serial-getty@ttyAMA0.service
$sudo systemctl start serial-getty@ttyAMA0.service
自動起動の有効/無効
$sudo systemctl enable serial-getty@ttyAMA0.service
$sudo systemctl disable serial-getty@ttyAMA0.service
参考情報
adafruit RASPBERRY PI - Using UART instead of USB
Raspberry PIのGPIO上シリアルとArduinoの通信
コンソール(getty)の利用を停止したのち、
シェルプロから直接/dev/ttyAMA0をいじって入出力をする場合、
通信速度や制御コードを送らない設定は従来と同じでsttyコマンドを使います。
$sudo systemctl stop serial-getty@ttyAMA0.service
$sudo chmod o+rw /dev/ttyAMA0
$sudo stty -F /dev/ttyAMA0 115200 \
-iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr \
-onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig \
-icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase \
-tostop -echoprt -echoctl -echoke
確認として
$cal 2016 > /dev/ttyAMA0
でカレンダーのテキスト文字をTeraTermに送信出来ました。
シェルプロから/dev/ttyAMA0を使う場合は状況に応じて環境変数IFSの設定も必要ですね。
このあたりの話は、以前まとめた下記の記事が参考になると思います。
・参考記事 「Linuxで直接シリアルデバイスを利用する際の注意点等」
試しにラズパイにIchigoJamをシリアル接続してIchigoJamのファームウェアの更新を
行ってみたところ、問題なく更新出来ました。
接続
ラズパイ ピン番号08:GPIO14/TXD(UART0) -> IchigoJam RxD
ラズパイ ピン番号10:GPIO15/RXD(UART0) -> IchigoJam TxD
ラズパイ ピン番号06:GND -> IchigoJam GND
更新にはlpc21ispを使いました。
$sudo systemctl stop serial-getty@ttyAMA0.service
$sudo lpc21isp -control -bin ichigojam-xtal.bin /dev/ttyAMA0 115200 12000
USB-UARTモジュール不要なのでこれはこれでお手軽かもしれません。
systemdについては、まだ理解出来ていませんが、下記のサイトのスライドを見て概要は理解出来ました。
「Linux女子部 systemd徹底入門」 http://www.slideshare.net/enakai/linux-27872553
systemdまわりが理解出来たら、自宅のCenOSサーバーも6から7にアップグレードしようと思います。
« Propeller始めました(15) 温度センサーSTTS751を試してみる | トップページ | Raspberry Pi 2でLEDドットマトリックスを制御してみました »
「Raspberry Pi」カテゴリの記事
- 使い勝手の良いRP2040搭載「Seeed Studio XIAO RP2040」(2023.02.13)
- Raspberry Pi PicoにUSBキーボードを繋げてみる(2021.03.29)
- Pimoroni Pico VGA Demo Baseを入手しました(2021.03.25)
- Raspberry Pi Picoで4桁7セグLEDをダイナミック表示(2021.03.21)
- Raspberry Pi Picoのリセットボタンの実装(2021.03.15)
« Propeller始めました(15) 温度センサーSTTS751を試してみる | トップページ | Raspberry Pi 2でLEDドットマトリックスを制御してみました »
コメント