PSoC®3 / PSoC 4 / PSoC 5LPブートローダーデザインのトラブルシューティングガイド - KBA210593 - Community Translated (JA)

Version 8

    Community Translated by  NoTa_4591161       Version: *B

     

    Translation - English: Troubleshooting Guide for PSoC® 3/PSoC 4/ PSoC 5LP Bootloader Designs - KBA210593

     

    回答:

    このガイドでは、PSoC 3 / PSoC 4 / PSoC 5LPデバイスに基づくブートローダーデザインで発生する可能性のある一般的な問題のトラブルシューティング手順について説明します。PSoC 3 / PSoC 4 / PSoC 5LPのブートローダーを初めて使用する場合は、AN73854 - PSoC® 3, PSoC 4, and PSoC 5LP Introduction to Bootloadersから始めてください。

     

    PSoC 3 / PSoC 4 / PSoC 5LPに基づく典型的なブートローダーデザインは、図1または図2のようになります。

    1.png  

    1:ホストコントローラーからのブートローディング

    2.png__jive_id="512977" />

    2Mac / PCからのブートローディング

     

    3のフローチャートは、単純なブートローダーの問題をトラブルシューティングする手順を示しています。このフローチャートの範囲は、PSoC Creator Bootloader/Bootloadable ComponenおよびPSoC Creator™ ブートローダーホストを使用する設計に限定されています。

     

    3.png 

     

    3:ブートローダーのトラブルシューティングのフローチャート

     

    よくある質問

     

    1. ブートローダープロジェクトがフラッシュをより多く消費しているため、ブートローダブルプロジェクトの最大許容サイズが制限されています。さらに、ビルド中にメモリオーバーフローエラーが報告されます。ブートローダープロジェクトのフラッシュの消費量を削減するにはどうすればよいでしょうか?

      • ブートローダーホストがこれらを使用しない場合は、ブートローダーコンポーネントのOptional Commandsのセット(図4を参照)で使用されていないコマンドを無効にします。これは、ブートローダーのフラッシュサイズを小さくするのに役立ちます。ただし、PSoC Creatorブートローダーホストツールには以下のコマンドが必要です。
        • Get flash size
        • Send data
        • Get row checksum


    4.png
     

    4:ブートローダーのオプションコマンド

    • 5に示すように、.cydwrファイルの[System ]タブのDevice Configuration Mode]Compressed設定されていることを確認します。

    5.png5 Device Configuration Mode

    2. 大きな.cyacdファイルをブートロードしようとすると、UARTブートロードが失敗します。この状況をどのように回避できますでしょうか?これは主に、カスタムブートローダーホストによる実装が原因である可能性があります。

      • UARTボーレートを下げてみてください。57600 bpsまでのボーレートで問題が発生することはほとんどありません。
      • ホストのボーレートがUARTブートローダーのボーレートと一致していることを確認してください。
      • カスタムブートローダーホストアプリケーションにホストを実装する方法の出発点として、AN68272のガイドラインに従ってください。

    3. リセットのたびにブートローダーに入る必要があり、一定の時間待つ必要があるアプリケーションでは、ターゲットデバイスが表示されないか、短時間だけ表示されてからブートローダーホストツールで消えます。どうすれば修正できますでしょうか? 6に示すようにブートローダーコンポーネント内のオプションをしてWait for command timeを選び、待ち時間を指定します。 

    6.png

    6:ブートローダーでのWait for Command

    4. ブートローダーコンポーネントの正しいhexファイルを指し示した後でも、Fixed Stack Shared Memory OTA Bootloadableサンプルプロジェクトのビルド中にエラーが報告されます。なぜでしょうか?

     

    これらのサンプルプロジェクトは、プロジェクトと共に提供されるアプリケーションのmk.batファイルを実行することによってリンカースクリプトファイルが生成されるように設計されています。PSoC Creatorのサンプルプロジェクトのドキュメントに記載されている(主にmk.batファイル内のブートローダーとブートローダブルプロジェクトの正しい名前を追加する)必要な編集を行い確認し、mk.batファイルを実行します。

     

    5. リセット後のブートローダブルアプリケーションが起動しないのはなぜでしょうか?


    これは、ブートローダブルチェックサムエラーが原因でコードがブートローダーでスタックするためです。ブートローダブルプロジェクトのフラッシュコンテンツが変更されても、ブートローダブルセクションのメタデータセクションに保存されているブートローダブルプロジェクトのチェックサム値は変更されません。したがって、次にPSoCがリセットしたときのチェックサムで失敗します。


      チェックサムエラーが発生する可能性のあるシナリオは2つあります。

      • フラッシュ変数の値を変更するAPIの使用が一部にある。
      • ブートローダブルプロジェクトでEmulated EEPROMコンポーネントを使用する場合。

     

    これを回避するには、図7に示すように、ブートローダブルプロジェクトでFast bootable Application Verificationオプションを選択します。このパラメータを有効にすると、ブートローダーは、新しいブートローダブルコード(アプリケーションコード)がダウンロードされたときに一度だけフラッシュチェックサムを計算します。次に、1つの不揮発性フラグが設定され、チェックサムが一致し、以降のリセット時にブートローダーがチェックサムを計算しないことを示します。欠点は、新しいアプリケーションのセキュリティと有効性が損なわれることです。

    7.png           

    7:ブートローダブルの高速アプリケーション検証

     

    別の回避策としては、図8に示すように、最新のブートローダブルコンポーネントで使用可能な新しいオプションChecksum exclude section (bytes) を使用することです。このオプションを有効にすると、ブートローダブルプロジェクトのcm3gcc.ldリンカースクリプトファイルに、「cy_checksum_exclude」という名前のセクションが、コンポーネントに設定された値と同じサイズで追加されます。これで、AN89610説明されている方法を使用して、フラッシュ変数またはEmulated EEPROMデータをこのセクションに指定できます。

     

    8.png  

    8:ブートローダブルチェックサム除外セクション

     

    6. カスタムブートローダー(Cypressが提供するブートローダーコンポーネントではない)が使用されている場合、ブートロードが成功しても、ブートロードされたアプリケーションが起動しないのはなぜでしょうか?


      これは、フラッシュに.cyacdファイルで指定された正しいデータが書き込まれていない場合に発生する可能性があります。その場合は、次のようにします。

      • PSoC Programmerを使用してフラッシュ全体を読み戻します。フラッシュのブートローダブルセクションに.cyacdファイルと同じデータバイトがあるかどうかを確認します。
      • フラッシュの特定の行の数バイトに誤ったデータが含まれている場合は、ブートローダーのフラッシュ書き込みAPIを確認し、APIパラメータが正しく設定されているかどうかを確認してください。
      • フラッシュ書き込みAPIが正しい場合、キャッシュ内の古いデータがSPC書き込み中にフラッシュを破壊している可能性があります。フラッシュローダーの破損を回避するには、ブートローダーのCyWriteRow()の直後にCyFlushCache() APIを使用するか、ブートローダープロジェクトのcydwrファイルのシステムで命令キャッシュを無効にします。

     

    7. ブートローディング中に通信障害を理解するにはどうすればよいでしょうか?
      ブートロード中にホストとターゲットの通信が失敗した場合は、プロトコルアナライザーを使用して、ブートロード中にチャネル内のパケットトランザクションのログをキャプチャします。ブートローダーからの応答パケットのステータス/エラーコードは、失敗の理由を示します。さまざまなエラーコードについては、 Bootloader Component datasheet の「Error codes」セクションを参照してください。

     

    8. ブートローダーホストツールが、「The flash row is not valid for the selected arrayフラッシュの行は選択されたアレイに対して無効です)」というエラーを生成します。どうすれば修正できますでしょうか?

    このエラーは、ブートローダーホストツールが書き込み保護されたフラッシュ領域を更新しようとしたときに生成されます。ブートローダーの依存関係が正しくないか、書き込み保護されたフラッシュ行が原因である可能性があります。ブートローダブルコンポーネント設定で正しいブートローダー依存関係ファイルを指定して、再び試してください。以前のバージョンのブートローダー依存関係ファイルのみが利用可能であると仮定します。回避策については、Bootloader Host Error: “The Flash Row is not Valid for the Selected Array” KBAをご参照願います。保護されたフラッシュ行をブートロードするには、図9に示すように、ブートローダープロジェクトのcydwrファイルのFlash Securityでフラッシュ行保護レベルをUnprotectedに設定します。その後、更新されたブートローダープロジェクトをプログラムし、再度試してください。

    9.png 

        9:フラッシュセキュリティの設定

     

    Bootloader and Bootloadable
    AN73854 - PSoC® 3, PSoC 4, and PSoC 5LP Introduction to Bootloaders
    AN84401 PSoC 3 and PSoC 5LP SPI Bootloader
    AN60317 - PSoC® 3 and PSoC 5LP I2C Bootloader
    AN73503 - USB HID Bootloader for PSoC 3 and PSoC 5LP
    AN86526 - PSoC® 4 I2C Bootloader