드라이버를 작성하기 위해 PIO 보드에 어떻게 액세스합니까?

드라이버를 작성하기 위해 PIO 보드에 어떻게 액세스합니까?

사용자 공간에서 간단한 PIO PCI 보드와 통신할 목적으로 드라이버를 작성하려고 합니다.

먼저 샘플 캐릭터 드라이버를 만들었습니다. 메모리에 있는 간단한 텍스트 문자열입니다. 읽기 및 쓰기를 위한 장치 파일이 생성됩니다. 이해하기 쉬운.

다음으로 다른 드라이버를 생성하여 PCI 보드에 드라이버를 성공적으로 등록했습니다. 커널 메시지에서 모든 것이 제대로 작동하는 것을 볼 수 있으며 lspci -v명령은 내 테스트 드라이버를 사용 중인 드라이버로 표시합니다.

내 질문: 사용자 공간에서 PIO PCI 드라이버에 어떻게 액세스합니까?
또한 "장치 번호"와 읽기-쓰기 파일을 갖도록 문자 장치를 만들고 기본적으로 두 프로젝트를 병합해야 합니까? pci_driver구조에 읽기 또는 쓰기 기능이 없으므로 이는 논리적인 단계처럼 보입니다 .

맞습니까?

답변1

좋은 책이 있어요리눅스 장치 드라이버다음에서 무료로 이용 가능:

https://lwn.net/Kernel/LDD3/

수년이 지났기 때문에 일부 내용이 약간 변경되었을 수 있지만 핵심 콘텐츠는 여전히 도움이 될 것입니다.

일반적으로 운전자는 문자 장치를 등록하려고 할 수 있습니다. 장치는 동적으로 할당된 주요 장치 번호를 수신합니다. 그런 다음 해당 메이저 번호를 사용하여 dev에서 문자 장치 파일을 만들 수 있습니다. 드라이버는 표준 파일 작업 집합(예: open(), ioctl(), read(), write())을 지원합니다. 사용자 공간 프로세스는 open()문자 장치 파일을 사용하고 이러한 파일 작업을 사용하여 드라이버와 상호 작용합니다. 드라이버 구현은 이러한 작업(및 해당 종속성)을 물리적 장치와의 상호 작용으로 변환합니다.

관련 정보