2

いくつかの単純な関数ごとのパフォーマンスプロファイリングを必要とする組み込みプロジェクトを継承しました。これは、uClinux(2.6.17.7-uc1)を実行しているColdfire(MCF5328)で構成されています。

私はColdfire、uClinux(またはLinux)の専門家ではないので、無知です。

WindowsではQueryPerformanceCounter、x86高解像度タイマーにアクセスするために使用します。前後のカウンターを記録し、違いを比較します。

LinuxにはQueryPerformanceCounterにいくつかのバリエーションがあることを学びました。

  • clock_gettime / res
  • getnstimeofday
  • ktime_x

または、経由でタイムスタンプカウンターにアクセスすることもできます

  • get_cycles

このデバイスが実行されているuClinuxビルドでは、これらのいずれも使用できません。したがって、OSには高解像度のタイマーアクセスがないようです。

これは、Coldfire自体がそのような機能を提供しないことを意味しますか?それとも、uClinuxポートの作者はそれらを除外しましたか?ハードウェアに使用できるものはありますか?それをどのように使用しますか?

4

2 に答える 2

1

結局、Coldfireで4つのDMAタイマーのうちの1つを使用することになりました。タイマーを自走式で中断のない生成カウンターとして有効にするのは簡単なことでした。これにより、12.5nsのカウンター(80Mhz)が提供されます。

于 2011-06-21T18:37:46.487 に答える
1

カーネルの古さを考えると、高解像度タイマーはサポートされていない可能性があります。

カーネルドライバーを作成している場合、APIは異なります。がスタブアウトされている場合get_cycles()は、CPUアーキテクチャがサイクルカウンタをサポートしていないことを意味している可能性があります。カーネルは非常に古いので、do_gettimeofdayタイマーハードウェアに直接クエリを実行するドライバーを作成する以外に、おそらく最善の方法です。

于 2011-06-17T23:47:11.307 に答える