今週末はOSCですね

テーマ:

いよいよ今週末はOSCです。さっきやっと宅急便で荷物を送りました。


今回はセミナーも受け持たせてもらいますが、どんな話をするかいろいろ考えています。とりあえず1回やってみたかった「1枚の紙にOSの全ソースコードを印刷して配布」ってのをやろうかと。。。まあ字が小さくなりすぎて読めはしないのだけれど、インパクトはあるかなあと。これだけのコード量でいいなら、OSって自分でも書けるんじゃないの?って思っていただければなあと思います。


ちなみに16upで印刷したら、両面で1枚にだいたいちょうど入りきりました。ブートローダーは片面でOKだった。


あとは肝心の話す内容だけど、うーん、KOZOSがどんなものかってのをまず話すべきなんだけど、何でこのようなものを作ったのかって話がしたいなあ、と思う。


というのは、はじめて展示会に出たのがちょうど去年のOSCTokyu/Springなのでちょうど1年前なのだけど(その節は川合さんとはりぼて友の会にお世話になりました)、その後も京都、名古屋、大阪、秋の東京と1年間出展してきていろんな人と話ができたのだけど、やっぱり多いのは「何に使えるのか?」「実用性はあるのか?」という質問だ。


これについてはその都度きちんとKOZOSの趣旨やポリシーを説明して、多くの人には理解してもらえていると思うのだが、それでもいくら説明しても「でも実用性が無いならダメじゃん」「LinuxやITRONでいいのでは?」と言われてしまうこともある。


しかしここで考えてほしいのは、「実用でないなら意味がない」という実用一点張りの考え方はどうだろうか、ってことだ。


独自OSを自作するという活動はいくつかある。しかし思うのは、ほとんどのOSは「機能追加して、実用性を高めていく」という、機能増加の方向に向かうということだ。どんどん新機能を追加して、便利に発展させていく。まあこれはこれで面白そうだしいいと思うしべつにそういうOSを否定するわけではないのだけれど、KOZOSで今からそれをやろうとしても、先発のOSを追うだけになってしまい、なかなか追いつけないだろうし面白いものにはならないだろう。その方向性でKOZOSならではの魅力を出そうとしたら、ものすごく斬新な機能を実装するとか、ものすごく魅力的な機能を積むとか、ものすごい特徴的なつくりにするとかしかない。(まあそれも面白そうだけどね)


何より、そういう方向性のものばかりってのもつまらないだろう。いろんなものがあっていいと思う。


で、KOZOSでやりたいのは、「どんどん機能追加して」というおおかたの流れとは逆行して、「削って削ってOSとして必要なエッセンスだけを残して、1行1行の意味が重い、密度の濃いものにできないか?」ということだ。これだけあればOSといえるというコア機能(ぼくが考えるところでは、スレッド管理、メモリ管理、I/O管理の3機能)だけに限定して、そのかわり読みやすく理解しやすく改造しやすいものにする。


なのでKOZOSは、教材に向いていると思う。

そんなわけで学習向けとして作っていきたいのだけど、学習向けと謳うならばそれはそれでハンパなものにはせずにきちんと考えて、日本語のドキュメントを充実させて、誰でも購入できる価格帯のボードをターゲットにする、とかいったことは考えたい。というのは、「このOSは実用向けだけど学習にも使えます」とか言っておきながら、実際に動作するボードはン十万円、とか、開発環境はン万円、とか、ボードから自作する必要があります、とか、ボードには英語のマニュアルしかありません、とかってOSがけっこう多くてちょっとどうかと思ってるところがあるからだ。少なくともボード自体がン十万円とか開発環境がン万円もするようでは、現実的には個人で学習なんてできないじゃん!って思う。


とくにKOZOSは、教えてくれる人のいない状況での独学に向いているものにしたい。ただOSがシンプルなので学習に向いていますよっていうだけでなく、動作するボードの値段とか、CPUやボードやペリフェラルのドキュメントの充実さとか、日本語ドキュメントの充実さとか、開発環境の入手しやすさとか、ボード自体の入手しやすさとか扱いやすさとか、そういったもろもろのことを含めて、個人の学習に向いているというものにしたい。なぜなら、ぼく自身がそういう個人向けにまとまったものがすごくほしかったのだけど無かったので、OS自作のためにはいろんな分野をその都度その都度つまみ食いで勉強していくしかなかったから。

そして、そういうOSは未だに(KOZOS以外に)無い、と思う。

あとは「組込みOS利用の学習」というより、「組込みOSの内部動作や自作の学習」を考えたものにしたい。世の中の「組込みOS本」のほとんどは、「OS自作」や「OS理解」でなく「OS利用」のための本のように思う。自作のための資料やサンプルがないのです。


