今回は5thステップになります。
5thの概要は以下の通り。
- 実行形式ファイルのフォーマット解析
- 論理回路の説明
■実行形式ファイルの解析
前回の4thステップでファイル受信を実装しましたが、いよいよ受信したファイルをRAMに展開し、実行できる仕組みを作っていくことになります。
5thステップでは受信した実行形式(ELF)ファイルを解析するところまで行います。
解析といってもバイナリのフォーマットに従って構造体を定義し、その内容を構造体経由で読みだすだけですので、内容的には全然難しくないです。
こんな感じであっさりできました。
実行ファイルをRAMに展開する際にはプログラムヘッダの内容を使うので、その情報のみを表示してます。
上がマイコンでの実行結果です。改行コードを入れ忘れたのでみにくくなってますが、下のreadelfコマンドでのプログラムヘッダの内容と一致しているので、問題なく動作しているようです。
■論理回路
本書では、5thステップでおまけ?で論理回路の説明が入ってました。論理回路とCPUやメモリとの関係は本ブログで何度も紹介してますが「CPUの創りかた」を読むのをお勧めしておきます。
次の6thステップでいよいよブートローダーが出来上がるようです。ソースコードの修正ごとにディップスイッチの変更、マイコンのシャットダウンは面倒なので、気兼ねなくソースコード修正ができるようになるのはありがたいですね。