私はそのようなものを作ったことがありませんが、技術的には可能だと思います。マイコン用のOSは関係ありません。
まず、H8マイコンの内蔵FlashROM領域を「書き変え対象領域」と「書き変え禁止領域」に分けます。そして、書き変え対象領域には通常のプログラムを配置し、書き変え禁止領域には「ファームを更新する処理を行うプログラム」(ブートローダー)を配置します。さらに、H8のI/Oポートに通常のプログラムを起動するかブートローダを起動するか切り替えるためのスイッチを接続しておきます。
H8のプログラムでは、パワーオン・リセット後のスタートアップルーチンが終わったあたりで先ほどの切替スイッチを読んで、どちらのプログラムを立ち上げるか処理を切り替えます。そして、ブートローダではコンパクトフラッシュからデータを読み出して、先ほどの「書き変え対象領域」を書き換える処理を行います。H8のプログラムでH8の内蔵FlashROMを書き換える方法はH8のハードウェアマニュアルに書いてありますからそちらを参照してください。
> 自分自身のファームウェアを更新し、その後自動起動する
そういう仕様でしたら、タクトスイッチのようなスイッチにして、押しっぱなしでH8を起動したらブートモードで立ち上がるようにしておき、起動したらスイッチから手を離して、FlashROM書き換え後はファーム内でソフトウェアリセットをかければできそうですね。
あとで更新したプログラムのサイズがどんどん大きくなっていくことを考えると、「書き変え禁止領域」を前に持ってきて、「書き変え対象領域」を後に配置した方が良いんじゃないかと思います。
お礼
Interest様、早速のご回答ありがとうございます。 なるほど、ブートローダー方式を使って、ファームウェアを書き換えれば良いわけですね。 ちなみにこの辺りの内容は、C言語でも書けるのでしょうか?アセンブラになるのでしょうか?(あまり知らない・・・) ちなみに、ホスト(上位)からのコマンド(更新指令)より、変更するなどの仕様の場合は、 1、ファームウェア起動 2、更新コマンド受信 3、ROMに更新フラグなどをセット 4、ソフトウェアリセット 5、更新フラグがセットされている為、更新プログラム起動 6、更新後、更新フラグをリセットし、ソフトウェアリセット 7,ファームウェア起動 で、可能でしょうか? 以上、よろしくお願いします。