ソフトウェアとハードウェアの境界

ホビー開発に関する誰得情報満載☆

00-01 もう一度、課題検討

今後の活動方針を再確認

Facebookページにて一度書いている内容なんだが、ページ移設に伴ってもう一度確認しよう、ということで、書き直してみる。

1. 坂井弘亮氏作 KOZOSの拡張

「12ステップで作る 組込みOS自作入門」を見ながら、組込みOSを自作してみた。これはOSのカーネルに当たる部分を作っている。 本OSは、aki-h8/3069f ネット対応マイコンLANボード(完成品)上で動作させることを想定して作成しているが、僕はaki-h8/3069f USBホストボードキット(完成品)上で動作するようにした。 当初はネット対応マイコンLANボードを使用していたのだが、DRAMの挙動がおかしく使えなかった。 資料を見てみると、LANボードのDRAMはおまけ程度につけていて、動作しない可能性もある、と記載されていた。 しかし、USBホストボードでは動作することが保証されているような文言もあり、USBも面白そうだなと思ったこともあって、こちらを購入することに決めた。
また、今の自分の環境では、KOZOSのブートローダMONIXを使用させて頂いている。 このブートローダを使用している理由は、TOPPERS/JSPカーネル(uITRON)HOSを起動することができたからである。 以下に、拡張する機能を記載する。

  • USBマスストレージからOS起動
  • FAT32ファイルシステム機能を追加
  • タイマを使用した各種センサーの値の取得、LED等の点灯

2. xv6のH8移植

xv6UNIX v6のx86への再実装版らしい。初めてのOSコードリーディングを読んでいたのだが、どうしても当時のC言語とかが読みにくかったので、何か他にUNIX v6を勉強する方法はないかと調べていた。それで見つけたのがxv6の存在。x86への再実装でなおかつANSI Cで書かれているので、読みやすくなっていることだろうと思った。更に調べてみると、こんなページもあった。
"xv6ソースコードリーディング"
いやぁ、なんと素晴らしきGoogle先生。潜れば潜るほどいろんな宝物が出てくる。 上記を見ながら、自分流にコメントや命名規則をつけてソースコードを改変模写、並びに、H8への移植していき、動作させたい。

3. Raspberry Pi(以下RPi)とH8ボードとの接続

「2.」でUNIX OSの内容を知りたかったのは、そもそも、Linuxの基本的なシステムコール(fork,exec,ioctl,特にpipe)などの考え方を理解したかったからである。またリアルタイムOSばかりではなく、汎用OSも少しは勉強しようかなぁと思ったからだ。xv6でUnixの基本的な考え方を理解した上で、現代のLinuxまたはUnixライクOS上で動作するプログラムを作成する。これもやりたいことの一つである。
Raspberry PiはARMアーキテクチャのCPUを搭載した超小型PCである。SDカードにRaspbianというRaspberry Pi用にチューニングしたDebianを書き込んで、SDカードから起動するようになっている(もちろん、他のOSも起動することができる、T-Kernelとか)。RPiの種々のインターフェースを用いてaki-h8/3069fと接続してデータを取得すれば、面白いシステムになると思う。RPiにUSBの小型無線LANをつけて、LANに接続しているので、外出先でも(自宅の)気温や(自宅の)照度、位置センサーの値を取得できる。そう、馬鹿げたシステムである。でも、勉強するのには持って来いだと思うので、ぜひとも実装したいものだ。
また、RPi上のプログラムを作成する場合は、できればプログラミング言語C++を使用したい。オブジェクトオリエンテッドな言語の考え方も勉強するようにしたい。