H8マイコンを使い(シリーズの選定はまだです。)、同じ基板上のコンパクトフラッシュに保存されている最新ファームウェアを取得し、自分自身のファームウェアを更新し、その後自動起動するというような事は、できますでしょうか?

コンパクトフラッシュへのアクセスは、FATファイルシステムを使えば何とかなると思うのですが、自分自身のファームウェアを書き換える方法がまったくわかりません。

ITRONなどのOSをつめば、可能でしょうか?

アドバイスをよろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

私はそのようなものを作ったことがありませんが、技術的には可能だと思います。

マイコン用のOSは関係ありません。

まず、H8マイコンの内蔵FlashROM領域を「書き変え対象領域」と「書き変え禁止領域」に分けます。そして、書き変え対象領域には通常のプログラムを配置し、書き変え禁止領域には「ファームを更新する処理を行うプログラム」(ブートローダー)を配置します。さらに、H8のI/Oポートに通常のプログラムを起動するかブートローダを起動するか切り替えるためのスイッチを接続しておきます。

H8のプログラムでは、パワーオン・リセット後のスタートアップルーチンが終わったあたりで先ほどの切替スイッチを読んで、どちらのプログラムを立ち上げるか処理を切り替えます。そして、ブートローダではコンパクトフラッシュからデータを読み出して、先ほどの「書き変え対象領域」を書き換える処理を行います。H8のプログラムでH8の内蔵FlashROMを書き換える方法はH8のハードウェアマニュアルに書いてありますからそちらを参照してください。

> 自分自身のファームウェアを更新し、その後自動起動する

そういう仕様でしたら、タクトスイッチのようなスイッチにして、押しっぱなしでH8を起動したらブートモードで立ち上がるようにしておき、起動したらスイッチから手を離して、FlashROM書き換え後はファーム内でソフトウェアリセットをかければできそうですね。

あとで更新したプログラムのサイズがどんどん大きくなっていくことを考えると、「書き変え禁止領域」を前に持ってきて、「書き変え対象領域」を後に配置した方が良いんじゃないかと思います。
    • good
    • 0
この回答へのお礼

Interest様、早速のご回答ありがとうございます。

なるほど、ブートローダー方式を使って、ファームウェアを書き換えれば良いわけですね。
ちなみにこの辺りの内容は、C言語でも書けるのでしょうか?アセンブラになるのでしょうか?(あまり知らない・・・)

ちなみに、ホスト(上位)からのコマンド(更新指令)より、変更するなどの仕様の場合は、
1、ファームウェア起動
2、更新コマンド受信
3、ROMに更新フラグなどをセット
4、ソフトウェアリセット
5、更新フラグがセットされている為、更新プログラム起動
6、更新後、更新フラグをリセットし、ソフトウェアリセット
7,ファームウェア起動
で、可能でしょうか?

以上、よろしくお願いします。

お礼日時:2009/05/26 10:51

>ブートローダについて、あまりよく知らないのですが調べてみます。


>ルネサスのホームページにもこのような情報は、あるのでしょうか?

ブートローダは単なるプログラムです。ブートローダについてワザワザ記載することでは無いのでルネサスのホームページには何もないかも知れません(調べてません)。

>FATファイルシステムの論理層なのでハード層は自分で実装するのですか?
>デバイスドライバ部は、FATファイルシステムを購入すれば某かのサンプルは手に入りそうです。
>zwiさんは、FATファイルシステムを利用せずに自力で実装されたのでしょうか?

OSを使っていなかったので全部自分で書きました。
FATも別に難しい構造ではないです。

>Windowsアプリのように、コピーなどコマンド一発でで可能なのでしょうか?

そもそもITRONなどのOSにシェルは無いのでコマンド一発の意味が分かりません。LinuxOSでも使えば別ですが。
コンパクトフラッシュの内容を読んで自分自身のROMを書き換えたいんですよね?なら自分でプルグラムを書くことになると思います。

>起動時に、起動するプログラムを選定する必要がありそうですから、先頭アドレスの指定などが、必要そうなのですが、可能なのでしょうか?

そちらの書き込みから通常はROMのファームからの起動で、コンパクトフラッシュの情報はファームの書き換え用だと思ったんですが違うんですか?
なんにしても、H8のフラッシュROMは100回程度しか書き換えできませんのでむやみに書き換えるものではありません。ファームのバグ時の更新用と考えてください。
もし、ファームを常にコンパクトフラッシュ上に置いて置いて、それを選択して起動したいならH8のフラッシュROM上にあるべきなのはブートローダだけです。

>何か勘違いしてますでしょうか?

少なくとも今の知識レベルでファーム更新方式の設計をすべきでは無いです。とりあえずマイコンを手に入れて、ブートローダやファームの更新方法、コンパクトフラッシュの扱いなどを学んでください。
Interestさんへのお礼で書かれているファームの更新の流れも無駄があります。
    • good
    • 0
