Как написать с нуля драйвер LCD для Android-планшета?

Я хотел бы написать драйвер для ЖК-экрана ASUS TF700

  • Что я должен изучить, чтобы сделать это с самого начала?
  • Как мне начать с этого?

Первое, что вам нужно для этого усилия, – это полное понимание аппаратной архитектуры устройства.

Эта система основана на nVIDIA Tegra 3, а ЖК-панель будет напрямую подключена к графической подсистеме.

Ваш первый порт захода должен быть Техническим справочником Tegra. Если для других ARC SoC, которые я видел, что-то будет, будет 8000-10000 страниц и доступно только под NDA – особенно те части, которые относятся к графической подсистеме.

Затем вам нужно будет полностью понять, как дисплеи обрабатываются в Linux. Вы хотите реализовать простой фреймбуфер или использовать 2d и 3d функциональность Tegra?

Там также будет драйвер для подсветки ЖК-панели – контроллер, для которого, вероятно, будет висела одна из шин I2C Tegra.

Построение базового драйвера фреймбуфера для Linux должно быть довольно простым, поскольку на самом деле это не очень много.

Согласитесь с Мартином Джеймсом, лучше, если вам не придется писать весь драйвер самостоятельно, и ASUS, должно быть, уже предоставила один для существующей Panel. Если вы хотите поддерживать новую панель, вы можете повторно использовать существующий код драйвера, добавив поддержку для новой панели. Вот несколько предварительных условий:

  1. Техническое руководство по набору микросхем, которое использует ASUS.
  2. Спецификация панели дисплея.
  3. Аппаратная схема с интерфейсом дисплея-чипсета.
  4. Знание драйвера Framebuffer, который уже присутствует.
  5. (Самое главное) Аппаратная команда, которая будет исследовать сигналы, которые идут / идут в / из панели.

Опять же, это будет сложная задача, и для ее реализации потребуется некоторое время. Всего наилучшего! (Если вы все еще планируете идти вперед 🙂