Accessing external QSPI memory in C-SPY
テクニカル・ノート 200211
アーキテクチャ:
ARM
コンポーネント:
debugger
更新日:
2020/04/24 17:37
はじめに
このテクニカルノートは、C-SPYが外部QSPIフラッシュメモリにアクセスする方法を説明します。IAR-STM32F746xx-SKボードなどのボードに搭載された外部QSPIメモリにフラッシュローダーを使用する場合に適用されます。これらのセットアップでは、ダウンロードをベリファイし、C-SPYメモリウィンドウが期待どおりに機能するためにメモリマップが必要です。
解説
IAR-STM32F746xx-SK ボードでは、以下フラッシュローダの使用が可能です。
$TOOLKIT_DIR$\config\flashloader\ST\FlashSTM32F7xx_STM32F746xx-SK.board.
このフラッシュローダーのソースコードは以下フォルダにあります。
$TOOLKIT_DIR$\ src\flashloader\ST\FlashSTM32F7xx_QSPI.
このフラッシュローダーは意図したとおりに動作しますが、フラッシュのロードプロセスが完了すると最終的なCPUリセットが行われます。これは、C-SPY デバッグガイド フラッシュのコードのデバッグ 章で説明されています。リセット後、QSPIメモリはメモリマップされていないため、アクセスできなくなります。
プロジェクト(Project) > オプション(Options) > デバッガ(Debugger) > ダウンロード(Download) > ベリファイする(Verify Download) オプションを有効にすると、デバッグログに次のようなエラーが発生することがあります。
Verify error at address 0x90000000, target byte: 0x00, byte in file: 0x01
また、C-SPY メモリ ウィンドウには、 QSPメモリ範囲の内容が正しく表示されない場合があります。
メモリマッピングQSPIメモリ
C-SPYが外部QSPIメモリにアクセスできるようにするには、メモリをマップする必要があります。 STM32F746xxでこれを行う方法の例は、次のサンプルプロジェクトのC-SPYマクロファイルenable_qspi.macにあります。
ST > STM32F7xx > IAR-STM32F746xx-SK > Audio Demo
プロジェクト(Project) > オプション(Options) > デバッガ(Debugger) > 設定(Setup) > セットアップマクロ(Setup macros) で nable_qspi.mac を選択するとベリファイが期待どおりに機能し、メモリ ウィンドウにQSPIメモリ範囲内の正しい内容が表示されます。
enable_qspi.mac ファイルには execUserPreload C-SPY マクロを実装されることに注意してください。これがどのように機能するかについては、C-SPY デバッグガイド フラッシュのコードのデバッグ 章を参照してください。
まとめ
C-SPY デバッガが外部QSPIメモリをベリファイあるいはリード可能にするためには、マップされたメモリである必要があります。これはサンプルプロジェクトで行っているようにC-SPYマクロで実行することができます。