리눅스 모듈 프로그래밍 예제

커널 모듈이 없으면 모놀리식 커널을 빌드하고 커널 이미지에 직접 추가해야 합니다. 라즈베리 파이에서 일 하는 경우 리눅스 커널 실제 전통적인 리눅스 커널 이미지에 비해 크기가 작은 것을 알 것 이다. 그 이유는 필요한 코어 모듈만 존재하고 나머지 모듈은 언로드되기 때문입니다. 사용자가 원하는 경우 시스템을 다시 부팅할 필요 없이 시스템을 사용할 때 로드할 수 있습니다. 새 모듈은 모듈에서 내보낸 기호를 사용할 수 있으며 다른 모듈 위에 새 모듈을 쌓을 수 있습니다. 모듈 스태킹은 주류 커널 소스에서도 구현됩니다: msdos 파일 시스템은 지방 모듈에서 내보낸 기호에 의존하며, 각 입력 USB 장치 모듈은 usbcore 및 입력 모듈에 스택됩니다. 이 항목은 작업하는 데 시간이 걸리는 복잡한 항목입니다. 따라서, 나는 각 실용적인 예와 결과를 제공하는 기사의 숫자를 통해 토론을 깨뜨렸다. 이 주제에 쓰여진 전체 책이 있으므로 절대적으로 모든 측면을 다루기가 어려울 것입니다. 커널 모듈 작성에 사용할 수 있는 다른 문서도 있습니다. 그러나 여기에 제시된 예제는 Linux 커널 3.8.X+에서 구축 및 테스트되어 자료가 최신 상태이고 관련성이 있는지 확인하며 임베디드 시스템의 하드웨어에 대한 인터페이싱에 중점을 두었습니다.

나는 또한 기사가 독립적이며 책의 사본을 소유 할 필요가 없기는하지만, 비글 본 탐험, 내 책에 대해 수행 된 작업을 정렬했다. 처음으로 커널 문제를 해결하는 유닉스 프로그래머는 모듈 작성에 대해 불안할 수 있습니다. 장치 포트에 직접 읽고 쓰는 사용자 프로그램을 작성하는 것이 더 쉬울 수 있습니다. 리눅스는 모놀리식 커널이 있습니다. 이러한 이유로 Linux용 장치 드라이버를 작성하려면 커널과 함께 결합된 컴파일을 수행해야 합니다. 또 다른 방법은 드라이버를 커널 모듈로 구현하는 것입니다. 우리는이 두 번째 옵션에 대해 우려할 것입니다: 커널 모듈. 커널 모듈은 응용 프로그램처럼 순차적으로 실행되지 않지만 커널에서 수행하는 대부분의 작업은 특정 프로세스를 대신하여 수행됩니다.