좋은 책을 만들어 주셔서 감사합니다.
자세한 설명과 소스.. 정말 감동적입니다.
커널 소스가 4.x지만 크게 변경 없이 잘 돌아 가더군요.
최근 유행하고 있는 라즈베리파이 2 GPIO 기반으로 14장까지 해봤습니다.
https://github.com/iamroot12CD/it_expert_linux_device_driver
디바이스 드라이버 제작의 해답은 "커널" 그 자체에 있다.
많은 개발자들이 디바이스 드라이버 제작은 운영체제의 심장부를 이해해야 하는 것은 물론, 해박한 하드웨어 지식이 있어야 가능하기 때문에 어렵고도 도전하기 힘든 일이라 생각한다. 그러나 실제로는 디바이스와 관련된 커널부를 얼마만큼 잘 이해하느냐에 달려 있다. 따라서 이 책은 디바이스와 관련된 커널을 어떻게 활용하는지를 명확하게 짚어주고, 동작원리를 보여줌으로써 크게 힘들이지 않고 디바이스 드라이버를 제작할 수 있게 도와준다.
추천평(미디어서평)
리눅스 디바이스 드라이버 공부를 시작할 때, 과연 어떤 책을 봐야할지 그 막막함이란… 디바이스 드라이버를 막 시작하려는 사람이라면 누구나 하는 고민이었을 것이다. 물론 가장 유명한 『Linux Device Driver』 원서를 보는 것도 하나의 방편이지만, 언어의 장벽이란 생각보다 높다. 실제로 어떻게 코딩을 해야 할지 난감할 수도 있고, 코딩한 드라이버가 제대로 돌아가는지 확인하기가 쉽지 않다. 그러나 이 책으로 공부하는 동안은 그런 걱정은 하지 않아도 될 것이다. 테스트 가능한 소스 코드 예제와 군더더기 없는 설명 그리고 강력한 테스트 환경(클립 2개와 LED 2개)에 놀라지 않을 수 없을 것이다. - 주봉녕((주)AMT 주임연구원)
국내에서 임베디드를 공부하고 있는 사람이라면 한번쯤은 들어봤을 유영창님이 직접 집필하셨다는 이유만으로도 충분히 관심받을 만한 책이다. 각 장마다 이해를 돕기 위해 간단하고, 동작 여부를 확인할 수 있는 예제를 담아서 확실하게 장을 마무리한다. 또한 커널 2.4 뿐만 아니라 2.6에 대한 드라이버 API를 함께 담고 있으며, 예제를 통해 두 버전의 차이를 비교할 수 있도록 한 점 또한 이 책의 장점일 것이다. - 오홍균(㈜마이크로웹 S/W 개발팀 연구원)
리눅스 디바이스 드라이버 구현에 관한 기본 개념이 특정 분야에 치우치지 않고 잘 설명되어 있다. 책 곳곳에서 저자의 노하우를 익힐 수 있으며, 접근하기 쉬운 예제들로 개발자들의 이해를 돕는다. 기본에 충실한 입문서라고 생각한다. - 황태연(LG 전자/정보통신 시스템연구소 선임 연구원)
리눅스 디바이스 드라이버에 관심에 있는 사람에게 적극 추천한다. 그동안 리눅스 디바이스 드라이버에 관련된 책을 많이 봤지만, 이만큼 디바이스 드라이버 작성법을 체계적으로 정리한 책은 보지 못했다. 각 장마다 주제에 따른 이론 설명과 첫 장부터 마지막 장까지 일관성있게 잘 정리된 예제 소스는 실습하면서 내용을 이해하기에 참 좋았다. 저자의 오랜 경험을 잘 정리하여 실제 디바이스 드라이버 작성법을 다룬 국내 최초의 도서가 아닐까 싶다. - 윤종필(엘리코파워)
이 책의 최대 장점은 병렬 포트를 제어해 LED의 점멸을 보여주며 초보자도 쉽게 도전할 수 있는 기회를 준다는 점이다. 또한 간략하게 표현된 그림들은 어렵기만 한 디바이스 드라이버를 잘 이해할 수 있도록 해준다. 처음 디바이스 드라이버를 접하는 분이나 내용 정립이 부족한 사람에게 적극 추천한다. - 황의철(심플렉스인터넷(주))
리눅스 드라이버를 처음 접하는 초보자부터 현장 개발자를 위한 지침서다. 여타 보드를 구입하거나 제작할 필요가 없는 병렬 포트를 사용한 쉬운 실습 환경과 다양한 소스가 매력적이다. - 이현석((주)마이크로 웹)
이 책은 리눅스 드라이버에 대해 전무(全無)한 이에게 리눅스 드라이버 전문가가 되기 위해 필요한 기반 지식과 응용 지식을 체계적으로 전달한다. 전반적으로 책의 내용이 매우 기초적이면서도 쉽게 저술되어 있어 리눅스 드라이버 개발에 대한 개념 정립에 매우 유용하다. 때로는 심도있는 내용도 다루고 있어 고급 수준을 원하는 독자들에게도 도움이 될 것이다. 무엇보다 눈에 보이는 실험 방법과 소스 코드 그리고 저자의 오랜 개발 경험은 나로 하여금 저자에 대한 존경심을 불러일으키기에 충분했다. 리눅스 드라이버 개발에 입문하는 사람에게는 정말 추천하고 싶은 책이다. - 정동열(동국대학교 대학원/자바기초와 프로젝트(피씨북, 2001) 저자)
Chapter 1. 실습 환경 설정과 준비 01. 시스템과 리눅스 운영체제의 준비 02. 커널 소스의 준비 03. 실습 기자재의 준비 04. 준비된 실습 환경 점검 Chapter 2. 리눅스 커널과 디바이스 드라이버 01. 운영체제로서의 리눅스 02. 리눅스 커널 03. 디바이스 드라이버 Chapter 3. 디바이스 파일과 저수준 파일 입출력 01. 디바이스 파일과 파일 입출력 함수 02. 저수준 파일 입출력 함수 03. 디바이스 파일 관련 함수 04. 저수준 파일 입출력 함수의 사용 예 o mknod 명령과 저수준 파일 입출력 함수 정리 Chapter 4. 간단한 모듈 테스트 01. 모듈 프로그램 맛보기 02. 모듈 소스 준비 03. 모듈 소스의 형식 04. 모듈 컴파일용 Makefile 05. 모듈 매개변수의 지정 06. 커널 메시지의 출력 07 커널과 모듈 Chapter 5장 메모리 할당과 해제 01. 변수 02. 동적 메모리 03. 동적 메모리 예제 04. 메모리 풀 05. 메모리 풀 예제 o 메모리 할당과 해제 함수의 정리 Chapter 6. 디바이스 드라이버의 등록과 해제 01. 디바이스 드라이버 제어 방식 02. struct file_operations 03. 문자 디바이스 드라이버 등록과 해제 및 구성 04. 응용 프로그램과 형 디바이스 드라이버의 호출 관계 예제 o 디바이스 드라이버 등록과 해제 함수 정리 Chapter 7. 디바이스 드라이버의 초기화와 종료 01. 초기화와 종료 처리 02. 모듈 사용 횟수의 관리 03. I/O 영역의 경쟁 처리 함수 o 디바이스 드라이버 초기화와 종료 함수의 정리 Chapter 8. 디바이스 드라이버의 읽기와 쓰기 01. 읽기와 쓰기의 구현 02. I/O 처리 03. 사용자 프로세스 공간과 커널 프로세스 공간 04. 디바이스 드라이버의 읽기와 쓰기 구현 예제 o 디바이스 드라이버 읽기와 쓰기 함수 정리 Chapter 9. 주 번호와 부 번호의 처리 01. 주 번호, 부 번호, 디바이스 타입 02. 부 번호에 의한 파일 처리 방법 03. 부 번호에 의한 파일 처리 예제 04. 예약된 주 번호 Chapter 10. 디바이스의 제어 01. 디바이스 제어 02. ioctl() 함수를 이용한 입출력 구현 예제 o 디바이스 제어 함수의 정리 Chapter 11. 시간 처리와 커널 타이머 01. 시간 처리 02. 커널 타이머 03. 커널 타이머를 이용한 LED 점멸 예제 o 시간 처리와 커널 타이머 함수 정리 Chapter 12. 인터럽트 처리 01. 인터럽트 02. 인터럽트 발생 시간 체크 예제 o 인터럽트 처리 함수 정리 Chapter 13. 블록킹 I/O 01. 프로세스의 사용 효율성과 잠들기(sleep) 구조 02. 블록킹 I/O 03. 인터럽트 발생 시간 체크 예제 04. wait_event_interruptible 매크로 o 블록킹 I/O 함수 정리 Chapter 14. 입출력 다중화 01. 입출력 다중화 02. 다중 입출력의 구현 03. 다중 입출력 처리를 이용한 프린터 포트 예제 o 입출력 다중화 함수 정리 Chapter 15. 태스크 큐와 워크 큐 01. 태스크 큐와 워크 큐의 필요성 02. 태스크 큐 03. 워크 큐 04. 태스크 큐 예 05. 워크 큐 예 06. 태스크 큐를 이용한 LED 점멸 06. 워크 큐를 이용한 키 입력 채터링 방지 예제 o 태스크 큐 함수 정리 o 워크 큐 함수 정리 Chapter 16. BottomHalf 01. TopHalf와 BottomHalf 02. 태스크 큐와 mark_bh() 함수 03. 태스크 큐 처리 수정(2.4-> 2.6) 04. 인터럽트 발생 시간 체크 예제 o 인터럽트 함수 정리 Chapter 17. proc 파일 시스템 01. 시스템 정보의 확인 02. proc 파일 시스템 03. proc 파일 시스템 동작 방식 04. 가산기 예제 o proc 파일 시스템 함수 정리 Chapter 18. 메모리 매핑 01. 물리 주소와 가상 주소 02. 주소 변환 함수 03. 프로세스 메모리 매핑 04. 매개변수 전달값을 보여주는 예제 05. VIDEO I/O 영역 메모리 mmap 구현 예제 06. nopage를 이용한 커널 메모리 mmap 구현 예제 o 메모리 매핑 함수 정리 Chapter 19. 모듈간의 상호 참조 01. 모듈간의 상호 참조와 EXPORT_SYMBOL 매크로 02. 커널 2.4의 /proc/ksyms와 커널 2.6의 /proc/kallsyms 03. 모듈간의 심볼 참조 예제 Chapter 20. 다중 프로세스 환경의 디바이스 드라이버 01. 단일 프로세스를 위한 디바이스 드라이버 02. 프로세스별 관련 관리 03. 비선점형 커널의 디바이스 드라이버 04. 선점형 커널의 디바이스 드라이버 Chapter 21. 디바이스 드라이버를 커널 소스에 포함시키는 방법 01. 사전 고려 사항 02. 커널에서의 커널 컴파일 옵션 파일 03. Makefile 문법 규칙 04. 디바이스 드라이버를 커널에 포함시키는 예 Chapter 22. 블록 디바이스 드라이버 01. 리눅스와 블록 디바이스 02. 하드디스크의 특성 03. 블록 디바이스 드라이버와 요구 큐 04. 버전별 블록 디바이스 처리 05. 커널 2.4의 블록 디바이스 드라이버 06. make_request 방식의 램디스크 예제 07. request 방식의 가상의 하드디스크 예제 08. 커널 2.6의 블록 디바이스 드라이버 09. make_request 방식의 램디스크 예제 10. request 방식의 가상의 하드디스크 예제 o 블록 디바이스 함수 정리 Chapter 23. 네트워크 디바이스 드라이버 01. 리눅스와 네트워크 디바이스 드라이버 02. 네트워크 디바이스 드라이버 등록과 제거 03. 보편적인 초기화 및 등록 처리 절차 04. struct net_device의 이해 05. 네트워크 디바이스의 열기와 닫기 06. 전송과 수신 07. 통계 처리 08. 네트워크 디바이스 제어 ioctl 09. 멀티 캐스트 처리 o 네트워크 디바이스 드라이버 함수 정리 Chapter 24. 디바이스 드라이버 파일 시스템(devfs) 01. devfs 파일 시스템 02. 디바이스 파일 생성 예제 o devfsc 파일 시스템 함수 정리 Chapter 25. 시스템 파일 시스템(sysfs) 01. sysfs 파일 시스템 02. sysfs 파일 시스템의 이용 Chapter 26. 디바이스 드라이버의 이기종 시스템으로의 이식 01. 이기종 시스템으로의 디바이스 드라이버 이식 02. ARM용 DIO 디바이스 드라이버 예제 03. 시그널과 SIGIO 04. call_usermodehelper 사용 예제 05. modprobe와 모듈 적재 요청 처리 Chapter 27. DMA와 PCI 디바이스 01. DMA 02. PCI
자료명 | 등록일 | 다운로드 |
---|---|---|
예제소스 | 2016-04-06 | 다운로드 |