드라이버 작성을 배우는 데 필요한 리소스가 있습니까?


26

하드웨어 및 임베디드 시스템을 설계하는 데 상당한 경험이 있지만 운영 체제 용 드라이버를 작성한 적이 없습니다.

좋은 책이 있다면 온라인에서 좋은 안내서가 있는지 알고 싶습니다. 좋은 책은 저에게 관심이 있지만 운영 체제의 드라이버를 디자인하고 구현하는 데 알아야 할 사항을 시작하는 데 도움이됩니다.

이것은 아마도 사람들이 나를 쏘게 할 것입니다. 어떤 OS를 기반으로하든 좋은 가이드를보고 싶지만, 대부분의 사람들이 사실 때문에 Windows 기반 가이드를보고 싶습니다. 창문이있는 제품을 판매합니다.

더 명확하게하기 위해 추가 할 수있는 추가 정보가 있으면 알려주십시오.


1
좋은 질문입니다. 나는 이것에도 관심이 있습니다.
Mr. Hedgehog

나는 가장 넓은 대답을 받아 들였다. 각 OS에 대한 정보를 얻으려면 대답이 마음에 들었습니다. Joby의 답변은 Linux에만 국한되었습니다. 나는 결정하는 데 어려움을 겪었다.
Kortuk

답변:


10

실제 OS 드라이버 작성에 대한 나의 최근 경험의 대부분은 Linux에서 왔으며 최상의 참조 IMO는 Linux 장치 드라이버, Jonathan Corbet의 3 판, Alessandro Rubini 및 Greg Kroah-Hartman (2005)입니다. 그것은 볼 수 있습니다 아마존 , 사파리 책 온라인 과도 같은, 무료 다운로드 .

같은 주제에 관한 몇 권의 책은 Sreekrishnan Venkateswaran (2008)의 필수 Linux 장치 드라이버 ( Safari Books Online 에서도 사용 가능 ) 및 Linux 장치 드라이버 작성 : Jerry Cooperstein 박사 (2009)의 연습 가이드 (볼륨 3 )입니다.

Windows 장치 드라이버의 경우 주제에 대한 최신 책 (2 주 전에 게시 됨) 은 Ronald D. Reeves, Ph.D의 Windows 7 장치 드라이버 인 것으로 보입니다 . (2010). Safari Books Online 에서도 이용할 수 있습니다 .

Windows XP를 다루는 오래된 책은 Walter Oney (2002) 의 Microsoft Windows Driver Model, Second Edition 프로그래밍 입니다. Safari Books Online 에서도 이용할 수 있습니다 .

인쇄물로 보이지만 Safari Books Online에서 볼 수있는 다른 책은 Penny Orwick 및 Guy Smith (2007) 의 Windows Driver Foundation을 사용하여 드라이버 개발 입니다. Windows Vista를 포함한다고 가정합니다.

마지막으로, Microsoft는 드라이버 개발에 관한 많은 블로그 등을 소개 합니다.


감사합니다. 귀하의 게시물에 "Linux 장치 드라이버"링크가 포함되어 있다고 제안합니다. 그렇지 않으면 매우 철저합니다.
Kortuk

11

좋은 드라이버는 하드웨어의 기능을 캡슐화하여 OS / 응용 프로그램에서 자연스럽게 사용할 수있게합니다.

이 작업을 수행하는 가장 좋은 방법은 대상 운영 체제와 드라이버의 하드웨어 종류에 따라 다릅니다.

내 경험은 모두 Linux 및 소규모 사용자 정의 실시간 OSen입니다.

Linux의 경우 Linux 장치 드라이버를 읽는 것이 좋습니다 . 다양한 Linux 드라이버 및 운영 체제가 제공하는 추상화에 대해 잘 소개합니다.

데이터를 순차적으로 읽는 직렬 포트와 같은 장치는 일반적으로 응용 프로그램을 읽을 수 있도록 사용자 공간에 장치 노드가있는 문자 장치 드라이버에 의해 처리됩니다. cat이것들로부터 읽을 수 있습니다.

플래시 스토리지 및 하드 디스크와 같은 랜덤 액세스 장치는 블록 장치에 의해 처리됩니다. dd이것들에 접근 할 수 있습니다. 좋은 예를 보려면 Linux MTD 시스템을 살펴보십시오 .

하드웨어로 낮은 수준의 조정을 수행하는 드라이버는 커널 공간에서 구현해야합니다. 런타임에로드 가능한 커널 모듈을 만들거나 Linux 커널에 코드를 정적으로 배치하도록 선택할 수 있습니다.

USB와 같은 기존 일반 드라이버 위에 구축 된 드라이버는 사용자 공간에 작성 될 수 있습니다. 예를 들어, 사용 libusb를 .


4
리눅스 장치 드라이버는 좋은 책입니다. 불행히도, 이러한 것들은 OS에 따라 다릅니다. 소스 트리에는 이미 참조 할 드라이버가 너무 많기 때문에 Linux를 작성하는 것이 가장 쉽습니다. 마이크로 프로세서의 주변 장치를 구동하기 위해 임베디드 코드를 작성했다면 아마도 장치 드라이버의 기본 사항을 잘 알고있을 것입니다.
markrages

그래, 내 의견을 삭제하고 있습니다. 내 잘못이야.
Kortuk

1
언급 한 바와 같이 실제 하드웨어를 제어하는 ​​드라이버는 OS 유무에 관계없이 동일합니다. 드라이버를 작성할 때의 주요 차이점은 1) 인터페이스가 OS의 표준 모델 (예 : 열기, 닫기, 읽기, 쓰기, ioctl)에 맞아야하고 2) 드라이버가 설치되고 활성화되는 방법입니다.
tcrosley

1
@tcrosley, 그 특정 사항에 대한 많은 정보가 있다면 그것에 대한 답변을보고 싶습니다.
Kortuk

3

나는이 문제에 대한 경험이 없지만 2 센트를 줄 것입니다.

http://www.osr.com/index.html 또는 https://www.osronline.com/index.cfm에서 시작할 수 있습니다.

여기 브라질에는 이 문제에 대한 좋은 블로그 가 있습니다 . 포르투갈어와 영어로 작성되었습니다. 불행히도 대부분의 기사는 포르투갈어로되어 있습니다.

이 블로그의 책에 관한 포르투갈어로 된 게시물이 있습니다 : http://translate.google.com.br/translate?hl=pt-BR&ie=UTF-8&sl=pt&tl=en&u=http://driverentry.com.br/ 블로그 / % 3Fp % 3D825 & twu = 1

조금 도와 주셨으면 좋겠습니다


이것은 "드라이버 작성법을 배우기 위해 온라인으로 포르투갈어를 어디서 배울 수 있습니까?"라는 질문을하면 많은 도움이 될 것입니다. 도와 주셔서 감사합니다.
Kortuk

2
포르투갈어를 배우는 것에 대해 걱정하지 마십시오. 내가 통과 한 드라이브 개발에 대한 링크는 영어입니다. DriveEntry도 영어로 작성되었습니다. 불행히도 책에 관한 게시물은 포르투갈어로되어 있지만 책은 영어로되어 있습니다. 그리고 가장 중요한 것은 게시물이 아니라 책입니다.
Daniel Grillo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.