パタヘネ本、CPUの作り方を呼んで、CPU周りの仕組みはイメージがつかめてきたので、次はOSのレイヤに挑戦することにします。
Linuxはソースがあるのが良いけど、コードサイズが大きいので出来れば避けたい。
どうしようかと思いつつ入門者向けのOS作成はないかなと調べてたら、以下の本あたりが良さげらしい。
MONA―2ちゃんねる発祥の手作りOS
30日でできる! OS自作入門
作りながら学ぶOSカーネル―保護モードプログラミングの基本と実践
12ステップで作る組込みOS自作入門
Intel CPU向けの書籍だとVMWareで実行ができるから楽チンなんだけど、x86はアセンブラの命令が酷いのと、ブートストラップがめんどいというイメージがあります(偏見かも…)。個人的には、純粋にOS周りだけを勉強したく、かつ、ブートストラップから全部書きたいので、出来ればx86アーキテクチャは避けたいところです。
で、上記4冊の目次をチェックしてみると、上3つはx86向けで最後の1つだけはルネサスのH8がターゲットなので、「組込みOS自作入門」はその点でメリットがあります。また、組込みOS自作入門は、ソースも2000行未満でかつ改変・再配布もOKなので、全容が把握しやすくblogでネタにするにも都合が良いです。
というわけで、今回は「12ステップで作る組込みOS自作入門」を題材に勉強していく事にします。
パタヘネ本のときと同様、今回も読書メモを取りながら読み進めていきます。
目次:
第1部 ブート・ローダーの作成 1stステップ: 開発環境の作成 1.1 開発環境の構築 1.2 「Hello World」のソース・コード 1.3 「Hello World」を動かしてみよう! 1.4 まとめ 2ndステップ: シリアル通信 2.1 メモリマップドI/O 2.2 内蔵シリアル・コントローラ 2.3 ライブラリ関数の追加 2.4 プログラムの実行 2.5 スタート・アップ 2.6 まとめ 3rdステップ: 静的変数の読み書き 3.1 メモリ構成 3.2 静的変数の書き換えの対応 3.3 プログラムの実行 3.4 まとめ 4thステップ: シリアル経由でファイルを転送する 4.1 ブート・ローダー 4.2 シリアル経由でのファイル転送 4.3 XMODEMを実装する 4.4 プログラムの実行 4.5 アセンブラ・プログラミング 4.6 まとめ 5thステップ: ELFフォーマットの展開 5.1 オブジェクト・ファイル・フォーマット 5.2 ELF形式 5.3 プログラム・ヘッダによるメモリ展開 5.4 プログラムの実行 5.5 論理回路 5.6 まとめ 6thステップ: もう一度,Hello World 6.1 プログラムのロード 6.2 「Hello World」の作成 6.3 プログラムの実行 6.4 CPUの動作原理 6.5 まとめ 第2部 OSの作成 7thステップ: 割込み処理を実装する 7.1 割込み処理 7.2 H8/3069Fの割込み処理 7.3 ブート・ローダーに割込みハンドラを実装する 7.4 プログラムの実行 7.5 まとめ 8thステップ: スレッドを実装する 8.1 OSの概要 8.2 OSの実装 8.3 プログラムの実行 8.4 まとめ 9thステップ: 優先度スケジューリング 9.1 優先度ベースのスケジューリング 9.2 優先度の実装 9.3 プログラムの実行 9.4 まとめ 10thステップ: OSのメモリ管理 10.1 OSの役割 10.2 メモリ管理の概要 10.3 メモリ管理の実装 10.4 プログラムの実行 10.5 まとめ 11thステップ: タスク間通信を実装する 11.1 タスク間通信 11.2 関数の再入と排他 11.3 メッセージ通信の実装 11.4 プログラムの実行 11.5 まとめ 12thステップ: 外部割込みを実装する 12.1 割込みとスレッド 12.2 コマンド処理の実装 12.3 プログラムの実行 12.4 まとめ |
あと、参考になりそうなサイトのリンク集を作っておきます。
Sakai Hiroaki’s Home Page
筆者オフィシャルのホームページ
独自OSを作ってみよう!
書籍で作るOSであるkozosのサイト
「H8マイコンボードで動作する組み込みOSを自作してみよう!」最新記事一覧 – ITmedia Keywords
ITmediaに連載されていた、筆者による記事
書籍のダイジェスト版のようなものなので、本を買う前に難易度を把握するにはお勧めです
Mac OS Lionで「12ステップで作る 組込みOS自作入門」1 – ひとりWEB開発日記
Mac OS Lionで「12ステップで作る 組込みOS自作入門」2 – ひとりWEB開発日記
タイトルどおり、Macでgccを使って環境を作ってみえます。
blogに載っているのは環境の構築までっぽいですが、Macでの取っ掛かりが欲しい人には良い情報です。
ボードにつなぐアダプタの電圧(と定格電流)に注意です。
会社帰りに近所の本屋で見つけたので立ち読みしてみると、基本的にはWin/Linuxでやれということだが、我が家はMacオンリー。
一度帰宅してから、ネットで情報を探すと、Macでやってる人もいるらしい。
久しぶりにH8の開発環境を構築:Pakri / Modki:So-netブログ
組込みOS自作入門 ? Hello, world!:Pakri / Modki:So-netブログ
こちらはubuntuで環境構築のヒントが有ります。
Ubuntu上ではh8writeは最初の1回しか書込出来ないと本に書いてあったけど、実際、1回しか書込み出来なかった。この場合、本ではUbuntuを再起動するように指示があるが、killコマンドを使ってh8writeのプロセスを殺せば、再起動をしなくとも書込み出来る。
組み込みOS自作入門の入門 – tomの日記
こちらもUbuntu。9.10での環境構築が載ってます。
12ステップで作る組み込みOS自作入門 1ステップ目 – 不沈船金義丸
12ステップで作る組み込みOS自作入門 1.1ステップ目 – 不沈船金義丸
12ステップで作る組み込みOS自作入門 1.2ステップ目 – 不沈船金義丸
12ステップで作る組み込みOS自作入門 2ステップ目 – 不沈船金義丸
12ステップで作る組み込みOS自作入門 3ステップ目 – 不沈船金義丸
書籍序盤の作業メモがあります。
本:組込みOS自作入門(著:坂井弘亮) -天気晴朗ナレドモ浪高シ-
自作OS勉強会:”第12回もくもく会”に参加してきた件に関して -天気晴朗ナレドモ浪高シ-
メモ:”12ステップで作る 組込みOS自作入門”のステップ9でトラブル -天気晴朗ナレドモ浪高シ-
プログラム転送のUSBシリアルとして、以下の商品を紹介してくれています。
ラトックシステム USB-Serial Converter REX-USB60F
ブログテーマ[組み込みOS]|embitのソフトな日常-または私は如何にして心配するのを止めてハードも学ぶようになったか
最新記事が2012/9なので、まさに今挑戦中のblogのようです。各記事は短いけど、はまったところと解決が簡潔に載っているので参考になりそうな感じ。
読書メモ/「12ステップで作る組込みOS自作入門」 – Glamenv-Septzen.net
書評です。書籍中でシリアルでのプログラム転送で上手くいかない場合があるとの注意書きが有るのですが、動作確認が取れている232cボードが紹介されています。
CuBeatSystems: XMODEM for KOZOS (12ステップで作る 組込みOS自作入門 KOZOS用ユティリティ kz_xmodem)
ブートローダ書き込み用のツールを開発&公開しています。
KOZOS友の会
12ステップ本もくもく会おつかれさまでした|KOZOSのブログ
第2回12ステップ本もくもく会おつかれさまでした|KOZOSのブログ
12ステップ組込みOS自作本の読書会をされいたようです。タイトルを「12ステップ組込みOS自作本」と略してるのだけど、この略称がスタンダードなんだろうか…
http://toragi.cqpub.co.jp/Portals/0/support/2010/H8/mihon/191_197_%2822%29.pdf
ルネサス提供のH8向けIDEであるHEWで、gccを使うための情報
みんなコマンドラインでgccなので、HEWで試してみたいのだけど、オブジェクトサイズの制限(128KB)に掛かるか、現段階では判断つかない。 あと、評価版のDLにMY RENESASというサービスのIDを作る必要が有るのも面倒だ…
12ステップで作る組込みOS自作入門
コメントを残す