Linux BOX のシリアルコンソールを自作のアプリケーションにする
»
Armadillo で Linux を動かして製品を作ったりする際、
せっかく外部に出ている RS-232C ポートを独自メニューのコンソールとして利用したくなるものです。
Armadillo であれば、デフォルトのファームウェアでこちらはシリアルコンソールとして利用できるようになっていて、
TeraTerm などで接続すると、通常の Linux として利用できます。
さて、どうすればここに自作アプリケーションの画面を表示できるのでしょうか。
実はとても簡単です。
アプリケーション自体は、printf() などで標準出力にメニューなどのメッセージを出力。
入力は、fgets() などで標準入力から取得するように作るだけです。
これを、getty の力を借りると、いとも簡単にシリアルの設定メニューなんかが作れます。
Armadillo の場合、/etc/inittab にシリアルコンソールとして使うために、
::respawn:/sbin/getty -L 115200 ttymxc1 vt102
という記述があります。
ここを、
::respawn:/sbin/getty -L 115200 ttymxc1 vt102 -l 自分で作ったプログラムへのパス -n
とするだけです。
動作中に inittab を書き換えた場合は、 kill -HUP 1 をしましょう。
-lは、起動するべきプログラムの指定で、-nはログインプロンプトを出さない指定です。
これだけで、Linux が起動完了すると自分で作ったプログラムが起動してシリアルメニューとして利用可能です。
printf("login: "); fgets(buf,256,stdin);
みたいなものであれば、オリジナルログインプロンプトも出せます。
login:
SpecialPR