今まではプログラム修正の度にフラッシュROMを書き換えてたが、4thステップの目的として、今後ブートローダを作ってやれば、シリアル経由で更新版プログラムを転送できるようになるため、フラッシュROM書き換え回数が減らせるというもの。目的のブートローダは以下の機能を持つ。シリアル経由でOS実行形式をダウンロードし、RAMへ一時保存。保存した実行形式ファイルを適切にRAMへ展開。RAM上に展開したOSを実行。シリアルポートで通信する転送プロトコルはXMODEMを使うため、XMODEM機能の実装、他修正してmake。書籍通りに写しただけだが、プログラム起動してTeraTerm上にプロンプト表示をさせて、loadコマンドでファイル転送開始まではうまく行ったのだが、ファイル転送中に長時間固まる。本書にも時間かかる旨説明があったが、ファイル転送が終わったと思われるようにTeraTermのXMODEMウィンドウが閉じても、ターミナル上にはプロンプトが返って来なくて、そのまま固まってしまった。本書と挙動が違うので、どこかミスってるのだろう。(2012.12.1追記)http://kozos.jp/kozos/osbook/osbook_03/04/bootload/サポートWebから正しいソースを入手して比較した結果、ミスってる箇所発見。*/代入先はblock_numなのに、block_numberになってたからだ。File選択して開始。した時に、そのままフリーズしてしまっていた。上記の通り修正して実行してみたら、成功したようだ。ここで、上記のXMODEM送信手順でdefine.hを選択し、転送してる。1akzload>(2014.1.4追記)・今回、VMware上のCentOSでやってるので、本書p142に従い、まずはlrzszをインストール。思ったら、既にインストールされてた。・以下の手順でファイル転送をやってみて成功した。リセットボタンをしっかり押してからやると成功する。フルスクリーンでminicom起動。Ctrl=OFFその後、Exitでminicomは終了しないが設定を終了して待ち受けモードへ。それから動作モード(ON,OFF,ON,OFF)にしてリセットボタン。これで画面上にプロンプト「kzload>」が出る。Ctrlは不要)こうする事で、ファイル転送メニュー画面が出る。転送モードでxmodemを選択。ファイル選択画面ではdefaultが/rootディレクトリになっている。左キーを押して、Prevを選択する事で、実行フォルダに切り替わる。上下キーでdefines.hを選択して、左右キーでOkayを選択し、Enterを押す。ファイル名が表示されてなかったら、手打ちでdefines.hと入力してEnter。Completeと表示される。continueと出るが、Ctrl-Cで終了させる。