드라이버가 어디서 왔는지, 아니면 마더보드 주변 장치용으로 개발되었는지 약간 혼란스럽습니다. 예를 들어, USB, 사운드 또는 이더넷 컨트롤러?
기본적으로 x86/64 프로그래머 참조 매뉴얼에서는 이에 대해 자세히 다루지 않는다는 것이 제가 이해한 바입니다.
드라이버 개발자는 레지스터 수준에서 장치와 상호 작용하는 방법을 어떻게 알 수 있습니까?
답변1
모든 드라이버는 데이터시트를 기반으로 개발되었습니다. 회사는 장치를 제조할 때마다 장치가 일부 확립된 표준을 완전히 준수한다고 선언되지 않는 한 배선 및 프로그래밍 세부 사항에 대한 완전한 문서를 생성합니다.
예시 보기다양한 마더보드의 Intel ICH10 구성 요소에 대한 문서입니다.
이 문서는 반드시 무료는 아닙니다.
때로는 전혀 사용할 수 없는 경우도 있습니다. (Nvidia(및 Linus의 유명한 호언장담) 또는 ATI(Stalman의 유명한 데모 참조) 참조) 제조업체가 문서를 제공하면 제조 비밀이 유출될 것이라고 주장하는 경우.
이 특별한 경우 제조업체는 일반적으로 특수 운영 체제용 드라이버를 폐쇄형 바이너리 형식으로만 생산합니다.
다른 개발자들은 코드를 리버스 엔지니어링하려고 시도할 수밖에 없습니다.
답변2
마더보드 자체에는 기본적으로 CPU, RAM, PCI-E 슬롯, 온보드 장치 등과 같은 표준 구성 요소가 포함되어 있으며 부팅 시 초기화되고 CPU를 통해 커널에 의해 제어되는 표준 프로토콜을 사용하여 통신하므로 드라이버가 필요하지 않습니다.
이러한 모든 구성 요소는 마더보드 제조업체 간에 공유되며 모두 표준이며 대부분의 경우 해당 구성 요소와 "대화"할 수 있는 데이터시트가 있습니다. 즉, 드라이버를 통해 작업할 수 있습니다. 일부 장치는 제대로 문서화되지 않았거나 데이터시트가 없기 때문에 Linux는 이를 지원하기 어렵습니다. 예를 들어 Linux는 많은 하드웨어 모니터링 칩을 거의 또는 전혀 지원하지 않습니다.
Windows에 "마더보드 드라이버"를 설치하는 경우 "마더보드" 드라이버를 설치하는 대신 다음 드라이버를 설치합니다.개인의마더보드에 포함된 장치입니다.
답변3
- GNU/Linux 보드에는 드라이버가 없으며 필요하지도 않습니다.
- 말씀하신 대로 키보드, 마우스 등을 위한 드라이버가 개발되었으니 그렇죠.