OS初心者が「これなら自分でも読めるかも」「これくらいでいいなら、頑張れば自分でも自作できるかも」って思えるものにしたい。OSのプロや専門家が、ではなく、初心者や学生さんや志ある若い人がそういうふうに思えて、一歩を踏み出すきっかけにできるものにしたい。


ってな話ができればいいなあ。


AD

写真を撮ってみた

テーマ:

いままで雑誌記事とかで写真を撮ることはあったのだけど、まあてきとうにとってはいたのだが今回組み込みOS本を書くので、さすがにきれいな写真が撮りたいなあとおもって「撮影ボックス」なるものを買って使ってみた。


照明が直接当たらないようにするための半透明な箱で、オークションに出品するものの写真とか撮るのに使われたりするらしいのだけど、バッチリいいかんじで撮れた。


KOZOSのブログ-H8/3069Fマイコン・ボード


う~ん、いままで床の上で蛍光灯の光で撮っていたのとはぜんぜん違ってきれい。縮小したらバックにかすかに波模様が出てしまったが、これは縮小によるものなので実サイズの写真には波模様は出ていない。やっぱりちゃんとした道具を使うと違うねえ。



AD
KOZOSですがさすがに書籍にするのに開発環境がFreeBSDだけというのはさびしいので,FedoraとWindowsXPで動作確認した.以下,注意する点のメモ.

これでFreeBSD,GNU/Linux,Windowsのどれでも開発できることになりました.う~ん,すばらしい.可能ならばubuntuも(たぶん大丈夫だとは思うが)確認して,実績どりしておきたいなあ.

(共通)

・マイコンボード付属のCD-ROMに添付されているクロスコンパイラでコンパイルするには,ソースを何箇所か修正する必要あり.(アセンブラの.type指定を削除するのと,Makefile修正と,乗算命令を利用しないための構造体のサイズ調整と,リンカスクリプトでELF指定を削除する修正)
・マイコンボード付属のクロスコンパイラはCOFF形式の実行ファイルを吐くので,利用できない.まあCOFFをELFに変換すればいいしブートローダーの作成には使えるのだけど,ソースコード修正も必要になってしまうし,OSはELFでないとブートローダーがロードできないので,いっそのことbinutilsとgccをクロスビルドしたほうがよいと思うのでそうする.
・USBシリアルアダプタだとh8writeやFDTでのフラッシュ書き込みがうまくいかないときがある.本体に初めからシリアルコネクタが付属しているPCを使った方が確実.(これでけっこうハマッた)
・XMODEMでの転送で,開始前のNAK送信の周期が短いとエラーになりやすい.っていうか必ずエラーになってしまう(開始前のNAKが,エラー通知のNAKとして解釈されてしまうようだ.なんかへんなプロトコル).なので間隔をもっと開ける必要あり.またXMODEMでの転送時は,loadコマンドを実行したらモタモタしてないでさっさと開始するようにする(ファイル選択に時間がかからないよう注意).これもけっこうハマッた.

(Fedora特有)

・Fedora含む多くのLinuxディストリビューションでは,ホストgccが入っていない.なのでプログラミング環境を追加インストールする必要がある.(Fedoraだとシステムメニューからマウスで選択するだけで簡単にインストールできる.binutilsとgccをインストールする必要あり)
・GNU makeとかも無ければ追加インストールする.
・端末アプリにはminicomが標準で入っているので,そのまま利用できる.使いかたは,初めに minicom -s で起動してセットアップして,次からは minicom -o で起動する.フロー制御をOFFにする必要あり.ファイル転送の設定はいじる必要無し.Ctrl-A, zでヘルプ.ファイル転送はminicomでできる.

(Windows特有)

・マイコンボード付属のCD-ROMのcygwin環境を期待していたがクロスコンパイラがCOFF形式を出力するのでダメ.まあ*.mot作成するだけならできるのだけど,binutilsとgccを自前でビルドすることにする.
・ホストgccやmakeが必要だが,付属CD-ROMのcygwinをインストールするとgccとかmakeとかがひととおり入ってくれるのでこれを利用すると楽.ビルド方法はFreeBSDと同じだが,binutilsは ./configure に --disable-werrorが必要だった.
・h8writeはCD-ROMに付属しているのと,cygwinに入っているのと,CD-ROMに付属しているソースから自分でビルドするのと,インターネット上からソースを持ってきてビルドする,という4通りの方法がとれる.まあ,どれでもいい.
・h8writeが嫌ならFDTが使える.いちおう,これで書き込みして起動できることは確認できた.

AD