GENMAIボードでのブートについて2

Hiroです。

 

以前、シリアルフラッシュからのブート起動が出来ないことを質問させていただきました。

その時点では解決したのですが、また問題が発生しましたので質問します。

ブートファイルを書き換えるとシリアルフラッシュからの起動ができなくなります。

ブートファイルはICEで書き込んでいます。

シリアル通信によるPC画面上での確認では、一切動いてない状態です(メッセージが一切出力されません)。

一度NORフラッシュから(BOOT_MODE0で)起動を掛けると、それ以降はシリアルフラッシュから(BOOT_MODE3で)

の起動が可能となります。

ブートファイルの書き換え時に環境設定を消去したのではないかと考えたのですが、

データは残っていますし、Kernaelイメージをシリアルフラッシュに書き込んでいるのですが

NORフラッシュ起動時にもKernelイメージをシリアルフラッシュから読み込んでいるので

環境設定は残っているようです。

NORフラッシュからの起動以降は、シリアルフラッシュからの起動が可能になることから

ブート処理の中で何かを設定することで起動可能になっていると思いますが、

ブートファイルの書き換えでその設定を壊すとも考えづらいと思います。

ブートファイル書き換え後に、シリアルフラッシュから(BOOT_MODE3で)起動させるには

何をすればよいかをお教えください。

 

以上

Parents
  • 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

     

  • ご回答ありがとうございます。以下にご質問の回答をします。
    >(a) u-boot のソースを変更していますか?
     ソースの変更はしていないはずです。この1ヶ月ほど色々なことを試したので、どこかのファイルを
     変更した可能性もなくはないのですが、最初(1ヶ月ほど前)に投稿した時は少なくとも変更はしておりません。
    >(b) NORフラッシュ用、シリアルフラッシュ用 u-bootは、リリースノートの記載に従って
    それぞれ別に作成し、正しく書き込みましたか?
     リリースノートの記載に従って作成しました。書き込みはICEのマニュアルを参考にして書き込みました。
    >(c) フラッシュ書き込み用の ICE は、何を使用していますか?
    J-LINK、PARTNER-JET、ULINK-Ⅱ?
     YOKOGAWAのadviceLUNAです。
    >(d) フラッシュメモリを書き換えた場合は、必ずボードの電源を一旦、切り、(必要なら、
    ディップスイッチの設定を変えて)電源を再投入していますか?
     必ずボードの電源を落としています。ディップスイッチは、モード3の状態で書き込んだ場合は
     そのままで電源を投入します。

    >NORフラッシュ用の u-boot は、環境変数を NOR フラッシュに、シリアルフラッシュ用の
    u-boot は、環境変数をシリアルフラッシュに、それぞれ保存します。
     NORフラッシュ、シリアルフラッシュそれぞれの環境変数を使用していることから、上記の内容を理解できました。

    >可能であれば、デバッガを接続し、
     最初の頃、ICEでデバッグができると思って操作したのですが、シリアルフラッシュからのブートをしたことが無いことから(今までは内蔵ROMでの起動)、勝手が違うのかデバッグが出来ないと思いICEによるデバッグはしていませんでした。そのような状態ですが、以下の事を試しました。
    >(1) シリアルフラッシュを書き換えた後、一旦、GENMAI の電源を落とし、再投入する。
     シリアルフラッシュ書込み後、GENMAI電源OFF。ICEの出力画面に"ターゲット電源OFF"表示
     GENMAI電源ON。ICEの出力画面に"ターゲット電源ON"表示

    >(2) 0x18000000 番地にハードウェアブレークポイント(ソフトウェアブレークポイントは
    不可)を設定し、ブートモード3で実行する。
     ハードウェアブレークはICEに拒否されたので、OCD(On Chip Debug)ブレークを使用しました。
     ブレーク時のレジスタは以下の通りです。
     PC:0x18000000、LR:0x00000000、CPSR:0x600001d3、SPSR:0x5b0d7f31
     
    >(5) 十秒ほど実行し、暴走しているようなら、強制ブレークして、その時のレジスタの値を
    確認する。
     (4)→(5)まで実行した結果のレジスタは以下の通りです。
     PC:0x18000004、LR:0x18000008、CPSR:0x600001db、SPSR:0x600001db

    GENMAIボードを2枚用意して2枚ともですので、故障ではないと思っております。

    以上
Reply
  • ご回答ありがとうございます。以下にご質問の回答をします。
    >(a) u-boot のソースを変更していますか?
     ソースの変更はしていないはずです。この1ヶ月ほど色々なことを試したので、どこかのファイルを
     変更した可能性もなくはないのですが、最初(1ヶ月ほど前)に投稿した時は少なくとも変更はしておりません。
    >(b) NORフラッシュ用、シリアルフラッシュ用 u-bootは、リリースノートの記載に従って
    それぞれ別に作成し、正しく書き込みましたか?
     リリースノートの記載に従って作成しました。書き込みはICEのマニュアルを参考にして書き込みました。
    >(c) フラッシュ書き込み用の ICE は、何を使用していますか?
    J-LINK、PARTNER-JET、ULINK-Ⅱ?
     YOKOGAWAのadviceLUNAです。
    >(d) フラッシュメモリを書き換えた場合は、必ずボードの電源を一旦、切り、(必要なら、
    ディップスイッチの設定を変えて)電源を再投入していますか?
     必ずボードの電源を落としています。ディップスイッチは、モード3の状態で書き込んだ場合は
     そのままで電源を投入します。

    >NORフラッシュ用の u-boot は、環境変数を NOR フラッシュに、シリアルフラッシュ用の
    u-boot は、環境変数をシリアルフラッシュに、それぞれ保存します。
     NORフラッシュ、シリアルフラッシュそれぞれの環境変数を使用していることから、上記の内容を理解できました。

    >可能であれば、デバッガを接続し、
     最初の頃、ICEでデバッグができると思って操作したのですが、シリアルフラッシュからのブートをしたことが無いことから(今までは内蔵ROMでの起動)、勝手が違うのかデバッグが出来ないと思いICEによるデバッグはしていませんでした。そのような状態ですが、以下の事を試しました。
    >(1) シリアルフラッシュを書き換えた後、一旦、GENMAI の電源を落とし、再投入する。
     シリアルフラッシュ書込み後、GENMAI電源OFF。ICEの出力画面に"ターゲット電源OFF"表示
     GENMAI電源ON。ICEの出力画面に"ターゲット電源ON"表示

    >(2) 0x18000000 番地にハードウェアブレークポイント(ソフトウェアブレークポイントは
    不可)を設定し、ブートモード3で実行する。
     ハードウェアブレークはICEに拒否されたので、OCD(On Chip Debug)ブレークを使用しました。
     ブレーク時のレジスタは以下の通りです。
     PC:0x18000000、LR:0x00000000、CPSR:0x600001d3、SPSR:0x5b0d7f31
     
    >(5) 十秒ほど実行し、暴走しているようなら、強制ブレークして、その時のレジスタの値を
    確認する。
     (4)→(5)まで実行した結果のレジスタは以下の通りです。
     PC:0x18000004、LR:0x18000008、CPSR:0x600001db、SPSR:0x600001db

    GENMAIボードを2枚用意して2枚ともですので、故障ではないと思っております。

    以上
Children
No Data