2

少なくとも 1 ミリ秒の時間分解能を必要とするカーネル モジュールを構築しました。現在 do_gettimeofday() を使用していますが、モジュールを組み込みデバイスに移動すると、これが機能しないことが懸念されます。デバイスには 180 Mz プロセッサ (MIPS) が搭載されており、カーネルのデフォルトの HZ 値は 100 です。したがって、jiffies を使用すると、最高で 10 ミリ秒の解像度しか得られません。それはそれをカットしません。

私が知りたいのは、do_gettimeofday() がタイマー割り込み (HZ) に基づいているかどうかです。少なくとも 1 ミリ秒の分解能を保証できますか?

ありがとう!

4

3 に答える 3

3

ms はマイクロ秒ではなく、ミリ秒です。デバイスの選択について詳しく知らなければ、 gettimeofday がタイマー割り込みに基づいているかどうかなど、実装に依存する質問に答えることはできません。命令セットとクロック速度を知っていることが示唆するデバイスを選択した場合は、その特定のカーネルの実装を見て調べてみませんか?

于 2010-04-01T23:50:51.020 に答える
2

はい、カーネルで有効CONFIG_HIGH_RES_TIMERSにする必要があり、プラットフォームがclock_event_device. これは、高解像度タイマーをユーザー空間に公開できるメカニズムです。clock_getres()ユーザー空間を呼び出すことで、タイマーの解像度を確認できます。

于 2011-03-04T08:52:26.123 に答える
2

組み込みデバイスでは、保証できません。MIPS ベースなので、おそらく問題ありません。ほとんどの MIPS マシンにはサイクル カウンターがあります。ただし、カーネルのその部分のソースを読んで、プラットフォームで何をしているのかを確認する必要があります。

于 2010-04-01T23:51:22.483 に答える