Hiroです。
以前、シリアルフラッシュからのブート起動が出来ないことを質問させていただきました。
その時点では解決したのですが、また問題が発生しましたので質問します。
ブートファイルを書き換えるとシリアルフラッシュからの起動ができなくなります。
ブートファイルはICEで書き込んでいます。
シリアル通信によるPC画面上での確認では、一切動いてない状態です(メッセージが一切出力されません)。
一度NORフラッシュから(BOOT_MODE0で)起動を掛けると、それ以降はシリアルフラッシュから(BOOT_MODE3で)
の起動が可能となります。
ブートファイルの書き換え時に環境設定を消去したのではないかと考えたのですが、
データは残っていますし、Kernaelイメージをシリアルフラッシュに書き込んでいるのですが
NORフラッシュ起動時にもKernelイメージをシリアルフラッシュから読み込んでいるので
環境設定は残っているようです。
NORフラッシュからの起動以降は、シリアルフラッシュからの起動が可能になることから
ブート処理の中で何かを設定することで起動可能になっていると思いますが、
ブートファイルの書き換えでその設定を壊すとも考えづらいと思います。
ブートファイル書き換え後に、シリアルフラッシュから(BOOT_MODE3で)起動させるには
何をすればよいかをお教えください。
以上
Hiro さん
> ブートファイルを書き換えるとシリアルフラッシュからの起動ができなくなります。> ブートファイルはICEで書き込んでいます。> シリアル通信によるPC画面上での確認では、一切動いてない状態です(メッセージが一切出力されません)。> 一度NORフラッシュから(BOOT_MODE0で)起動を掛けると、それ以降はシリアルフラッシュから(BOOT_MODE3で)> の起動が可能となります。
最初に何点か確認させてください。(a) u-boot のソースを変更していますか?(b) NORフラッシュ用、シリアルフラッシュ用 u-bootは、リリースノートの記載に従って それぞれ別に作成し、正しく書き込みましたか?(c) フラッシュ書き込み用の ICE は、何を使用していますか? J-LINK、PARTNER-JET、ULINK-Ⅱ?(d) フラッシュメモリを書き換えた場合は、必ずボードの電源を一旦、切り、(必要なら、 ディップスイッチの設定を変えて)電源を再投入していますか? 電源を入れたまま、リセットボタンで済ませていませんね?
もし、(d) の答えが No なら、(d) を実行してみると、どうなりますか?
> ブートファイルの書き換え時に環境設定を消去したのではないかと考えたのですが、> データは残っていますし、Kernaelイメージをシリアルフラッシュに書き込んでいるのですが> NORフラッシュ起動時にもKernelイメージをシリアルフラッシュから読み込んでいるので> 環境設定は残っているようです。
環境設定(u-boot の環境変数)は、関係ありません。仮に環境設定を消去したとしても、u-boot は、以前の質問に出てきた、 *** Warning - bad CRC, using default environmentというメッセージを出して、デフォルトの環境変数を使うだけです。
一応、間違いを指摘しておきますと、NORフラッシュ用の u-boot は、環境変数を NOR フラッシュに、シリアルフラッシュ用のu-boot は、環境変数をシリアルフラッシュに、それぞれ保存します。ですから、ブートファイルの書き換えで、シリアルフラッシュの環境変数を壊しても、NORフラッシュ用の u-boot は、影響を受けません。逆も同じです。
> NORフラッシュからの起動以降は、シリアルフラッシュからの起動が可能になることから> ブート処理の中で何かを設定することで起動可能になっていると思いますが、> ブートファイルの書き換えでその設定を壊すとも考えづらいと思います。> ブートファイル書き換え後に、シリアルフラッシュから(BOOT_MODE3で)起動させるには> 何をすればよいかをお教えください。
可能であれば、デバッガを接続し、(1) シリアルフラッシュを書き換えた後、一旦、GENMAI の電源を落とし、再投入する。# ICE は接続して、電源を入れたまま、GENMAI の電源のみ ON/OFF すること。# ICE からターゲットのリセットを要求された場合、リセットは実行して構わないが、# デバッガの初期処理(PARTNER-Jet の init など)は、実行しないこと。# もし、ICE がターゲット電源の ON/OFF に対応していなければ、電源の ON/OFF は、# スキップしても構いません。もし、上の内容が良く解らなければ、Hiro さんがしたことを# そのまま教えてください。(2) 0x18000000 番地にハードウェアブレークポイント(ソフトウェアブレークポイントは 不可)を設定し、ブートモード3で実行する。(3) ブレークせずに暴走したら、強制ブレークして、その時のレジスタの値を確認する。(4) 0x18000000 でブレークしたら、そこから継続実行する。(5) 十秒ほど実行し、暴走しているようなら、強制ブレークして、その時のレジスタの値を 確認する。(6) 暴走せず、u-boot が動作したら、(1) からの手順を数回、繰り返してみる。
確認するレジスタは、次のものです。 PC(r15)、LR(r14)、CPSR、SPSR