この回答へのお礼

zwiさんご回答ありがとうございます。

>FATも別に難しい構造ではないです。
自分でも調べてみます。

>そちらの書き込みから通常はROMのファームからの起動で、コンパクトフラッシュの情報はファームの書き換え用だと思ったんですが違うんですか?
説明が悪くて、すみません。その通りです。

もう少し、勉強します。情報ありがとうございました。

お礼日時:2009/05/26 14:27

SHマイコンでフラッシュの読み書きしたことがありますが、特別なことはありませんよ。

手順に従ってIOポートからデータを送受信するだけです。
フラッシュからブートするにはブートローダが必要です。自分で書くかほかの人が書いたものを使います。

>同じ基板上のコンパクトフラッシュに保存されている最新ファームウェアを取得し、自分自身のファームウェアを更新し、その後自動起動するというような事は、できますでしょうか?

全然問題ないです。
と言うかマイコンでは、自分で書けばなんとでも出来ますよ。

>コンパクトフラッシュへのアクセスは、FATファイルシステムを使えば何とかなると思うのですが
FATファイルシステムの論理層なのでハード層は自分で実装するのですか?

>自分自身のファームウェアを書き換える方法がまったくわかりません。
自分自身のファームも単なるファイルです。なのでFATシステムの作法でファイルを書き換えるだけです。
    • good
    • 0
この回答へのお礼

zwiさん、早速のご回答ありがとうございます。

ブートローダについて、あまりよく知らないのですが調べてみます。
ルネサスのホームページにもこのような情報は、あるのでしょうか?

>FATファイルシステムの論理層なのでハード層は自分で実装するのですか?
デバイスドライバ部は、FATファイルシステムを購入すれば某かのサンプルは手に入りそうです。
zwiさんは、FATファイルシステムを利用せずに自力で実装されたのでしょうか?

>自分自身のファームも単なるファイルです。なのでFATシステムの作法でファイルを書き換えるだけです。
Windowsアプリのように、コピーなどコマンド一発でで可能なのでしょうか?
起動時に、起動するプログラムを選定する必要がありそうですから、先頭アドレスの指定などが、必要そうなのですが、可能なのでしょうか?
何か勘違いしてますでしょうか?

以上、お手数をお掛けしますが、ご回答頂けますと幸いです。

お礼日時:2009/05/26 11:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「ファームウェア」と「組み込みOS」の違い

「ファームウェア」と「組み込みOS」という言葉の意味の違いが分かりません。
これらの意味は、例えば次のように示されています。

http://e-words.jp/w/E38395E382A1E383BCE383A0E382A6E382A7E382A2.html
http://e-words.jp/w/E7B584E381BFE8BEBCE381BFOS.html

上記URLを見ると、これらの言葉は同じようにも思えるし違うようにも思えます。
これらの言葉の意味の違いは何でしょうか。

Aベストアンサー

ファームウエアは、用語辞典にあるように、"firm"wareで、hardほどは硬くないけど、softほど軟らかくない、というのが語源です。
#4さんも書かれていますが、機器に組み込まれているソフトということで、"firmware"と"組み込みソフトウエア"は、ほぼ同意語です。

つまり、hardwareはそう簡単には設計変更できないが、softwareは容易に設計変更可能で、パソコンのようなコンピュータ上では入れ替えも容易です。

firmwareは、実装されるときはROMの形態なので、softwareほど入れ替えは容易ではないが、ROMチップを交換することで入れ替え可能になります。
ただ、1チップマイコンのように、Mask ROM内蔵の形だと、マイコンチップ自身を交換しなければなりません。
最近のように、Flash Memoryを使用していれば、道具と仕掛けさえあれば、オンボードでも書き換えられるようになりました。

firmwareに含まれる機能は、該当機器のハードウエア制御も、(必要であれば)通信もユーザーインターフェース(キー入力や音声出力、表示など)もすべて含まれます。


OSはOperating Systemの略で、システム全体の管理を行なうソフトウエアです。パソコンのWindowsが有名です。
このうち、機器に組み込まれるOSを組み込みOSと呼び、特徴は用語辞典に書いてあるとおりです。Windowsなどと比べると、贅肉を徹底的に落としてリアルタイム性やコンパクト化が図られています。

firmwareの中で、システムの管理を行なう部分が組み込みOSです。つまり、組み込みOSは、firmwareの一部ということになります。リソース(資源)を管理するということは、特定のハードウエアがリソースなら、そのハードウエアが含まれますし、CPUやメモリもリソースとして管理されます。

具体的に、firmwareのどの部分が組み込みOSかというと、そのOSの実装のされ方にもよりますので、実例を見てみるのがいいのではないでしょうか。
国内では、組み込みOS(RTOS)としてiTronが有名です。一度iTronを調べみるとよいと思います。マイコンメーカー各社が自社マイコン向けのiTronを開発しています。
また、特徴のひとつのリアルタイム性が強く要求されることが多いので、リアルタイムOS(RTOS)と呼ばれることも多いです。

