Hệ thống con / API trình điều khiển Linux nào được sử dụng cho một thiết bị màn hình / màn hình đơn giản?


9

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.hgiao 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.


Tôi khá chắc chắn rằng bạn đang mắc hội chứng NIH và về cơ bản đã phát minh lại một bánh xe - thường thì màn hình cảm ứng sử dụng giao thức HID, điều này khá ít được hỗ trợ. Lưu ý, màn hình cảm ứng chỉ là thiết bị đầu vào.
0andriy

@ 0andriy Phát minh lại bánh xe là điều tôi thích, nhưng không có trình điều khiển (thực) cho thiết bị cụ thể này khi tôi bắt đầu. Tôi không biết về bất kỳ giao thức được tiêu chuẩn hóa nào cho các thiết bị giao diện người, nhưng nếu có một giao thức tôi chắc chắn lớp phủ cảm ứng tôi đang sử dụng ở đây không sử dụng nó. Tôi không đồng ý rằng "màn hình cảm ứng chỉ là thiết bị đầu vào", vì tôi chắc chắn là xuất ra hình ảnh.
memtha

Bạn đơn giản không nhận ra hai khối phần cứng trong một gói. Màn hình cảm ứng, không quan tâm đến tên của nó, chỉ là thiết bị đầu vào. Đầu ra được gọi, ví dụ, bảng điều khiển hoặc màn hình hiển thị TFT.
0andriy

merriam-webster.com/dipedia/touchscreen Có hai phần cứng riêng biệt: lớp phủ nhạy cảm ứng và màn hình TFT. Hai thành phần này kết hợp để tạo thành màn hình cảm ứng. Bạn không thể nói với tôi rằng tôi đang xác định sai màn hình cảm ứng bằng cách bảo tôi "bỏ qua tên".
memtha

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.