MINIBIAN 最小構成のRASPBIAN (Raspberry Pi) ①
組込み開発っぽい事したい
みんな大好きRaspberry Pi(以下RPi)に、僕もまた夢中なのだ。
www.raspberrypi.org
概要はここで説明せずとも、検索すればたくさんの記事が見つかる、とてもメジャーな製品だ。
使い方は様々なのだが、僕は特に「組込みっぽく」使うことを心がけている。
ネットワークに接続せず、USBシリアル変換ケーブルの給電のみで作動させている。
過去記事はこちら
また、USBシリアル変換ケーブルの給電のみでは、時折バグる。
そのため、現在ではこちらのUSBハブを仲介して接続している。
www.amazon.co.jp
要は、セルフパワーのUSBハブを介することで、電源を補えばよかったのだ!!
ファームウェアの読み書き
組込み開発の醍醐味といえば、PCでクロスコンパイルしたバイナリイメージや実行ファイルをターゲットに書き込む作業だ。
少なくとも僕の中ではそうだ。
「ちゃんと動いてくれるかな??」
と胸踊らせながらターゲットに書き込む。
答えは電源を入れた時、あるいはボタンを押した時にわかる、というのが組込み開発でしょう。
アプリやウェブの開発でも、「動かす直前」が最もドキドキするはず。
そんなわけで僕は、ネットワーク越しに実行ファイルを渡したり、USBメモリさしてコピーするみたいな、普通のPC操作をするのは嫌だった。
組込み開発ぽい雰囲気を出すことが大事なのだ。
そこで、ちょっとMっぽい条件を自分に課せた。
- 通信はUSBシリアル変換ケーブルしかできない。
- ファイルのやりとりは、ノートパソコンに付いているSDカードリーダのみ使用できる。
- OSはLinuxBeanのみ使用する。
これだけあれば十分だ。
さぁ、旅に出よう(自分自身いろいろ不可解)。
ターゲット用OSはMINIBIAN
以前にも説明したこちらのターゲットOS、というかイメージ。
minibianpi.wordpress.com
最新のものはRPi2にも対応しているはずなので、少しファイルサイズが大きい。
こちらの2014-11-24-wheezy-minibian.tar.gzが一番ファイルサイズが小さいと思うので、RPi(2じゃない)を使用する場合は、お好みで選ぼう。
SDカードは2GBでも十分。
今後拡張していくにしても、ApacheやSambaやGitやMySQLを入れてサーバ化するとかしなければ十分な容量だ。
僕は特にIOの制御、IPC関連のシステムコールを使用したシステムを作ってみたいと思っていて、それほど容量は必要ないと考えている。
ネットワークのsocketやlisten、bind、IPCは共有メモリやSemaphore、低レベルのIO制御のioctlとか使ってみたい。
何をするかによるけれども、とりあえずそういうシステムコールを使用するプログラムを作成する、というのが私の勉強スタイルだ。 目的のための勉強ではない、勉強そのものが目的なのだ!!(聞き飽きたフレーズ感がすごい)
LinuxでのSDカードへの書き込み
開発環境にはLinuxBeanを選定しているので、Linuxではお馴染みのddコマンドを利用しよう。
(ちなみに、僕はzsherなので、プロンプトは'%'です。)
SDカードにMINIBIANイメージの書き込み
% ls -1 {~/Work/RPi/img} . .. 2015-11-12-jessie-minibian.img % sudo dd if=2015-11-12-jessie-minibian.img of=/dev/sdg
僕の環境の場合、SDカードは/dev/sdgとして認識されていた。 SDカードがどのデバイスかは、抜き差ししてls /devして調べられたし。 なんか接続した時のログみて判断するのがいいみたいだけど、メンドイからやめた。
上記のコマンドが終了し、プロンプトが戻ってくれば書き込み完了。 実機に差し込み電源を投入(USBシリアルを接続)すれば、起動成功だ。
Linuxのシリアルコンソール
LiunxBeanはUbuntuベースのディストリビューションなので、Ubuntuのソフトが使える。
使いやすかったソフトはgtkterm。
こちらの設定をしてみよう。
gtktermのインストール
#gtktermのインストール % sudo apt-get install gtkterm
インストール直後はgtktermは使えない。 使いたいデバイス(ttyUSB*)へのアクセス権がないからだ。 次のコマンドで自ユーザをdialoutグループに追加する。
dialoutグループにユーザを追加
#デバイスがあるかどうか確認 % ls -l /dev/tty* #ttyUSB0がUSBシリアルデバイス #所有グループがdialoutになっている crw-rw---- 1 root dialout 188, 0 Jan 20 23:10 /dev/ttyUSB0 ... % sudo addgroup [ユーザ名] dialout #rootも追加しておいていいかもしれない % sudo addgroup root dialout
これでUSBシリアルケーブルを使用したRPiとの通信が正常にできる。 念の為に一度PCを再起動しておこう。
gtktermの使い方
LinuxBeanを使用しているならば、メニュー→アクセサリ→Serial port terminalから起動できる。 もちろんshellからgtktermとコマンドしても良い。
gtktermイメージ
gtkterm通信設定
設定項目 | 値 |
---|---|
ポート | /dev/ttyUSB0 |
ボーレート | 115200 |
パリティ | なし |
その他もろもろはデフォルトでおk。
gtkterm設定画面
上記の設定が完了すれば、gtktermイメージにあるように感動の起動ログを眺めることができる。
次回予告 Raspberry Piのイメージで遊ぶ
大体こういうことをする。