사용자 공간에서 간단한 PIO PCI 보드와 통신할 목적으로 드라이버를 작성하려고 합니다.
먼저 샘플 캐릭터 드라이버를 만들었습니다. 메모리에 있는 간단한 텍스트 문자열입니다. 읽기 및 쓰기를 위한 장치 파일이 생성됩니다. 이해하기 쉬운.
다음으로 다른 드라이버를 생성하여 PCI 보드에 드라이버를 성공적으로 등록했습니다. 커널 메시지에서 모든 것이 제대로 작동하는 것을 볼 수 있으며 lspci -v
명령은 내 테스트 드라이버를 사용 중인 드라이버로 표시합니다.
내 질문: 사용자 공간에서 PIO PCI 드라이버에 어떻게 액세스합니까?
또한 "장치 번호"와 읽기-쓰기 파일을 갖도록 문자 장치를 만들고 기본적으로 두 프로젝트를 병합해야 합니까? pci_driver
구조에 읽기 또는 쓰기 기능이 없으므로 이는 논리적인 단계처럼 보입니다 .
맞습니까?
답변1
좋은 책이 있어요리눅스 장치 드라이버다음에서 무료로 이용 가능:
수년이 지났기 때문에 일부 내용이 약간 변경되었을 수 있지만 핵심 콘텐츠는 여전히 도움이 될 것입니다.
일반적으로 운전자는 문자 장치를 등록하려고 할 수 있습니다. 장치는 동적으로 할당된 주요 장치 번호를 수신합니다. 그런 다음 해당 메이저 번호를 사용하여 dev에서 문자 장치 파일을 만들 수 있습니다. 드라이버는 표준 파일 작업 집합(예: open()
, ioctl()
, read()
, write()
)을 지원합니다. 사용자 공간 프로세스는 open()
문자 장치 파일을 사용하고 이러한 파일 작업을 사용하여 드라이버와 상호 작용합니다. 드라이버 구현은 이러한 작업(및 해당 종속성)을 물리적 장치와의 상호 작용으로 변환합니다.