특정 드라이버가 로드되었음을 사용자에게 알립니다.

특정 드라이버가 로드되었음을 사용자에게 알립니다.

다음은 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 드라이버가 실제로 로드되었는지 확인하고 싶습니다. 이것을 보는 한 가지 방법은 콘솔에 라인을 인쇄한 후 즉시 LED를 켜는 것이라고 생각합니다.

그런데 어떻게 해야 합니까? 다른 더 좋은 방법이 있나요?

나의 주요 요구 사항은 부팅부터 USB 드라이버 로딩까지의 시간을 측정하는 것입니다. USB 드라이버를 로드하는 동안 보드에 신호가 있으면 이 작업을 수행할 수 있습니다. 전원이 켜져 있는 동안 이 신호를 캡처하면 USB 로딩 시간에 대한 정확한 정보를 얻을 수 있습니다.

메시지가 즉시 도착하지 않고 메시지 도착이 시작되기까지 꽤 오랜 시간이 걸리기 때문에 로그 파일의 타임스탬프를 보면 이러한 수준의 정확성이 불가능합니다.

답변1

먼저, 당신이 찾고 있는 것은 드라이버가 로드될 때가 아니라는 점에 유의하십시오. 예를 들어 모듈로 로드되지 않고 커널에 내장된 드라이버는 부트로더에 의해 로드됩니다. 알아내려는 것은 드라이버가 초기화를 수행하는 시기, 즉 드라이버를 사용하는 주변 장치를 이제 사용할 수 있도록 초기화가 완료된 시점일 것입니다.

드라이버가 초기화를 완료할 때 일종의 가시적 신호를 출력하려면 커널을 패치해야 합니다. 사용자 공간에는 범용 후크가 없습니다.

예를 들어 "낮은 수준" 드라이버가 아닌 특정 주변 장치에 관심이 있는 경우 usbcoreudev 규칙을 사용할 수 있습니다. 이는 커널 부팅이 완료되고 사용자 공간(특히 udev)이 시작된 후에만 작동합니다.


그렇다면 당신이 정말로 원하는 것은 무엇입니까?로그 메시지의 시간입니다. "부팅부터 USB 드라이버 로딩까지의 시간 측정" 목적을 위해 로그 메시지의 타임스탬프가 올바른 정보입니다. 메시지의 타임스탬프는 로그 메시지가 표시된 시간이 아니라 이벤트가 발생한 시간입니다(특히 로그 장치가 초기화되지 않았거나 명령을 사용하여 로그를 보는 경우에는 훨씬 더 늦을 수 있음) dmesg.

측정을 수행하려면 장치 시계를 기준으로 전원 켜짐 시간을 알아야 합니다. 기기에 배터리가 없어 전원이 켜질 때 시계가 항상 특정 출처에서 시작하는 경우 경과 시간은 관심 있는 타임스탬프에서 출처를 뺀 값입니다. 장치에 고정 시계가 있는 경우 먼저 해당 시계를 다른 컴퓨터(예: NTP 사용)와 동기화한 다음 전원 켜짐 이벤트 시간을 최대한 정확하게 측정하세요.

관련 정보