ฉันกำลังพัฒนาระบบฝังตัวด้วยหน้าจอสัมผัส หน้าจอสัมผัสทำงานเป็นทั้งอินพุตและเอาต์พุตด้วยแป้นพิมพ์ "เสมือน" ที่ซ้อนทับเอาต์พุตกราฟิก
ฉันมีโปรแกรมควบคุมอุปกรณ์การทำงานที่อ่านข้อมูลจากเซ็นเซอร์สัมผัสและแปลได้อย่างถูกต้องที่จะกดปุ่มที่สร้างขึ้นด้วยความช่วยเหลือของคู่มือนี้ kernel.org ฉันต้องการที่จะขยายไดรเวอร์นี้เพื่อจัดการกับภาพที่ส่งออกไปยังหน้าจอ
ฉันต้องการสนับสนุนทั้ง getty และ X โดยทำซ้ำได้น้อยที่สุด ฉันกำลังเรียกใช้ตัวแปรเดเบียนที่น้อยที่สุดด้วยแพ็คเกจที่คัดสรรโดยเชอร์รี่เช่น X ที่น้อยที่สุดโปรดทราบว่าฉันไม่ได้ตั้งใจที่จะนำไดรเวอร์นี้ไปยังที่เก็บข้อมูลแม้ว่าฉันอาจทิ้งมันไว้ในที่เก็บ GitHub สาธารณะ
ภาพหน้าจอที่ส่งออกจะทำในขณะนี้ผ่านการแก้ปัญหา cringy: ตัวเลือกการบูตเพื่อบังคับให้การแสดงผลกับฮาร์ดแวร์กราฟิกฝังตัวของ CPU แม้ว่าจะไม่ได้เชื่อมต่อกับจอแสดงผลและ daemon ที่ scrapes หน้าจออย่างต่อเนื่องที่บัฟเฟอร์ พิกเซลที่กำหนดไว้เพื่อสร้างภาพแป้นพิมพ์และส่งออกไปยังหน้าจอจริง
สิ่งนี้ทำงานเป็นหลักฐานของแนวคิดพิสูจน์ว่าฉันเข้าใจภาษาที่อุปกรณ์หน้าจอคาดไว้อย่างถูกต้อง แต่เห็นได้ชัดว่าเหมาะสมที่สุด
kernel.org
ยังมีคำแนะนำสำหรับไดรเวอร์อุปกรณ์ "DRM" แต่ดูเหมือนจะเป็นเรื่องที่เกินความจำเป็นอย่างยิ่งสำหรับสิ่งที่ฮาร์ดแวร์ของฉันสามารถ:
เลเยอร์ DRM ของ Linux ประกอบด้วยรหัสที่มีวัตถุประสงค์เพื่อรองรับความต้องการของอุปกรณ์กราฟิกที่ซับซ้อนโดยปกติจะประกอบด้วยท่อที่ตั้งโปรแกรมได้ซึ่งเหมาะสมกับการเร่งกราฟิก 3D
ฮาร์ดแวร์ของฉันไม่มีสิ่งใดที่คล้ายกับการเร่งความเร็วแบบ 3 มิติดังนั้นฉันจึงสรุปได้ว่านี่อาจไม่ใช่สิ่งที่ฉันต้องการ
ฉันควรใช้ระบบย่อย / API ใด ฉันคิดว่าคำศัพท์ที่ขาดหายไปหนึ่งชิ้นคือสิ่งที่ระงับการค้นหาของฉันไว้ แต่ข้อมูลเพิ่มเติมใด ๆ เกี่ยวกับวิธีการทำให้สำเร็จจะได้รับการชื่นชม
รายละเอียดฮาร์ดแวร์ (อาจไม่เกี่ยวข้อง): CPU และหน้าจอสื่อสารผ่านโปรโตคอลขนาน 8080- เอสเคซึ่ง CPU ไม่สนับสนุนโดยกำเนิดดังนั้นฉันจึงจำลองด้วย GPIOs (โดยจัดการกับการลงทะเบียนผ่าน mmap)
การส่งภาพหน้าจอที่สมบูรณ์นั้นใช้เวลาประมาณ 20 มิลลิวินาที แต่การได้รับสำเนาที่สมบูรณ์จากบัฟเฟอร์กราฟิกแบบฝังจะใช้เวลาประมาณ 180 มิลลิวินาทีดังนั้นการข้ามขั้นตอนนั้นจึงเป็นวัตถุประสงค์ที่สำคัญที่สุด ฮาร์ดแวร์หน้าจอมีหน่วยความจำSGRAMเพียงพอที่จะเก็บข้อมูลทั้งหมดในเฟรมและรองรับการเขียนพื้นที่ย่อยเป็นรูปสี่เหลี่ยมผืนผ้าดังนั้นขอให้อัพเดตเฉพาะส่วนของหน้าจอที่มีการเปลี่ยนแปลงเท่านั้น
หน้าจอไม่เฉพาะเจาะจงเกี่ยวกับช่วงเวลาของข้อมูลที่เข้ามา อินพุตเซ็นเซอร์สัมผัสถูกจัดการโดย IC ที่สร้างขึ้นโดยมีวัตถุประสงค์เพื่อสื่อสารกับ CPU ผ่านI²Cซึ่ง CPU รองรับ ไดรเวอร์ปัจจุบันใช้linux/input-polldev.h
อินเตอร์เฟส CPU เป็น Broadcom BCM2835หน้าจอเป็น TFT ที่มีคอนโทรลเลอร์ Himax HX8357ในตัวตัวถอดรหัสเซ็นเซอร์หน้าจอสัมผัสเป็น ST STMPE610และมีตัวปรับระดับแรงดันไฟฟ้า (Nexperia 74LVCH245A ) ระหว่างเล่นกับ HX8357 และ BCM2835 รายละเอียดเพิ่มเติมตามคำขอ