GPIO 컨트롤러 드라이버에 대한 구현 문제
GPIO 프레임워크 확장(GpioClx)은 유연한 DDI(디바이스 드라이버 인터페이스)를 제공합니다. 이 DDI를 사용하면 개발자가 대체 콜백 인터페이스 중에서 선택할 수 있습니다. 드라이버 개발자는 대상 GPIO 컨트롤러 디바이스의 하드웨어 아키텍처에 가장 적합한 이벤트 콜백 함수 집합을 구현해야 합니다.
예를 들어 GPIO 컨트롤러 드라이버가 GPIO I/O 핀에서 읽고 쓰는 것을 지원하는 경우 개발자는 다음 콜백 함수 쌍 중 하나를 구현하도록 선택할 수 있습니다.
CLIENT_ReadGpioPins 및 CLIENT_WriteGpioPinsCLIENT_ReadGpioPinsUsingMask 및 CLIENT_WriteGpioPinsUsingMaskCLIENT_ReadGpioPins 및 CLIENT_WriteGpioPins 함수는 은행 번호, GPIO 핀 번호 배열 및 이러한 핀에서 읽거나 쓸 비트 값에 대한 데이터 버퍼를 받습니다. 일반적으로 읽기 또는 쓰기 작업에서 소수의 GPIO 핀만 액세스하는 경우 이 콜백 쌍이 최상의 구현을 생성할 수 있습니다. 이 구현은 일반적으로 하드웨어 레지스터가 메모리 매핑되지 않은 GPIO 컨트롤러에 사용됩니다. 그러나 읽기 또는 쓰기 작업 중에 여러 GPIO 핀에 액세스할 가능성이 있거나 GPIO 컨트롤러 하드웨어가 여러 GPIO 핀에 병렬로 효율적으로 액세스할 수 있는 경우 다른 콜백 함수 쌍이 더 나은 구현을 생성할 수 있습니다.
CLIENT_ReadGpioPinsUsingMask 및 CLIENT_WriteGpioPinsUsingMask 콜백 함수는 한 번의 호출로 최대 64핀의 뱅크를 읽거나 쓸 수 있습니다. CLIENT_ReadGpioPinsUsingMask 함수는 GPIO 핀 값을 64비트 마스크로 읽습니다. CLIENT_WriteGpioPinsUsingMask 함수는 두 개의 64비트 마스크를 사용합니다. 한 마스크는 설정할 GPIO 핀을 나타내고 다른 마스크는 지울 GPIO 핀을 나타냅니다. 이 구현은 일반적으로 메모리 매핑 GPIO 컨트롤러에 사용됩니다.