저는 Linux 커널 모듈/드라이버를 작성할 지식이 없습니다.
기본적인 예를 들어보겠습니다. 인터럽트 핀 중 하나의 마이크로 컨트롤러에 연결된 입력 장치가 있습니다. 장치의 버튼을 누르면 마이크로 컨트롤러에서 하드웨어 인터럽트가 발생한다는 것을 알고 있습니다.
베어 메탈 개발자로서 저는 특정 인터럽트가 발생할 때 인터럽트 벡터가 점프할 주소에 인터럽트 핸들러 코드를 배치합니다.
이제 마이크로 컨트롤러에서 실행되는 Linux 커널이 있고 입력 장치용 커널 드라이버를 작성하려는 경우 커널을 통해 인터럽트 핸들러를 등록할 위치를 정확히 어떻게 알 수 있습니까?
하드웨어, 주소 등에 대해 무엇을 더 알아야 합니까? 커널의 어떤 인터럽트 라인이 입력 장치를 연결하는 정확한 핀과 연관되어 있는지 어떻게 알 수 있습니까?
답변1
장치나 운영 체제에 관계없이 시작점은 장치가 시스템에 연결되는 방식입니다. (PCI 버스 슬롯에 연결되어 있습니까? USB 포트에 연결되어 있습니까? 일부 마더보드 SMBus에 연결되어 있습니까?...)
인터페이스가 너무 화려하지 않고, 장치가 인터페이스 사양을 엄격하게 준수하고, 바퀴를 다시 만들고 싶지 않다면 작업의 가장 열악한 부분(하드웨어에 가장 가까운)이 이미 Linux에 기록되어 있을 가능성이 높습니다. 커널을 사용하고 먼저 적절한 API를 선택해야 합니다.
하나로 시작하다드라이버 개발자에게 Linux API에 대한 글로벌 개요를 제공합니다.그런 다음 귀하가 선택한 사항이나 인터페이스에 대해 자세히 알려주십시오.
마이크로컨트롤러에 관해서는, 나는 그것이중소기업 버스.