• ベストアンサー

H8マイコンで、ファームウェアの更新

H8マイコンを使い(シリーズの選定はまだです。)、同じ基板上のコンパクトフラッシュに保存されている最新ファームウェアを取得し、自分自身のファームウェアを更新し、その後自動起動するというような事は、できますでしょうか? コンパクトフラッシュへのアクセスは、FATファイルシステムを使えば何とかなると思うのですが、自分自身のファームウェアを書き換える方法がまったくわかりません。 ITRONなどのOSをつめば、可能でしょうか? アドバイスをよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Interest
  • ベストアンサー率31% (207/659)
回答No.1

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

tad_
質問者

お礼

Interest様、早速のご回答ありがとうございます。 なるほど、ブートローダー方式を使って、ファームウェアを書き換えれば良いわけですね。 ちなみにこの辺りの内容は、C言語でも書けるのでしょうか?アセンブラになるのでしょうか?(あまり知らない・・・) ちなみに、ホスト(上位)からのコマンド(更新指令)より、変更するなどの仕様の場合は、 1、ファームウェア起動 2、更新コマンド受信 3、ROMに更新フラグなどをセット 4、ソフトウェアリセット 5、更新フラグがセットされている為、更新プログラム起動 6、更新後、更新フラグをリセットし、ソフトウェアリセット 7,ファームウェア起動 で、可能でしょうか? 以上、よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

>ブートローダについて、あまりよく知らないのですが調べてみます。 >ルネサスのホームページにもこのような情報は、あるのでしょうか? ブートローダは単なるプログラムです。ブートローダについてワザワザ記載することでは無いのでルネサスのホームページには何もないかも知れません(調べてません)。 >FATファイルシステムの論理層なのでハード層は自分で実装するのですか? >デバイスドライバ部は、FATファイルシステムを購入すれば某かのサンプルは手に入りそうです。 >zwiさんは、FATファイルシステムを利用せずに自力で実装されたのでしょうか? OSを使っていなかったので全部自分で書きました。 FATも別に難しい構造ではないです。 >Windowsアプリのように、コピーなどコマンド一発でで可能なのでしょうか? そもそもITRONなどのOSにシェルは無いのでコマンド一発の意味が分かりません。LinuxOSでも使えば別ですが。 コンパクトフラッシュの内容を読んで自分自身のROMを書き換えたいんですよね?なら自分でプルグラムを書くことになると思います。 >起動時に、起動するプログラムを選定する必要がありそうですから、先頭アドレスの指定などが、必要そうなのですが、可能なのでしょうか? そちらの書き込みから通常はROMのファームからの起動で、コンパクトフラッシュの情報はファームの書き換え用だと思ったんですが違うんですか? なんにしても、H8のフラッシュROMは100回程度しか書き換えできませんのでむやみに書き換えるものではありません。ファームのバグ時の更新用と考えてください。 もし、ファームを常にコンパクトフラッシュ上に置いて置いて、それを選択して起動したいならH8のフラッシュROM上にあるべきなのはブートローダだけです。 >何か勘違いしてますでしょうか? 少なくとも今の知識レベルでファーム更新方式の設計をすべきでは無いです。とりあえずマイコンを手に入れて、ブートローダやファームの更新方法、コンパクトフラッシュの扱いなどを学んでください。 Interestさんへのお礼で書かれているファームの更新の流れも無駄があります。

tad_
質問者

お礼

zwiさんご回答ありがとうございます。 >FATも別に難しい構造ではないです。 自分でも調べてみます。 >そちらの書き込みから通常はROMのファームからの起動で、コンパクトフラッシュの情報はファームの書き換え用だと思ったんですが違うんですか? 説明が悪くて、すみません。その通りです。 もう少し、勉強します。情報ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • zwi
  • ベストアンサー率56% (730/1282)
回答No.2

SHマイコンでフラッシュの読み書きしたことがありますが、特別なことはありませんよ。手順に従ってIOポートからデータを送受信するだけです。 フラッシュからブートするにはブートローダが必要です。自分で書くかほかの人が書いたものを使います。 >同じ基板上のコンパクトフラッシュに保存されている最新ファームウェアを取得し、自分自身のファームウェアを更新し、その後自動起動するというような事は、できますでしょうか? 全然問題ないです。 と言うかマイコンでは、自分で書けばなんとでも出来ますよ。 >コンパクトフラッシュへのアクセスは、FATファイルシステムを使えば何とかなると思うのですが FATファイルシステムの論理層なのでハード層は自分で実装するのですか? >自分自身のファームウェアを書き換える方法がまったくわかりません。 自分自身のファームも単なるファイルです。なのでFATシステムの作法でファイルを書き換えるだけです。

tad_
質問者

お礼

