2015年8月14日金曜日

12ステップで作る組込みOS自作入門 (step1) 初期の躓き回避マニュアル

7月から地方巡業などでせわしない日々が続いていたのですが、ようやくまとまった時間を取れるようになりました.常日頃から勉強熱心なわたしは、「12ステップで作る組込みOS自作入門」という本で遊びはじめたところです.
この本は、amazonレビューでも高い評価を得ており、OSの基本がなんだかわからんちんな技術者の入門書としては実に具体的で好ましいのではないかと思っております.この筆者って他にもいろいろ書いてるんだよね.尊敬しております.

ところが、この本が発行されたのが2010年とすでにやや古く、2015年の今では開発環境がいろいろと変わったために生じるトラブルで、しょっぱなからいろいろとトラブっていますので、経緯をメモっておくことにしようと思ふ.

Cygwinはつかえるか?
開発環境として使いたかったのはcygwinだったのですが、CPUボードへのCOMポート経由のDownloadソフトであるh8writeが動きませんでcygwinは断念しました。試したcygwinは64bitでしたが32bitなら使えるかどうかは試していません.書籍の中でもcygwinだと焼きがうまく動かないことがあると書かれており、cygwinは避けるのが無難かと思われた次第です.

ubuntu9.10 64bitは使えるか?
書籍における動作確認OSの一つがubuntu9.10だったのですが、2つの問題がありました.
一つ目は、書籍では32bit版ubuntuで動作確認したらしく、64bit版ubuntuではgccのコンパイルが通りませんでハマリます.ネットの情報で解決しました.(後述)
二つ目は、わたしはHDDへのインストールをせず、USBメモリブートでubuntuを動かしました.最近のPCにはUSB3.0がついていて、USB3.0対応のUSBメモリを使うと、USBブートでLinuxを起動しても動作速度にあまり不満を感じないくらい快適です.USBメモリブートのせいだと推測するのですが、ubuntu9.10だと有線LANが動きません.(ubuntu9.10をHDDインストールで使う分にはデフォルトで有線LANが使えるとネットの情報は語っています)
あるいは、ubuntu9.10が作られた時代よりも新しいPCを使っているのでubuntu9.10が適切な有線LANのドライバを搭載してないのかもしれません.
そんなわけで、ちょっと古いubuntu9.10は敬遠したくなりました.

ubuntu15.04 64bitは使えるか?
これを書いている時点で最新バージョンのubuntuです.ubuntu15.04であれば、USBメモリブートでも有線LANが動きましたので、できれば15.04を使いたい.しかし、64bitゆえにgccのコンパイルが通らないという問題はubuntu9.10と同じです.64bitOS問題を回避するためにソースコードをいろいろと書き換える必要があるのですが、それを解説したのが下記サイトです.thanks!

ubuntu15.04でUSB serial変換ケーブルは動いた?
いまどきのPCにはCOMポートが無いケースが多いので、USB serial変換ケーブルを使うのが常態化していると思います.FTDI系のとProlific系のと両方試しましたが、ubuntu15.04のデフォルトのままで使えました.USBに挿せば瞬時に自動的に認識されますから便利だわ.ubuntuでの認識のされ方は、/dev/ttyUSB0です.これは後で重要ですので覚えておくべきです.

Terminal softはどうした?
minicomを使いましたが、ubuntu15.04にはデフォルトでインストールされていませんでしたので、インストールしました. sudo apt-get install minicom
minicomを起動するとデフォルトで115200bpsになっています.でも、hello world!サンプルコードは9600bpsなので、minicomを設定しないと文字化けしますのでご注意のほどを.この辺は書籍でも注意が促されています.

h8writeの調達は?
こちらのURLからdownloadできます.  http://mes.osdn.jp/h8/writer-j.html
そのページにはLinux実行ファイルもupされていますが、わたしの環境(ubuntu)では動きませんでした.
なのでh8write.cをコンパイルすればOKです。 gcc h8write.c -o h8write
本当はserial.cの冒頭の#defineをOSに合わせて書き換える必要があるのですが、そのままでLinuxになっていたので書き換えずにいきなりコンパイルできます.
コンパイルでwarningがたくさん出ますが無視してOK.

h8writeは動いた?
書籍にはROM焼きコマンドとして h8write -3069 -f20 kzload.mot /dev/ttyUSB0 と書かれているのですが、わたしの場合は-f20ではなく-f25でなければ動きませんでした.なぜかというと、targetとして使える秋月のH8 CPUボードが複数あるんですが、書籍で推奨されていない安価な基板を買ったらその基板のXTALが25MHzだったのです。ぎゃふんとか言っちゃいました.ちなみに推奨されている基板は20MHz.
それに起因して、サンプルコードのserial.cの書き換えが必要でした.
  sci->brr = 64
の64を80に書き換えてコンパイルし直す必要がありました.

だいたい以上で、hello world! の表示まで漕ぎ着けたというわけでした.後続の読者諸氏のトラブル回避にならんことを祈る.

つぎへ

かしこ


人気ブログランキングへ

0 件のコメント:

コメントを投稿