Tôi đang phát triển một hệ thống nhúng với màn hình cảm ứng. Màn hình cảm ứng hoạt động như cả đầu vào và đầu ra, với bàn phím "ảo" che phủ đầu ra đồ họa.
Tôi có trình điều khiển thiết bị hoạt động để đọc đầu vào từ cảm biến cảm ứng và dịch chính xác nó sang phím bấm, được tạo với sự trợ giúp của hướng dẫn này trên kernel.org . Tôi muốn mở rộng trình điều khiển này để xử lý đầu ra hình ảnh ra màn hình.
Tôi muốn hỗ trợ cả getty và X, với càng ít sự trùng lặp càng tốt. Tôi đang chạy một biến thể Debian tối thiểu với các gói được chọn bằng cherry, chẳng hạn như X tối thiểu. Lưu ý rằng tôi không có ý định đưa trình điều khiển này vào đường dẫn kho lưu trữ, mặc dù tôi có thể đổ nó vào kho lưu trữ GitHub công khai.
Việc xuất hình ảnh màn hình hiện được thực hiện thông qua một cách giải quyết khó khăn: tùy chọn khởi động để buộc kết xuất với phần cứng đồ họa nhúng của CPU, mặc dù nó không được kết nối với màn hình và trình nền liên tục loại bỏ màn hình đệm, sửa đổi một số phần trước pixel được xác định để tạo hình ảnh bàn phím và đẩy nó ra màn hình thực.
Điều này hoạt động như một bằng chứng về khái niệm, chứng minh rằng tôi hiểu chính xác ngôn ngữ mà thiết bị màn hình mong đợi, nhưng rõ ràng là không tối ưu.
kernel.org
cũng có một hướng dẫn cho trình điều khiển thiết bị "DRM", nhưng điều đó có vẻ như quá mức nghiêm trọng đối với những gì phần cứng của tôi có khả năng:
Lớp Linux DRM chứa mã nhằm hỗ trợ nhu cầu của các thiết bị đồ họa phức tạp, thường chứa các đường ống lập trình rất phù hợp với khả năng tăng tốc đồ họa 3D.
Không có phần cứng nào của tôi có bất cứ thứ gì giống như tăng tốc 3D, vì vậy tôi kết luận rằng đây có lẽ không phải là thứ tôi muốn.
Tôi nên sử dụng hệ thống con / API nào? Tôi cho rằng một phần của thuật ngữ còn thiếu là những gì đang kìm hãm các tìm kiếm của tôi, nhưng bất kỳ thông tin nào khác về cách thực hiện điều này sẽ được đánh giá cao.
Chi tiết về phần cứng (có thể không liên quan): CPU và màn hình giao tiếp qua giao thức song song 8080, mà CPU không hỗ trợ nguyên bản, vì vậy tôi mô phỏng nó bằng GPIO (bằng cách thao tác các thanh ghi qua mmap).
Gửi một hình ảnh màn hình hoàn chỉnh mất khoảng 20 ms, nhưng để có được một bản sao hoàn chỉnh từ bộ đệm đồ họa nhúng mất ~ 180 ms, vì vậy bỏ qua bước đó là mục tiêu quan trọng nhất. Phần cứng màn hình bao gồm đủ bộ nhớ SGRAM để giữ toàn bộ giá trị dữ liệu của khung và hỗ trợ ghi một vùng con hình chữ nhật, do đó, một móc nối chỉ cập nhật phần màn hình đã thay đổi là điều mong muốn.
Màn hình không đặc biệt về thời gian của dữ liệu đến. Đầu vào cảm biến cảm ứng được xử lý bởi một IC được xây dựng có mục đích giao tiếp với CPU thông qua I²C mà CPU hỗ trợ. Trình điều khiển hiện tại sử dụng linux/input-polldev.h
giao diện. CPU là Broadcom BCM2835 , màn hình là một màn hình LCD với bộ điều khiển Himax HX8357 nhúng , bộ giải mã cảm biến màn hình cảm ứng là ST STMPE610 , và có một bộ chuyển đổi mức điện áp (Nexperia 74LVCH245A ) được chơi giữa HX8357 và BCM28. Thêm chi tiết có sẵn theo yêu cầu.