zwiさん、早速のご回答ありがとうございます。 ブートローダについて、あまりよく知らないのですが調べてみます。 ルネサスのホームページにもこのような情報は、あるのでしょうか? >FATファイルシステムの論理層なのでハード層は自分で実装するのですか? デバイスドライバ部は、FATファイルシステムを購入すれば某かのサンプルは手に入りそうです。 zwiさんは、FATファイルシステムを利用せずに自力で実装されたのでしょうか? >自分自身のファームも単なるファイルです。なのでFATシステムの作法でファイルを書き換えるだけです。 Windowsアプリのように、コピーなどコマンド一発でで可能なのでしょうか? 起動時に、起動するプログラムを選定する必要がありそうですから、先頭アドレスの指定などが、必要そうなのですが、可能なのでしょうか? 何か勘違いしてますでしょうか? 以上、お手数をお掛けしますが、ご回答頂けますと幸いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • マイコンの中のEEPROMについて

    マイコンの中のEEPROMについて マイコンの中(例えばSHシリーズ)にフラッシュROM領域とEEPROM領域があります。 これらは物理的にというか原理的には同じものなのでしょうか。 例えば、両方ともフラッシュメモリーと同じ構造で、アクセス方法(プロトコル?)が違うのでしょうか。 それとも、物理的・原理的に違う仕組みなのでしょうか。 マイコンの外付けのEEPROMとの違いは何がありますでしょうか。 よろしくお願いします。 追伸 もっと適切なカテゴリーがありましたら誘導していただければと思います。

  • galaxy sファームウェアアップグレード失敗

    galaxy sのファームウェアが最新の出ていると聞いてアップグレードしようとしたら、バックアップのあとのさぁいざファームウェアアップグレードをしようという画面に行くと「SC-02Bの管理者からの許可の取得に失敗しました。プログラムは閉じられます」と出てきて更新できません。 ネットで自分で解決策を調べてみましたが、どうにも私と同じことになっている人が見かけられなかったので解決策が思いつきません。自分でも調べてみますが、誰か解決策を知っている方がいたらお願いします。

  • [EW-M571Tのファームウェアの情報

    プリンタ本体の画面に「新しいファームウェア」がある、と表示されます。 ブラウザでLAN経由で本体にアクセス。ファームウェアアップデートには「現在のバージョン07.53.LW24I7」。 クリックして新しいファームウェアの「確認」を行うと Firmware : 07.53.LW22I8 最新のファームウェアです。 と表示される。 2018/09/15 10:33現在、エプソンのファームウェアダウンロード更新情報https://www.epson.jp/dl_soft/readme/26307.htmでは 07.53.LW24I7が最新で、07.53.LW22I8は記述されていない。 最新ファームウェア、本当はどれですか? 何故、混乱した情報になるのでしょうか? 正しい情報をいつでも得られるようにしてください。 ※OKWAVEより補足:「EPSON社製品」についての質問です。

  • OSとファームウェアについて教えてください。

    ハードウェア設計者(OS搭載未経験)ですがOSとファームウェアとの違いについて教えていただけないでしょうか?(ソフトについては詳しいことは分かりません) (他の投稿を拝見しましたがパソコンを例にあげて説明されており、理解ができなかったので今回は自分の状況でご説明いたします。) 汎用CPU(SH4)ボード(周辺:SDRAM、フラッシュメモリ、USB、コンパクトフラッシュ)を設計いたしました。このボードは現在、SHの外部バス(アドレス、データ、コントロール)を外部ボードに接続して、外部ボードをコントロールしております。 そこで、ソフト設計者へC言語を使用して、周辺デバイス(CPUボード付属の周辺+外部ボード)をコントロールするソフトを製作してもらいましたが、すこし疑問が生まれております。 【質問】 A.下記1.項のソフトはデバイスドライバと言われる物で、ファーム   ウェアに属するものなのでしょうか? B.下記1.項のドライバを例えば、FPGAで構成してCPUからは   ドライバの設定をしなくてもよく、あたかもSRAM接続のよう   にI/F回路が構築できた場合、FPGAの内部回路がデバイス   ドライバ(ファームウェア?)と解釈されるのでしょうか? C.OSを搭載するという事は、ファームウェアと同様にCPUの開   始アドレスにOSを割り当てておく事になると思うのですが、O   Sをコンパクトフラッシュから起動させたい場合、ハード的に電   源投入後フラッシュメモリ起動であれば、フラッシュメモリにそ   の旨のソフト(起動プログラム?)を組み込む必要があるのでし   ょうか? D.OSを搭載して、今回のように外部ボードをコントロールする   場合、どういった利点が見出せるのでしょうか?   (現在はリレーのONしている時間の設定は、オシロを見ながら    NOP命令?を入れたりして時間調整しております。) E.OSを搭載して、ソフト設計すると言うことは周辺デバイスのド   ライバのファームウェアは準備されていて、単純な命令でレジス   タ設定を意識せずに使用できるのでしょうか? F.あらゆるデバイスドライバを構築して、汎用性のあるファームウ   ェアを構成すれば、それも一つのOSと見なせるのでしょうか? 【ソフト構成内容】 1.例えばUSBデバイスを使用する場合、USBコントロールデバ   イスの設定(レジスタ設定、データ送受信)するソフト。 2.1.項で作成したソフトを活用して、USBポートを使用して   外部に接続しているボードのリレーをコントロールするソフト。 少し、技術者らしくない素人的な考え方ですが、なにとぞ教えてくださいませ。★説明が解りにくく大変申し訳ありません。

  • Adobe Flash Playerの更新

    Adobe Flash Playerを最新版に更新したいのですが、次のプログラムを終了してから続行してください。という画面で「kxetray」と出ます。 タスクマネージャー画面の[プロセス]タブで「kxetray.exe」を探しプロセスの終了をクリックしたのですが、プロセスを終了できません(操作を完了できませんでした。アクセスが拒否されました。)という画面が出て終了できません。 分かる方いらっしゃいましたら、よろしくお願いいたします。

  • SATA⇔IDE 変換について

    80GBのIDEディスクがあり 一度win7のバックアップを記録したのですが その後更新に失敗したか?して放置していたのですが SATA⇔IDE変換基板があるのを知り入手してイタズラ してるんですが データバックアップに使おうとして書き込みを始めたら 止まってしまって、そのディスクは「はもはやアクセスできません」 みたいなメッセージが出て止まってしまいます それで質問なんですが 不具合が出るのは、 1.入手した基板がチャチで使い物にならないのか? 2.バックアップ用に使った時の残滓みたいなものが 悪さをしている(フォーマットしなおせばよくなる)のか? 3.そもそもSATAからFAT形式のディスクを扱えるのか? どんなものでしょう?

  • ウィルスバスター2007に更新?後、立ち上げが遅い気がします。

    パソコン初心者です。 購入時にウィルスバスター2006を入れてもらい、セットアップも専門も方にして頂きました。 最近になり「期限切れ」が近いので、最新版に更新しないと駄目と思い 2007に自分で更新したところパソコンの立ち上がりが遅くなったようです…。 どうしたらいいんでしょうか?? (更新したときに2006のときにはアクセスのブロックがかかってたサイトにも2007ではつながってしまうため、自分で設定をさわりました…それが原因ですか) よろしくお願いします!!!

  • FIrefoxとFlash Player

    最新のFlash Playerを入れたらFirefoxのFlashが再生できなくなりました ひとつ前のバージョンをいれるとInternet Explorerの方がFlashを再生できなくなります 最新のflash Playerをいれるとfirefoxのflashが再生できなくなるのは自分だけでしょうか? 次の更新をまたなきゃいけないのでしょうか? 回答よろしくお願いします

  • ページの更新時間を予約して自動で更新するシステム

    ウェブサイト内のページの更新時間を事前に予約しておき、時間になったら更新が自動で行なわれるシステムを探しています。サーバーに専用のツールを置けばよいのか、PHPやPerlといったサーバーサイド・プログラムで実現できるのもなのか、情報提供をお願いします。 自分で思いついた方法の1つとして、PHPでXMLやDBから更新時間のデータを取得し、現在時刻がそれより進んでいたらデータのアップロードを実行するというシステムがあります。例えばある時刻にページAとそこへのリンクを張ったindex.phpファイルを更新するというシステムをindex.php自身(まだリンクはなし)に組んでおき、アクセスされるごとに予約した時刻と現在時刻を比較、現在時刻の方が進んでいれば2つのデータをアップロードが実行。ページAがアップロードされ、index.php自身には新しくページAへのリンクが張られるというものです。しかしこれはindex.phpがアクセスされた時点でプログラムが作動するので、例えばindex.phpが1週間アクセスされなければページAはアップロードされません。実用的な意味ではindex.phpからしかページAへリンクを張らない場合、文句を言われることは無いと思いますが結局のところ完全なシステムではありません。指定した時刻になると確実にプログラムが実行されるシステムを組みたいのです。

  • IE表示後、F5キー押下で最新のFlashを表示する方法

    いつもお世話になっております。 本カテゴリーで質問をするのは間違っているかも知れませんが知っている方が居ましたら、ご教授下さい。 Flashで掲示版もどきを作成しました。 掲示内容がいつ更新されるかわからないため、IEのF5キーを押下し、最新の情報に更新してみました。 しかし、Temporary Internet Files配下に作成されたFlashを同じように表示してしまいます。 Temporary Internet Filesのファイルを削除するとF5キー押下で最新の情報が取得できます。 F5キー押下で常に最新のFlashを確認する方法が有りましたらご教授願います。 宜しくお願いします。

    • ベストアンサー
    • Flash