カスタム フラッシュローダのデバッグ

テクニカル・ノート 201118

アーキテクチャ:

Arm

コンポーネント:

debugger

更新日:

2020/12/11 0:25

はじめに

カスタムフラッシュローダの作成は、フラッシュローダーのアクティビティを通常の方法でデバッグすることが難しいため、難しいプロセスになる可能性があります。 (フラッシュローダのアクティビティをログに記録する方法については、テクニカルノート200214を参照してください)。 このテクニカルノートは、開発中のフラッシュローダをデバッグする別の方法を提示します。

カスタムフラッシュローダの開発の詳細については、Flash Loader Development Guide ( $TOOLKIT_DIR$\doc\FlashLoaderGuide.ENU.pdf)をご参照ください。

解説

カスタムフラッシュローダの開発中に、セミホスティング printf を使用してフラッシュローダのアクティビティをデバッグすることができます。 一般的な考え方は次のとおりです:

  1. セミホスティングprintfを使用してフラッシュローダプロジェクトをビルド
  2. ターミナルI / Oログファイルを生成するようにアプリケーションプロジェクトを設定

手順

以下の例では、STM32F429II-ACAボードおよび I-jetデバッグプローブが使用されています。

セミホスティングprintfを使用してフラッシュローダプロジェクトをビルド

  1. $TOOLKIT_DIR$\src\flashloader (この例は ST\FlashSTM32F4xx) からフラッシュローダーワークスペースを開いてください
      

  2. 適したビルド構成を選択してください (この例では FlashSTM32F4xxRAM192K_Dual)
     

  3. Project>Options>General Options>Library Configuration>stdout/stderr: Via semihosting にチェックされていることを確認してください。
     
  4. 以下のように、FlashInit関数の先頭に__iar_data_init3の呼び出しとprintfステートメントを追加します。
    __iar_data_init3(); // Required to initialize .bss
    parallelism = 1;
    blankcheck = 0;
    printf("Hello! World\n\n");
    printf("image_size:%d\n\n", image_size);


  5. リンカエラー[Lp005]が発生した場合: placement にコンテンツのあるセクションとコンテンツのないセクションが混在している場合は、リンカ設定ファイルを変更する必要があります。
     * do not initialize { zi } あるいは do not initialize { section .bss } 行をコメントアウトしてください
     * initialize by copy { readwrite } 行 がない場合は追加してください
  6. $TOOLKIT_DIR$\config\flashloader
    (この例では ST フォルダ) にあるフラッシュローダーの.outファイルをビルドしたものと置き換えます
     

 

ターミナルI / Oログファイルを生成するようにアプリケーションプロジェクトを設定

フラッシュローダーのprintf出力は、ターミナルI / Oウィンドウに表示されません。 ただし、ターミナルI / Oログファイルには記録されます。The flash loader printf 

  1. Help>Information Center>Example ProjectsからSTM32F429II-ACALightEffectsプロジェクトを開きます

  2. I-jetまたは他のハードウェアデバッグプローブでデバッグセッションを起動できない場合(カスタムフラッシュローダの問題のため)に備えて、デバッガドライバを一時的にシミュレーターに変更します:Project>Options>Debugger>Setup>Driver: Simulator

  3. Project>Download and Debug を選択してデバッグセッションを開始します

  4. Debug>Logging>Set Terminal I/O Log File を選択して、Terminal I/O Log Fileを有効にします


  5. デバッグセッションを終了し、デバッガドライバをI-jetに戻します: Project>Options>Debugger>Setup>Driver: I-jet

  6. Project>Download and Debug を選択して、新しいデバッグセッションを開始します

  7. フラッシュローダのprintf出力がターミナルI / Oログファイルに記録されるようになります


まとめ

カスタムフラッシュローダ開発のデバッグと詳細なログ記録には、セミホスティングprintfターミナルI / Oログファイルが役立ちます。

 

全ての製品名は、それぞれの所有者の商標または登録商標です

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。