なお、電卓やちょっとした家電品などは制御が軽いので、OSを使用していないことがほとんどです。

ファームウエアは、用語辞典にあるように、"firm"wareで、hardほどは硬くないけど、softほど軟らかくない、というのが語源です。
#4さんも書かれていますが、機器に組み込まれているソフトということで、"firmware"と"組み込みソフトウエア"は、ほぼ同意語です。

つまり、hardwareはそう簡単には設計変更できないが、softwareは容易に設計変更可能で、パソコンのようなコンピュータ上では入れ替えも容易です。

firmwareは、実装されるときはROMの形態なので、softwareほど入れ替えは容易ではないが、ROMチ...続きを読む

Qセマフォとmutexの違いは?

排他制御としてセマフォとmutexがありますが、
この二つの違いがよくわかりません。
自分で調べてみたところ、
・セマフォ…プロセス間排他制御。複数ロックがかけられる。
・mutex…スレッド間排他制御。ロックは一つだけ。

と言うような違いがあるようなのですが、これだけの差なんでしょうか?
(これだけの差、と言ってる時点で筋違いだったら申し訳ありません)
また、セマフォをスレッド間排他制御に用いたり、
mutexをプロセス間排他制御に用いることは可能なのでしょうか?
可能だとしたら、これらが2種類存在する理由も教えていただきたいです。

Aベストアンサー

> >一般論としては、Mutexは「カウントを1に限定した」特殊化したSemaphoreです。
> とのことですが、これはWin32以外の環境だと
> これ以上の違いはないと言うことでしょうか?

「一般論」と書いた意味を取り落とされているのではないかと思います。

「一般論としては〇〇」なのですから、「Win32以外の環境」も含めて「各論」では「必ずしも〇〇とは限らない」とご理解ください。

なお、ご指摘のとおり、あるリソースを排他的に利用するだけであればMutexを使用するかわりにカウントが1のSemaphoreを使用することができます。(特定の環境での、MutexとSemaphoreの環境依存の動作を除けば、ですが。)

ではなぜ2種類が用意されている(用意されている環境が存在する)のかといえば、リソースの排他的利用は非常によくあることなので、これに特化した機能を用意すればより良いであろう、というシステムデザイナの判断によるものと考えられます。

ここで言う「より良い」は、あるデザイナにとっては「便利性」、また別のデザイナにとっては「消費リソースが少ない」と、これまた考え方はいろいろでしょう。

> >一般論としては、Mutexは「カウントを1に限定した」特殊化したSemaphoreです。
> とのことですが、これはWin32以外の環境だと
> これ以上の違いはないと言うことでしょうか?

「一般論」と書いた意味を取り落とされているのではないかと思います。

「一般論としては〇〇」なのですから、「Win32以外の環境」も含めて「各論」では「必ずしも〇〇とは限らない」とご理解ください。

なお、ご指摘のとおり、あるリソースを排他的に利用するだけであればMutexを使用するかわりにカウントが1のSemaphore...続きを読む

QCOMポート通信をモニターしたい

現在、PCと組み込み系の端末との間でRS-232C通信をさせています。このRS-232C通信のTXとRXのデータのタイミングなどをモニターできるソフトはありませんでしょうか?

現在RS-232C通信をさせているのですが、組み込み系の端末側にはTCP-RS232C通信変換のモジュールを取り付けていて、PC側もTCP-RS232C変換させるソフトを使用しています。


TCP-RS232C通信変換のモジュールはWIZNET社製のWIZ110SRというのを使用しています。

PC側ではTCP-RS232C通信変換ソフトでWIZNET社製のWIZ VSPというソフトを使用して、TCPで受けたデータをRS-232Cに変換して受信プログラムソフトに転送しています。


このPC側の受信ソフトとTCPへ変換する間のCOMポートの通信をモニターできるようなソフトというものはありませんでしょうか?

どうぞ、ご教授頂きますようお願い致します。

Aベストアンサー

PC自体のCOMポート(USB-Serial変換でも)なら、ソフトでどうにかできる場合もあるでしょうが……

ご使用の機器の場合、PCからはネットワーク端末に見える…のではないでしょうか?
ドライバでCOMポートとして見えるのですか?
# 後者ならソフトで何とかできる…かも知れません。

こちらの組み込み系開発ではラインアイ社の機器を使用しています。
http://www.lineeye.co.jp/html/product_le2500.html
http://www.lineeye.co.jp/html/product_le3500.html
などですね。
http://www.lineeye.co.jp/html/product_LE-200PS.html
http://www.lineeye.co.jp/html/product_LE-150PS.html
でも用途によっては十分かも知れません。
# 組み込み開発に使うのであれば1台あった方が何かと便利です。
# それなりに高機能なので…値段も結構しますけどね。


人気Q&Aランキング

おすすめ情報