누군가 lspci -vv 출력을 설명할 수 있습니까?

누군가 lspci -vv 출력을 설명할 수 있습니까?

lspci -vv -s 00:00Linux를 실행하는 단일 보드 컴퓨터에서 실행하면 다음과 같은 출력이 나타납니다.

07:05.0 RAID bus controller: Adaptec AAC-RAID (Rocket) (rev 03)
Subsystem: Adaptec ASR-2230S + ASR-2230SLP PCI-X (Lancer)
Control: I/O- Mem+ BusMaster+ SpecCycle+ MemWINV+ VGASnoop-
ParErr- Stepping- SERR+ FastB2B-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- SERR-
Latency: 64 (250ns min, 250ns max), Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 74
Region 0: Memory at f7a00000 (64-bit, non-prefetchable) [size=2M]
Region 2: Memory at f79ff000 (64-bit, non-prefetchable)
[Remaining output truncated]

위의 내용은 샘플 출력일 뿐이며 정확히 제가 얻은 결과는 아니지만 관심 있는 항목이 포함되어 있습니다.

lspci 명령의 출력 내용을 대부분 이해하지만 누군가 이에 대해 설명해 주었으면 합니다.영역...여기서 지역 라인에 지정된 메모리 유형은 무엇입니까? 어떻게 접근하나요? 이 요구 사항으로 PCI 버스를 통해 연결된 두 개의 단일 보드 컴퓨터 간의 통신을 완료하려고 합니다. 직접적으로 얘기할 수 있어야 해요. 버스에는 PCI 중재자가 하나만 있습니다. 이것이 내가 지금까지 달성한 ​​것입니다...

아웃바운드 PCI 트래픽을 위한 Linux 커널 모듈을 만들었습니다. 기본적으로 드라이버 mmap을 사용하여 사용자 공간(사용자 공간 응용 프로그램 사용)부터 끝까지 매핑합니다. mmap에서 반환된 위치에 글을 썼고 실제로 버스 분석기를 사용하여 교통량을 확인했습니다! 이제 다른 단일 보드 컴퓨터에서 PCI 장치의 sysfs 리소스를 읽으려고 시도했지만 모든 FF만 표시되고 변경 사항은 없습니다.

이 모든 메모리 매핑(PCI 관련)이 어떻게 발생하는지에 대한 제안이나 설명을 주시면 감사하겠습니다.

답변1

lspci옵션에 따라 PCI 장치에 대한 정보를 표시합니다. 자세한 내용은 매뉴얼 페이지를 참조하세요.

~에 대한영역출력 헤더에서 이 줄은 이 구성 요소에 사용되는 레지스터가 할당되는 위치를 자세히 설명합니다. 이는 메모리 매핑 및 각 구성 요소가 메모리를 사용하는 방식과 관련이 있습니다.

Region 0: Memory at f7a00000 (64-bit, non-prefetchable) [size=2M]
Region 2: Memory at f79ff000 (64-bit, non-prefetchable)

이 줄은 사용된 레지스터 주소, 크기 및 주소 크기(64비트 포인팅 레지스터)를 지정합니다.

이 주소가 어떻게 사용되는지 자세히 알아보려면 컴퓨터 아키텍처에 대한 추가 정보를 찾아보세요.

관련 정보