特定のドライバがロードされたことをユーザーに通知します。

特定のドライバがロードされたことをユーザーに通知します。

以下は、Microzedボード(Cortex A9)コンソールの一部のメッセージです。

[Sat May 17 18:18:26.603 2014] DMA: preallocated 256 KiB pool for atomic coherent allocations
[Sat May 17 18:18:26.603 2014] xgpiops e000a000.ps7-gpio: gpio at 0xe000a000 mapped to 0xf004e000
[Sat May 17 18:18:26.603 2014] usbcore: registered new interface driver usbfs
[Sat May 17 18:18:26.624 2014] usbcore: registered new interface driver hub
[Sat May 17 18:18:26.624 2014] usbcore: registered new device driver usb
[Sat May 17 18:18:26.624 2014] Switching to clocksource xttcps_clocksource
[Sat May 17 18:18:26.624 2014] e0001000.serial: ttyPS0 at MMIO 0xe0001000 (irq = 82) is a xuartps
[Sat May 17 18:18:26.624 2014] console [ttyPS0] enabled
[Sat May 17 18:18:26.634 2014] xdevcfg f8007000.ps7-dev-cfg: ioremap f8007000 to f0052000 with size 100
[Sat May 17 18:18:26.662 2014] xqspips e000d000.ps7-qspi: master is unqueued, this is deprecated
[Sat May 17 18:18:26.662 2014] spi spi32766.0: setup: unsupported mode bits 3
[Sat May 17 18:18:26.662 2014] xqspips e000d000.ps7-qspi: can't setup spi32766.0, status -22
[Sat May 17 18:18:26.662 2014] spi_master spi32766: spi_device register error /amba@0/ps7-qspi@e000d000/ps7-qspi@0
[Sat May 17 18:18:26.662 2014] xqspips e000d000.ps7-qspi: at 0xE000D000 mapped to 0xF0054000, irq=51
[Sat May 17 18:18:26.671 2014] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[Sat May 17 18:18:26.680 2014] ULPI transceiver vendor/product ID 0x0424/0x0007

ラインの後ろ:

[Sat May 17 18:18:26.624 2014] usbcore: registered new device driver usb

USBドライバが実際にロードされていることを確認したいと思います。これを見る1つの方法は、コンソールにラインを印刷してすぐにLEDを点灯させることです。

しかし、どうすればいいですか?他に良い方法がありますか?

私の主な要件は、起動からUSBドライバのロードまでの時間を測定することです。 USBドライバのロード中にボードに信号がある場合は、これを行うことができます。電源が入っている間にこの信号をキャプチャすると、USBロード時間に関する正確な情報が得られます。

メッセージがすぐに到着せず、メッセージの到着が開始されるまでにかなり長い時間がかかるため、ログファイルのタイムスタンプを見ると、このレベルの正確さは不可能です。

答え1

まず、あなたが探しているのはドライバがロードされるときではないことに注意してください。たとえば、モジュールとしてロードされず、カーネルに組み込まれたドライバはブートローダによってロードされます。調べるのは、ドライバが初期化を実行するタイミング、つまりドライバを使用する周辺機器を使用できるように初期化が完了した時点です。

ドライバが初期化を完了したときに一種の可視信号を出力するには、カーネルにパッチを適用する必要があります。ユーザースペースには汎用フックはありません。

たとえば、「低レベル」ドライバではなく特定の周辺機器に興味がある場合は、usbcoreudevルールを使用できます。これは、カーネルの起動が完了し、ユーザースペース(特にudev)が起動した後にのみ機能します。


それでは、あなたが本当に欲しいものは何ですか?はいログメッセージの時間。 「起動からUSBドライバのロードまでの時間を測定する」目的のために、ログメッセージのタイムスタンプは正しい情報です。メッセージのタイムスタンプは、ログメッセージが表示された時間ではなくイベントが発生した時間です(特に、ログデバイスが初期化されていない場合、またはコマンドを使用してログを表示する場合ははるかに遅くなる可能性があります)dmesg

測定を実行するには、デバイスの時計に基づいて電源投入時間を知る必要があります。デバイスにバッテリーがなく、電源が入っているときに時計が常に特定のソースから始まる場合、経過時間は関心のあるタイムスタンプからソースを引いたものです。デバイスに固定時計がある場合は、まずその時計を他のコンピュータ(NTPなど)と同期させてから、電源投入イベント時間をできるだけ正確に測定してください。

関連情報