16

Cortex M4 で C 関数 (割り込みから呼び出されますが、抽出して別の場所でプロファイルできます) をプロファイリングしようとしています。

この関数で通常使用されるサイクル数をカウントする可能性は何ですか? 関数は最大 4000 サイクルで実行されるため、RTC はオプションではないと思います。逆アセンブルから手動でサイクルをカウントするのは面倒な場合があります。また、典型的なフラッシュ / メモリを使用した典型的なストリームでプロファイリングしたいため、平均化する場合にのみ役立ちます。使用パターン。

サイクル カウンター レジスタと MRC 命令については聞いたことがありますが、A8/11 で使用できるようです。私はcortex-Mxマイクロでそのような命令を見たことがありません.

4

5 に答える 5

23

ここで定義されている DWT_CYCCNT レジスタを見てください。このレジスタは実装依存であることに注意してください。チップのベンダーは?STM32 実装がこの一連のレジスタを提供していることは知っています。

この投稿では、タイミングのために DWT サイクル カウンター レジスタを使用する手順について説明します。(2009 年 12 月 11 日 - 06:29 PM の投稿フォームを参照)

このスタック オーバーフローの投稿は、DWT_CYCCNT の方法の例でもあります。

于 2012-07-17T21:02:42.483 に答える
3

パーツにCoreSight 組み込みトレース マクロセルが組み込まれており、適切なトレース対応デバッガ ハードウェアとソフトウェアがあれば、コードを直接プロファイリングできます。もちろん、トレース対応のデバッグ ハードウェアはより高価であり、デバッグ ヘッダーでトレース ポート ピンを使用できるようにボードを設計する必要があります。これらのピンは他の機能に多重化されることが多いため、常に可能または実用的であるとは限りません。

それ以外の場合、ツール チェーンにサイクル精度のシミュレーター ( Keil uVisionで使用できるものなど) が含まれている場合は、それを使用してコードのタイミングを分析できます。シミュレーターは、デバッグ、トレース、およびプロファイリング機能を提供します。これらの機能は一般に、チップ上で利用できる機能よりも強力で柔軟です。そのため、トレース ハードウェアがある場合でも、シミュレーターの方が簡単なソリューションである可能性があります。

于 2012-07-18T05:02:30.573 に答える
0

これは、ARM の実装によって異なります。

SysTick->VAL stm32F4 コアでレジスタを使用しました。これはサイクルアキュレートです。

結果を解釈するときは、次の点に注意してください。

  • ラッピングを考慮します。
  • アップではなくカウントダウンです。

制限: これは、単一のシステムスティックよりも小さい間隔でのみ機能します。

于 2014-05-14T10:07:23.133 に答える