クロックが供給されていないかパワーダウンの状態のペリフェラルへのアクセス
テクニカル・ノート 160909
アーキテクチャ:
Arm, RISC-V
コンポーネント:
debugger
更新日:
2018/09/04 6:37
はじめに
クロックが供給されていない(または電源が入っていない)周辺ユニットにC-SPYからアクセスすると、予期せぬ結果を招くおそれがあります。
解説
デバッグ中に、クロックが供給されていない(または電源が入っていない)周辺ユニットにアクセスすると、予期せぬ動作を引き起こすおそれがあります。誤ったデータが読み書きされて予期せぬ結果を招くことがあります(何も起こらない場合もあります)。場合によっては、データの読み書きによって、CPUがリセットされたり、デバッガの接続が切断されたりすることがあります。
実際にどのような動作が引き起こされるかは、デバイスの実装によって異なります。
メモリ(Memory)ウィンドウで周辺ユニットのメモリアドレス範囲を表示したり、レジスタ(Registers)ウィンドウで周辺ユニットのレジスタを表示したりするだけで、そうした現象が発生する可能性があります。
カスタムレジスタグループを使用する
ロックされていない(または電源が入っていない)周辺ユニットのレジスタにアクセスせずにレジスタを見る一つの方法は、アプリケーションごとにレジスタグループを作成することです。それには、デバッグセッション中に表示(View) > レジスタ(Registers) > レジスタユーザーグループのセットアップ(Register User Groups Setup)を選択します。ユーザレジスタグループは、問題を発生させずにレジスタにアクセスしたい場合に限り作成してください。
なお、定義済みのレジスタグループに登録されているレジスタを組み合わせて、新たにグループを作成することもできます(UARTとGPIOのレジスタを組み合わせるなど)。
まとめ
クロックが供給されていない周辺ユニットや電源が入っていない周辺ユニット、または無効になっている周辺ユニットにアクセスすると、デバイスがクラッシュしたり、プログラムが期待どおりに動作しないことがあるため、そうならないように対策する必要があります。以下の対策を検討してください。
- 対象のレジスタにアクセスしないようにする
- C-SPYが対象のレジスタにアクセスするときに、周辺ユニットを有効にする(例えば、C-SPYのマクロを使用して周辺ユニットを有効にする)。
C-SPYのマクロとレジスタユーザグループに関する情報を見るには、ヘルプ(Help) > C-SPYデバッグガイド(C-SPY Debugging guide)を選択してください。
全ての製品名は、それぞれの所有者の商標または登録商標です。