터치 스크린이있는 임베디드 시스템을 개발 중입니다. 터치 스크린은 그래픽 출력을 오버레이하는 "가상"키보드와 함께 입력과 출력 모두로 작동합니다.
터치 센서에서 입력을 읽고 kernel.org 의이 안내서 의 도움으로 생성 된 키 누름으로 올바르게 변환하는 작동중인 장치 드라이버가 있습니다. 이 드라이버를 확장하여 화면의 이미지 출력도 처리하려고합니다.
가능한 적은 복제로 getty와 X를 모두 지원하고 싶습니다. 최소 X와 같은 체리 선택 패키지로 최소 데비안 변형을 실행하고 있습니다. 공개 GitHub 리포지토리에 덤프 할 수는 있지만이 드라이버를 리포지토리 파이프 라인으로 가져 오려고하지는 않습니다.
화면 이미지 출력은 현재 다음과 같은 복잡한 해결 방법을 통해 수행됩니다. 디스플레이에 연결되어 있지 않더라도 CPU의 내장 그래픽 하드웨어에 강제로 렌더링하는 부팅 옵션과 버퍼링을 지속적으로 스크래핑하는 데몬과 몇 가지 사전 설정을 수정하는 데몬 정의 된 픽셀로 키보드 비주얼을 만들고 실제 화면으로 푸시합니다.
이것은 개념 증명으로 작동하여 화면 장치가 기대하는 언어를 올바르게 이해하지만 확실하지는 않습니다.
kernel.org
또한 "DRM"장치 드라이버에 대한 안내서가 있지만 이는 내 하드웨어가 할 수있는 일에 대해 심각한 과잉 인 것처럼 보입니다.
Linux DRM 계층에는 일반적으로 3D 그래픽 가속에 적합한 프로그래밍 가능한 파이프 라인을 포함하는 복잡한 그래픽 장치의 요구를 지원하기위한 코드가 포함되어 있습니다.
내 하드웨어에는 3D 가속과 비슷한 것이 없으므로 이것이 내가 원하는 것이 아니라고 결론을 내립니다.
어떤 서브 시스템 / API를 사용해야합니까? 누락 된 용어 중 하나가 내 검색을 방해하는 것이라고 생각하지만이를 수행하는 방법에 대한 자세한 정보는 높이 평가할 것입니다.
하드웨어 세부 정보 (아마도 관련이 없음) : CPU와 화면은 CPU가 기본적으로 지원하지 않는 8080과 유사한 병렬 프로토콜을 통해 통신하므로 GPIO를 사용하여 에뮬레이션하고 있습니다 (mmap을 통해 레지스터를 조작하여).
전체 화면 이미지를 전송하는 데 약 20ms가 걸리지 만 내장 그래픽 버퍼에서 전체 복사본을 얻는 데 ~ 180ms가 걸리므로 해당 단계를 건너 뛰는 것이 가장 중요한 목표입니다. 화면 하드웨어에는 전체 프레임에 해당하는 데이터를 보관할 수있는 충분한 SGRAM 메모리가 포함되어 있으며 직사각형 하위 영역 쓰기를 지원하므로 변경된 화면 부분 만 업데이트하는 후크가 바람직합니다.
화면은 들어오는 데이터의 타이밍에 대해 특별한 것이 아닙니다. 터치 센서 입력은 CPU가 지원하는 I²C 를 통해 CPU와 통신하는 특수 목적 IC로 처리됩니다 . 현재 드라이버는 linux/input-polldev.h
인터페이스를 사용합니다 . CPU는 Broadcom BCM2835 이고, 화면은 Himax HX8357 컨트롤러 가 내장 된 TFT 이고, 터치 스크린 센서 디코더는 ST STMPE610 이며 , HX8357과 BCM2835 사이에 전압 레벨 시프터 (Nexperia 74LVCH245A )가 있습니다. 자세한 내용은 요청시 제공 가능합니다.