ブートローダの作成が完了 - 12ステップ本を試す その2
年末年始の空き時間に12ステップ本にしたがって作業を進めていましたが、7章まで完了することができました。
これでブートローダの作成が一段落ついた感じです。
- 作者: 坂井弘亮
- 出版社/メーカー: カットシステム
- 発売日: 2010/05/01
- メディア: 単行本
- 購入: 24人 クリック: 252回
- この商品を含むブログ (39件) を見る
ELFファイルを転送するにあたって、試しに使ってみていたminicomでの作業だとファイル転送の実行の操作が面倒でしたので、結局Macにデフォルトでインストールされているcuコマンドでh8ボードにシリアル接続して作業するようになりました。
また、xmodemプロトコルでのファイル転送につかったのはlsxコマンドですが、これについてもMacにはデフォルトでは入っていないコマンドなので、次のようにhomebrewからのインストールを行いました。
lsxコマンドのインストール
sudo brew install lrzsz
これでlsxなどのコマンドが使えるようになります。
ELFファイルのシリアル転送の実行
12ステップ本ではcuコマンド実行中に"~C"を入力してlsxコマンドを実行するように書いてありますが、Macのcuの場合は"~+"を入力してコマンドを実行すると、シリアルからの入力がコマンドへの入力になり、コマンドの入力がシリアルへの出力になります。
実際にこれまで作成したものを実行してみた所です。
% sudo cu -l /dev/cu.PL2303-00004006 Connected. kzload> boot loader started. kzload> load ~+ lsx kozos.elf Sending kozos.elf, 27 blocks: Give your local XMODEM receive command now. Bytes Sent: 3584 BPS:196 Transfer complete load succeeded. kzload> run magic : 7f454c46 Class : 01 Byte order : 02 Version : 01 OS/ABI : 00 ABI ver. : 00 type : 0002 arch : 002e version : 00000001 entry point: 00ffc020 program hdr: 00000034 section hdr: 00000608 flags : 00810000 hdr_size : 0034 program_hdr_size : 0020 program_hdr_num : 0002 section_hdr_size : 0028 section_hdr_num : 0008 section_str_table: 0005 type offset vaddr paddr file-sz mem-sz -------- -------- -------- -------- -------- -------- 00000001 00000000 00ffbfac 00ffbfac 000004ba 000004ba 00000001 000004bc 00ffc468 00ffc468 00000100 00000100 starting from entry point... : 00ffc020 os started. kozos> echo Hello, world! Hello, world! kozos>
runコマンドの処理ではELFファイルの情報を出力したあとkozos側に制御が移るようにしています。
ということで、12ステップ本にそって組込みOSを作ってみているところですが、12ステップ本は素晴らしい本だと思います。
- 説明が入門者にもやさしく丁寧にかいてあること
- CDROMメディアの普及などで最近の書籍ではあまり見かけなくなってしまった「このリストを全部打ち込もう。そうすれば動くようになるよ」という書き方
- 最初は単純なものをつくり、徐々にステップアップしていくという達成感が得られやすくモチベーションも続きやすい進め方
といった点は、学習者にとってはとてもうれしいものです。
- ブートローダ作りたい。ELFファイルのロードを学習したい。
- OSを作ってみたい。OSの基本機能を学習したい。
という人はぜひ最初にこの本を手にしてみるとよいと思います。