
No.1ベストアンサー
- 回答日時:
私はそのようなものを作ったことがありませんが、技術的には可能だと思います。
マイコン用のOSは関係ありません。まず、H8マイコンの内蔵FlashROM領域を「書き変え対象領域」と「書き変え禁止領域」に分けます。そして、書き変え対象領域には通常のプログラムを配置し、書き変え禁止領域には「ファームを更新する処理を行うプログラム」(ブートローダー)を配置します。さらに、H8のI/Oポートに通常のプログラムを起動するかブートローダを起動するか切り替えるためのスイッチを接続しておきます。
H8のプログラムでは、パワーオン・リセット後のスタートアップルーチンが終わったあたりで先ほどの切替スイッチを読んで、どちらのプログラムを立ち上げるか処理を切り替えます。そして、ブートローダではコンパクトフラッシュからデータを読み出して、先ほどの「書き変え対象領域」を書き換える処理を行います。H8のプログラムでH8の内蔵FlashROMを書き換える方法はH8のハードウェアマニュアルに書いてありますからそちらを参照してください。
> 自分自身のファームウェアを更新し、その後自動起動する
そういう仕様でしたら、タクトスイッチのようなスイッチにして、押しっぱなしでH8を起動したらブートモードで立ち上がるようにしておき、起動したらスイッチから手を離して、FlashROM書き換え後はファーム内でソフトウェアリセットをかければできそうですね。
あとで更新したプログラムのサイズがどんどん大きくなっていくことを考えると、「書き変え禁止領域」を前に持ってきて、「書き変え対象領域」を後に配置した方が良いんじゃないかと思います。
Interest様、早速のご回答ありがとうございます。
なるほど、ブートローダー方式を使って、ファームウェアを書き換えれば良いわけですね。
ちなみにこの辺りの内容は、C言語でも書けるのでしょうか?アセンブラになるのでしょうか?(あまり知らない・・・)
ちなみに、ホスト(上位)からのコマンド(更新指令)より、変更するなどの仕様の場合は、
1、ファームウェア起動
2、更新コマンド受信
3、ROMに更新フラグなどをセット
4、ソフトウェアリセット
5、更新フラグがセットされている為、更新プログラム起動
6、更新後、更新フラグをリセットし、ソフトウェアリセット
7,ファームウェア起動
で、可能でしょうか?
以上、よろしくお願いします。
No.3
- 回答日時:
>ブートローダについて、あまりよく知らないのですが調べてみます。
>ルネサスのホームページにもこのような情報は、あるのでしょうか?
ブートローダは単なるプログラムです。ブートローダについてワザワザ記載することでは無いのでルネサスのホームページには何もないかも知れません(調べてません)。
>FATファイルシステムの論理層なのでハード層は自分で実装するのですか?
>デバイスドライバ部は、FATファイルシステムを購入すれば某かのサンプルは手に入りそうです。
>zwiさんは、FATファイルシステムを利用せずに自力で実装されたのでしょうか?
OSを使っていなかったので全部自分で書きました。
FATも別に難しい構造ではないです。
>Windowsアプリのように、コピーなどコマンド一発でで可能なのでしょうか?
そもそもITRONなどのOSにシェルは無いのでコマンド一発の意味が分かりません。LinuxOSでも使えば別ですが。
コンパクトフラッシュの内容を読んで自分自身のROMを書き換えたいんですよね?なら自分でプルグラムを書くことになると思います。
>起動時に、起動するプログラムを選定する必要がありそうですから、先頭アドレスの指定などが、必要そうなのですが、可能なのでしょうか?
そちらの書き込みから通常はROMのファームからの起動で、コンパクトフラッシュの情報はファームの書き換え用だと思ったんですが違うんですか?
なんにしても、H8のフラッシュROMは100回程度しか書き換えできませんのでむやみに書き換えるものではありません。ファームのバグ時の更新用と考えてください。
もし、ファームを常にコンパクトフラッシュ上に置いて置いて、それを選択して起動したいならH8のフラッシュROM上にあるべきなのはブートローダだけです。
>何か勘違いしてますでしょうか?
少なくとも今の知識レベルでファーム更新方式の設計をすべきでは無いです。とりあえずマイコンを手に入れて、ブートローダやファームの更新方法、コンパクトフラッシュの扱いなどを学んでください。
Interestさんへのお礼で書かれているファームの更新の流れも無駄があります。
zwiさんご回答ありがとうございます。
>FATも別に難しい構造ではないです。
自分でも調べてみます。
>そちらの書き込みから通常はROMのファームからの起動で、コンパクトフラッシュの情報はファームの書き換え用だと思ったんですが違うんですか?
説明が悪くて、すみません。その通りです。
もう少し、勉強します。情報ありがとうございました。
No.2
- 回答日時:
SHマイコンでフラッシュの読み書きしたことがありますが、特別なことはありませんよ。
手順に従ってIOポートからデータを送受信するだけです。フラッシュからブートするにはブートローダが必要です。自分で書くかほかの人が書いたものを使います。
>同じ基板上のコンパクトフラッシュに保存されている最新ファームウェアを取得し、自分自身のファームウェアを更新し、その後自動起動するというような事は、できますでしょうか?
全然問題ないです。
と言うかマイコンでは、自分で書けばなんとでも出来ますよ。
>コンパクトフラッシュへのアクセスは、FATファイルシステムを使えば何とかなると思うのですが
FATファイルシステムの論理層なのでハード層は自分で実装するのですか?
>自分自身のファームウェアを書き換える方法がまったくわかりません。
自分自身のファームも単なるファイルです。なのでFATシステムの作法でファイルを書き換えるだけです。
zwiさん、早速のご回答ありがとうございます。
ブートローダについて、あまりよく知らないのですが調べてみます。
ルネサスのホームページにもこのような情報は、あるのでしょうか?
>FATファイルシステムの論理層なのでハード層は自分で実装するのですか?
デバイスドライバ部は、FATファイルシステムを購入すれば某かのサンプルは手に入りそうです。
zwiさんは、FATファイルシステムを利用せずに自力で実装されたのでしょうか?
>自分自身のファームも単なるファイルです。なのでFATシステムの作法でファイルを書き換えるだけです。
Windowsアプリのように、コピーなどコマンド一発でで可能なのでしょうか?
起動時に、起動するプログラムを選定する必要がありそうですから、先頭アドレスの指定などが、必要そうなのですが、可能なのでしょうか?
何か勘違いしてますでしょうか?
以上、お手数をお掛けしますが、ご回答頂けますと幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iPhone(アイフォーン) iPhonexriOS14にしてパソコンでios15,6の最新ファームウェアをダウンロードしてダウン 3 2023/06/30 19:55
- ノートパソコン Windows10(?).pcを修復できませんでした の無限ループ PC無知で、アドバイスお願い致し 5 2022/06/26 16:24
- ルーター・ネットワーク機器 WiFiルーターの5GHz帯の通信が途切れる(DFSではない) 3 2023/02/04 17:22
- Mac OS Parallels Desktop for Mac 2 2023/06/22 04:32
- CPU・メモリ・マザーボード 自作PCです。中古パーツです。cpuを換えると起動しません。 7 2022/11/11 07:46
- Mac OS mac使いの無線事情 3 2023/05/26 02:30
- Android(アンドロイド) [Android]Googleフォトが端末容量圧迫しています。内部ストレージを開けたい。 2 2022/03/30 10:00
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
Process.Startで起動したアプリ...
-
VB6.0からエクセルを起動
-
WinSCPで画像のように puttyを...
-
VBSで起動したアプリが前面表示...
-
VBで実行中のEXEファイルの情報...
-
アウトルックが起動しているか...
-
Javaの起動について(他にやる...
-
EXCEL VBAから他アプリケーショ...
-
Windows上のプログラム。「予め...
-
別アプリの起動、終了について
-
二重起動禁止にする理由とは
-
意味不明の実行時エラーで困っ...
-
印刷ダイアログを表示させたくない
-
vba 時間の引き算 例えば 15:00...
-
Designer.vbは直接コードをいじ...
-
VBAでArrayListを使う為の「msc...
-
印刷ダイアログを表示させない方法
-
「読み込み違反」が起きたとき...
-
Visual Studio 「AnyCpu」について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでOutlookを終了させたい Ex...
-
アウトルックが起動しているか...
-
Process.Startで起動したアプリ...
-
VBで実行中のEXEファイルの情報...
-
Windows上のプログラム。「予め...
-
キー操作 (WSH:コピー&ペー...
-
exeファイルを実行するとすぐに...
-
VBSで起動したアプリが前面表示...
-
EXCEL VBAから他アプリケーショ...
-
VBSから別のVBS起動するとき変...
-
VB6で呼び出し元の情報を取得す...
-
フォームの最前面が効かない
-
gccプログラムで複数の実行ファ...
-
ウィンドウを終了させたい・・・
-
C# 他のアプリケーションを優先...
-
MSDOS(バッチファイル)でプロセ...
-
64bitで作ったEXEを32bitで起動...
-
VBAでSeleniumからChromeを起動...
-
VB6.0からエクセルを起動
-
VBSでExcelのUserFormをエクス...
おすすめ情報