저는 리눅스 커널 개발을 처음 접했습니다. Phytech의 AM3354 프로세서 wega 키트가 있습니다.이 보드에서 지원하는 커널이 있습니다. 이제 보드에 LCD 연결이 있습니다. 내 시스템에는 LCD가 필요하지 않습니다. 오히려 더 많은 GPIO가 필요합니다. 이제 제 질문은 이러한 핀을 GPIO로 사용하는 것입니다. 이 목적을 위해 커널을 수정해야하고 어떤 유형의 변경이 필요한지.LCD 핀을 GPIO로 사용하기 위해 커널을 변경해야합니다.
답변
dts 파일을 다시 구성해야합니다.
사실 관심있는 내용은 pinmuxes (또는 pinctrl) 논리입니다. 리눅스의 관점에서 핀 MODE에 대한 정보는 dts (또는 dtsi) 파일에 저장됩니다. 의는 example를 들어 보겠습니다 :
BONE_P8_19 (PIN_INPUT | MUX_MODE7) /* gpmc_ad8.gpio0_22 */
이 (GPIO 항상 am335x에 MUX_MODE7됩니다) gpio0.22 또는 모드 GPIO와 입력으로 gpmc_ad8 핀 구성합니다.
또한 link 위의 참조 자료에는 am335x beaglebone black에 대해 dts 오버레이를 많이 사용하는 저장소가 나와 있습니다. 당신이 내가 설명했던 것을 잡지 않았다면 그것들을 확인할 수 있었고, 그래서 당신은 그 논리를 이해할 수있었습니다.
확인. 내 보드에 맞는 dts 파일을 찾고 해당 파일을 변경해야합니까? –
예, 변경하고 커널을 다시 컴파일하십시오. –
프로세서 및/또는 기존 코드에 대한 참조 자료를 읽어야합니다. 먼저 GPIO 기능이 해당 핀에서 지원되는지 확인하십시오. 그러한 경우, 예를 들어 핀 룩스 (pinmux) 또는 다른 메커니즘에 의해 선택이 이루어지는 방식을 결정하십시오. 그런 다음 장치 트리에있는 경우 장치 별 루틴에 명시 적으로 코딩되었는지 확인하고 일부 구성 유틸리티를 통해 런타임에이를 변경할 수 있는지 확인하십시오. –
@ChrisStratton : 핀이 GPIO로 지원되는지 확인했습니다. 이제는 커널 코드에서 GPIO로 핀 기능을 변경해야 할 필요가 있습니다. 커널에서 핀의 기능을 결정하기 위해 어떤 파일을 참조 할 수 있는지 알려 주시면 거기에서 힌트를 얻을 수 있습니다. –
앞서 말했듯이, 커널 코드, 장치 트리 (사용 된 경우) 또는 userspace 유틸리티. 설명서를 읽거나 보드 별 파일과 구성 항목을 찾습니다. –