Как поменять драйвер тачскрина

Обновлено: 04.07.2024

Нельзя портировать прошивки, например с MT6575 на MT6577. И базовая, и стоковая прошивка должны быть для одного процессора.
Обе прошивки должны быть одной версии ОС

Собственно сама инструкция:


Берем рабочую прошивку для своего устройства (БАЗА);
Берем портируемую прошивку для кастомного рекавери (ПОРТ).


В ПОРТ c заменой скидываем папки из БАЗЫ :
/system/vendor
/system/lib/hw
/system/lib/modules

и файлы
/system/etc/vold.fstab
/system/etc/vold.fstab.nand
system/usr/keylayout/generic.kl
boot.img


Идем в META-INF/com/google/android ПОРТА, открываем updater-script.
Если есть строки:
assert(getprop("ro.product.device") == "Смартфон" ||
getprop("ro.product.board") == "Смартфон" || assert(package_extract_file("boot.img", "/tmp/boot.img"),
write_raw_image("/tmp/boot.img", "bootimg"),
delete("/tmp/boot.img"));

дописываем их в конец скрипта.


Прошивка получится в папке ПОРТА. Теперь все это нужно запаковать с обычным сжатием в zip (Если вы распаковывали). И обязательно подписать.

Если в вашей прошивке после портирования что-то не работает, не факт, что после манипуляций, приведенных ниже, это заработает. Но попробовать стоит :yes2: .
Здесь написано, какие бинарники и либы отвечают за работу разных модулей(GPS, Bluetooth, Wi-Fi, радио и т.д.) Попробуйте позаменять их тоже.

*Из БАЗЫ в ПОРТ

Не работает GSM, 3G - меняем папку /system/etc/firmware
Не работает Wi-Fi - меняем файлы /system/bin/p2p_supplicant ; /system/bin/wpa_supplicant
Не работает камера - меняем /system/lib/libcameracustom.so
Проблемы со звуком - меняем /system/lib/libaudiosetting.so
Не работает радио - заменяем system/lib/libaudiosetting.so и libfmcust.so
Слышны хрипы/звуковые артефакты заменяем system/lib/soundfx
Не работают аппаратные клавиши меняем папку system/usr/keylayout

*Решение некоторых проблем (дополнение)

Не ловит связь-с папки system/etc/firmware вытаскиваем modem.img,если после этого не сеть все же не работает то берем с папки system/lib/modules файлы ccci.ko , ccci_plat.ko

Проблема с клавишей домой,не работает как задумано-с папки system/usr/keylayout берем файл Generic.kl и mtk-tpd.kl

Не работает wi fi-с папки system/lib/modules/ берем эти файлы mtk_stp_wmt.ko и mtk_wmt_wifi.ko ,затем идем в META-INF/com/google/android/updater-script ищем симлинк symlink(“/system/lib/modules/wlan_mt6620.ko и меняем значение на 6628 если у вас такой чип,если не знаете какой у вас чип,идем в базу и в build.prop ищем в строке wlan

Если проблемы с bluetooth то с папки берем файл system/lib/modules/mtk_stp_bt.ko если не работает то меняем эти два файла system/lib/libbluetooth_mtk.so
system/lib/libbluetoothem_mtk.so

Не работает радио - меняем system/lib/modules/mtk_fm_priv.ko и system/lib/modules/mtk_fm_drv.ko , если не работает, то меняем эти файлы
system/lib/libfmar1000.so
system/lib/libfmcust.so
system/lib/libfmjni.so
system/lib/libfmmt6616.so
system/lib/libfmmt6620.so
system/lib/libfmmt6626.so
system/lib/libfmmt6628.so
Если все же не работает меняем FMradio.apk

Не работает камера-с папки system/lib/hw/ меняем этот файл camera.default.so,если не помогает,то с папки system/lib меняем:
- libcamalgo.so
libcamera_client.so
libcameracustom.so
libcameraprofile.so
libcameraservice.so
не работает видеозапись меняем эти файлы libmhal и libMTKOmx в папке system/lib

Проблема с GPS- меняем эти файлы system/xbin/libmnlp и mnld

Черный экран,медленная анимация,медленный автоповорот-меняем этот файл hwcomposer.mt6577.so в папке system/lib/hw - замечание от Andrey567

Не работает компас, датчик приближения или что-то из этой оперы, меняем system/lib/hw/sensors.default.so

Замена драйвера дисплея.

После замены дисплея у китайского мобильника часто возникают трудности с работоспособностью экрана.Дисплей светится белым и отказывается что-либо отображать.Причина в драйвере дисплея - драйвер,установленный в прошивке не подходит к данному типу дисплея.Требуется замена драйвера !Как это сделать и каким софтом?
Об этом и напишем в данной теме.Для начала,конкретизируем некоторые факты,полученные в интернете.
- есть прошивки с одним LCD драйвером
- есть прошивки с несколькими LCD драйверами (нужно только переключить на нужный).
Что нам нужно определить?
- название LCD драйвера,который используется дисплеем
- по названию находим готовый драйвер в инете или прошивку-донор с этим драйвером внутри.
- качаем необходимый софт по переключению,замене драйвера в нашей прошивке

Программа определяет версию и название драйвера.

WChinaTool

LCDSwitch_V2.1.0
Работает на COM1 (и только на COM1) , для замены драйвера экрана, находящиеся в прошивке (переключение драйвера).
Прога считывает драйвера дисплея находящиеся в прошивке телефона (в каждой по разному - от 2 до более 10).
подключаешь телефон,включаешь чтоение прошивки - Read Lcd (выдает список установленых драйверов)
выбираешь нужный драйвер из списка - Change Lсd
Смена (переключение) драйвера.

Spiderman 2.61

Внимание:с драйверами корректно работают версии Spiderman 2.60 , Spiderman 2.61, Spiderman 2.64.

У Spiderman 2.61 в меню ниже EEPROM NVRAM по кнопочке LCD_Switch выпадает 4 сервиса:
1 Check MTK LCM Module. (Just Controller IC) – информация о контроллере LCD телефона (по контроллеру можно подобрать аналог дисплея и драйвера).
2 MTK LCD Switch Universal Tool – для телефонов имеющих только один драйвер дисплея в прошивке, в выпавшем меню в верхней строчке нужно выбрать фулл такого телефона, нажать кнопочку Analisis LCD Drivers и в верхнем правом окошке отобразится информация о типе дисплея, который прошит в данной прошивке, самое главное – разрешение. Выбирая из списка по очереди драйвера с таким же разрешением по команде Direct Set Target LCD driver получаем фулл с новым драйвером, который нужно прошить в тело и проверить. Не работает для телефонов, имеющих несколько (EVEN ) драйверов. Не все прошивки читаются.Некоторые телефоны не поддерживаются.
3 EVEN Phone – read from target читает таблицу драйверов с телефона(прошивки типа EVEN), позволяет их изменять, А ТАК ЖЕ СОХРАНЯТЬ ЕЕ НА ДИСК. Разобраться как это делать очень просто. Тот драйвер, который активный помечен как Selected (выбранный). Выбирается новый птичкой и кнопаем change – пробежит синяя полоска и есть шанс решить проблему белого экрана.
4 EVEN Phone – read from disk позволяет записать сохраненный файл в другой телефон например. Только он сохраняет не .bin, так что при выборе нужно выбирать all files.
Инструкция реальная и рабочая.
В папке с софтом находятся 16 драйверов дисплея одним файлом.Их то и можно вставлять в телефон.Дополнить,заменить,вытащить их не получиться.Это - недостаток данного софта.

[i]Удалось все сделать при помощи Spiderman 2.62 залил не рабочую родную прошивку сохранил драйвер дисплея на диск, залил прошивку с которой он включается но белый дисплей и залил в него сохраненный драйвер дисплея. Все тело работает.

Добавлю одну поправочку. не обязательно искать фул для данного телефона. Просто считываете фулл с того тела, где стоит неподходящий дисплей. Сам фул нужен программе для того, чтобы проанализировать по какому адресу хранится драйвер дисплея в данной прошивке. Коннектитесь к телу, узнаете версию дисплея кнопкой "Check MTK LCM Module", далее "MTK LCD Switch universal tool" заливаете нужный драйвер дисплея. Очень часто помогает


Как-то раз программисты сидели и писали очередной температурный сенсор и программы с кнопочками. И вдруг оказалось, что этот сенсор хочет себе один небольшой производитель телефонов в будущей модели. Так образовалась задача поддержать I2C/GPIO сенсор на уровне Android OS, так как сенсор обещает быть неотъемлимой частью самого телефона.

Будучи глубоким субподрядом, надежды на быстрый и регулярный отклик от конечного заказчика не было, решили потренироваться на кошках и засунуть нашу железяку в какое-нибудь доступное устройство с Android.

Задача выглядела не очень сложно и подразумевала найти планшет, схему к нему, припаяться куда надо, ничего не сломав, и написать некоего кода, который благотворно скажется на присутствии нашего сенсора в конечной операционной системе.

Смотрим по порядку что тут есть:

  1. Введение
  2. Как железно подключиться к реальному девайсу типа планшет
  3. Как подрубиться к дебажному UART в аудио выходе и обнаружить, что он не работает
  4. Как написать несложный драйвер ядра с I2C, GPIO, прерываниями и фоновыми задачами
  5. Как сделать абстракцию своей железки в Android middleware или использовать существующую
  6. Как дописать свой системный сервис и куда чего добавить, чтобы он включился и нашёлся
  7. Как прорваться через SEAndroid/SELinux дописав свои правила
  8. Как проверить — напишем простой апп
  9. Как это всё собрать
  10. Как понять, что в предыдущих пунктах что-то не так

Дело, как обычно, развивалось таким образом, что доказать состоятельность и выполнимость задачи нужно было как можно раньше, поэтому образовалось несколько частей работы, не все из которых будут описаны, но приведу их для целостности впечатления.

В поисках планшета выбор остановился на Nexus 7 по ряду произаческих причин: он был у знакомого и был ему не нужен, так как был достаточно сильно побит молью (моль разбила сенсорный экран и приходилось пользоваться мышью), но всё же это Nexus, а значит, по нему было больше информации и исходников на гугловских сайтах. Так как браться сразу за планшет было боязно, первым под замес попал Raspberry Pi3. Большая часть отладки произошла на нём. Далее рассказ не будет поминать Raspberry Pi 3, но в уме можно держать, что бOльшая часть программных проблем порешалась именно на нём.

Как железно подключиться к реальному девайсу типа планшет

Подключаться к такому навороченному устройству как планшет без схемы — слабоумие и отвага дело неблагодарное. Поэтому вначале была схема. Вообще говоря, электрические схемы современных телефонов и планшетов — не самая открытая вещь, но если постараться и не бояться обилия китайского языка в окне браузера, то можно что-то и найти. Мы нашли её достаточно быстро где-то здесь. Дальнейшие зарисовки с использованием схемотехники являются вырезками из этой схемы-документа.

По идее, в планшете должно быть достаточно много шин I2C и на порядки больше всяких GPIO, надо только найти нужные, припаяться и притянуться к нужному уровню. К нашему счастью, в планшетах Nexus 7 отсутствует задняя камера, которая как раз использует I2C для управления и два пина (питание и ресет). А нам и надо I2C и 2 GPIO (один для вкл/выкл спящего режима, а второй для прерывания на счёт нового измерения температуры).

Соотнесение реальных внутренностей и схемы показало, что всё не так просто, как в названии планшета. А именно, Существует минимум три версии Nexus 7:

  1. Версия 2013 года не подходит к найденной нами схеме, так как имеет в себе другие процессоры и кучу отличающихся мелких деталей
  2. Версии 2012 года .1 имеет распаянное посадочное место для задней камеры и всё в ней хорошо
  3. Версии 2012 года .2 не имеет распаянного места и припаяться туда значительно сложнее.

Номер правильной шины I2C мы нашли простым перебором с помощью простецкой программы с использованием NDK. Для этого пришлось поставить рутованный Android и chmod колдовством через adb отпустить на волю все I2C шины. В процессе перебора пришлось немного поиграть с адресами на шине, так как некоторые из них были уже зарезервированы и мы получали отлуп при попытке коммуникации. В итоге, оказалось, что на целевой шине больше никого не было.

Интересной деталью стало то, что не все версии Android могут быть одинаково полезны после рутования: в нашем случае, самой последней официальной версией был Android 5.1.1. После его установки и рутования всё вроде было без проблем, вот только доступа у нашей программы к папке /dev всё равно не было. Насильственное изменение прав доступа с использованием adb shell и chmod эффекта не дало. После недолгих раздумий решили откатиться до Android 4.4.4. Повторение такого же процесса рутования сразу дало программе доступ к /dev. Ещё можно отметить, что в adb shell папка /dev на версии 4.4.4 была доступна для чтения и без перехода в super user, в то время как в Android 5.1.1 нет. Вероятнее всего, причина кроется в достаточно больших изменениях по части безопасности ОС при переходе от Android 4 к Android 5 и далее (возможно, это третий пункт по ссылке).

На первой же странице нашей схемы в общем обозрении видно, что есть камера под названием «Rear camera module OV5650».


Там же написовано, что она напрямую подключена к tegra T30L (т.е. главный SoC). Рядом есть линии I2C_CAM_… Поищем…


На странице 9 находится то, что нам нужно. Почти вся страница посвящена фронтальной и задней камерам. Там же есть упоминание, что у камеры есть два пина CAM_RST_5M и PWDN_5M, которые уходят в SoC на GPIO_PBB0 и GPIO_PBB5 соответственно. Кажется — это то, что нам надо. Только найти как туда припаяться, поэтому продолжаем искать…


Ну вот и всё. На этой странице описание FFC разъёма, куда включается камера, в том числе и искомые пины. На нашем изначальном планшете разъём не распаян. Но впоследствии мы найдем другой планшет с разъемом, дабы не мучаться.

Далее след найденных пинов возобновится уже в коде платформы и про это написано в части про драйвер…

Как подрубиться к дебажному UART в аудио выходе и обнаружить, что он не работает

Когда пишешь драйвера и всякое низкоуровневое ПO под линукс (крайне) желательно видеть лог загрузки ядра/системы, так как там загружается в том числе и наш драйвер. И как только что-то идет не так, всё прекращается и почему неизвестно.

Поэтому, покурив интернеты, мы разузнали, что Nexus устройства имеют дебажный UART выведенным через аудио разъём. И работает оно типа само безо всяких программных настроек таким образом:

  • В аудиоразъеме по каналу MIC установлен компаратор, который реагирует на уровень более 3В.
  • В обычном режиме, напряжение на MIC составляет 1.8В-2.9В.
  • Как только уровень превышен, состояние передается на пин, который прерыванием говорит ядру, что на аудио разъеме теперь рулит дебаг.
  • После этого левый и правый каналы становятся RX и TX соответственно, хотя и остаются на уровне 1.8В — потребуется преобразователь.

На радостях был сделан переходник USB-UART -> Audio. Мы его воткнули, включили в консоли Ubuntu minicom, загрузили планшет и… ничего. Вообще. То есть, совсем. Дальнейшие натурные поиски показали только то, что так или иначе, debug uart не включился, так как линии левого и правого каналов не вышли на нулевой уровень напряжения RX/TX. Также пробовали множество команд из fastboot, но ничего не помогло. Единственное, что успокоило нас в конце этой затеи — только информация, что еще один человек пробовал разные Nexus`ы, и на всех, кроме точно такого же планшета UART завёлся, а на нашем — нет. Но было интересно.

Еще более фундаментельным способом было подключение дебажного интерфейса процессора, но в эту сторону не пошли, хотя схема устройства показывала такую возможность.

В итоге, нашим спасением стало предварительное использование Raspberry Pi для вместилища Android. Там дебажный порт работал, это позволило отловить все ошибки и дальше на Nexus было понятно что менять, если ядро не грузится. Статистика показала, что больше всего затяжек по времени было из-за непропаянных пинов GPIO, а также недокументированных особенностей tegra3 в плане разрешения работы с GPIO.

Кстати, для отладки интересно видеть полный лог загрузки, его можно получить c помощью adb bugreport.

Как написать несложный драйвер ядра с I2C, GPIO, прерываниями и фоновыми задачами

Итак, нужно было написать драйвер ядра, который будет рулить устройством через I2C и GPIO, а также отсвечивать в папке /dev каким-нибудь оригинальным именем, так что потом Android middleware сможет обратиться к этому файлу/драйверу и что-нибудь прочитать или записать.

Немного общих особенностей при написании драйвера:

Nexus 7 2012 построен на процессоре Tegra3. Ядро на нем использовано не новое (3.1.ч.ч) и без device tree. А это значит, что всё железо описано Си кодом и находится оно в /kernel/tegra/arch/arm/mach-tegra/

Файл board-grouper-pinmux.c описывает железные конфигурации всех пинов SoC, а также содержит общие функции для их инициализации в закрытой части ядра от nVidia (все функции, начинающиеся словом «tegra» являются реализованы в закрытой части ядра, которая поставляется в бинарном виде). Посмотрим, что нам нужно там поменять

Файл board-grouper-sensors.c содержит регистрацию всяких разных устройств и наиболее общего уровня функции для них (например, управление питанием). Здесь же нам нужно добавить структуру для регистрации нашего устройства драйвером, который будет загружен как часть ядра. Как-то так:

Отдельно надо упомянуть файлы для сборки: KConfig и Makefile.

В KConfig допишем вот такой абзац, который по имени TRICKY_SENSOR (без префикса CONFIG_), созданному в Makefile, учтёт его при сборке. Также, наш драйвер станет виден при использовании make menuconfig.

В итоге, мы получаем следующие файлы для ядра:


Как сделать абстракцию своей железки в Android middleware или использовать существующую

Теперь переходим на уровень выше. Драйвер написан и теперь мы перемещается в user space часть Android, где надо как-то привязаться к драйверу.

Для того чтобы работать со многими реализациями однотипной периферии в Android есть слой middleware (написанный на С/С++), который содержит различные интерфейсы железных абстракций (Hardware Abstraction Level — HAL). И для всяких температурных магнитных и т.п. сенсоров там есть место. Но ограничением этого HAL является то, что его API подразумевает только чтение — что разумно ввиду множества пользовательских программ, которые могут одновременно доступаться к этим устройствам. И если одна поменяет настройки под себя, то для другой это будет подставой. Всё это очень хорошо описано здесь.

И конкретно в части read-only режима работы с сенсорами вот эта цитата из ссылки выше:

Besides sampling frequency and maximum reporting latency, applications cannot configure sensor parameters. For example, imagine a physical sensor that can function both in “high accuracy” and “low power” modes. Only one of those two modes can be used on an Android device, because otherwise, an application could request the high accuracy mode, and another one a low power mode; there would be no way for the framework to satisfy both applications. The framework must always be able to satisfy all its clients, so this is not an option.

There is no mechanism to send data down from the applications to the sensors or their drivers. This ensures one application cannot modify the behavior of the sensors, breaking other applications.

А нам ну очень хочется управлять своим устройством (питание переключать и режим измерения, например) и так как наш сенсор недокументирован официально и работать с ним будет только наша программа, то напишем свой HAL. Вот тут доступным английским написаны основные вещи, так чтобы дальше было понятно что за структуры данных и почему.

Создадим свой модуль железки. Для этого нужно придумать ему ID и сделать структуру, содержащую hw_device_t с описанием модуля, ну и наши производные функции. Google не специфицирует как именно должна выглядеть реализация и интерфейсы на этом уровне, поэтому без оглядки на большого брата можно начинать сеять доброе.

Для сборки модуля понадобится Android.mk файл, где написано такое:

И еще один Android.mk файл уровнем выше, чтобы включить собранную библиотеку в libhardware. Добавляем по имени ID модуля.

На выходе HAL имеем следующие файлы


Как дописать свой системный сервис и куда чего добавить, чтобы он включился и нашёлся

Дальше надо чтобы наш HAL кто-то вызывал. В других частях OC такие вещи делаются с помощью системных сервисов и их менеджеров, которые написаны на Java. Дабы не выбиваться из ряда, напишем еще один. Сервис наш будет учавствовать в следующих файлах:


Как видно из исходников, мы еще не разобрались с уровнем native и подключаться к HAL модулю нужно через JNI. Заодно запилим свой ссылочный тип, который надо будет определить через AIDL, а потом прокинуть из C++ в Java.

Далее в onload.cpp загружаются все JNI части тех сервисов, которым это надо. В том числе, и наш.

Традиционный Android.mk содержит информацию для сборки всех частей, и наш JNI кусок тоже там.

Наш ссылочный тип должен быть создан при помощи AIDL, так как этот язык является средством межпроцессной пересылки данных в Android, да и не только в нем. Так же, для того чтобы его пересылать он должен быть Parcelable, что и показано в листинге дальше:

Сам сервис и его менеджер крайне просты и незатейливы, не буду их тут приводить, потом в ссылках будёт всё, чтобы посмотреть или потыкать.


Чтобы сервис заработал, его надо включить в ServiceManager через SystemServer вот тут.


Чтобы сделать сервис доступным на стороне приложения, его менеджер надо добавить в context (в блок статической загрузки).


Сам registerService выглядит в Android 4.4.4 так:


Как прорваться через SEAndroid/SELinux дописав свои правила

Платформенно-зависимая часть скрипта init, который обрабатывает почти самый ранний запуск всей системы.


Пропишем также права и разрешения самого файла устройства в ueventd.


А вот дальше… надо написать всяких SELinux правил, чтобы наш сервис мог быть загружен системным сервером (куда мы его уже добавили в коде), а также правила, позволяющие нашему сервису читать и писать символьное устройство, коим является наш драйвер. Я основывался, в основном, на примерах из Brillo. Не уверен, что я проникся и понял всё, но попробуем по порядку:

Как проверить — напишем простой апп

Надо бы еще как-то проверить, что оно всё будет работать. Можно, конечно, и через adb shell пялиться в logcat, но не все почему-то рады такому результату, поэтому добавим в кастомную OC еще и встроенное приложение. Конечно, встроенное. Кому оно нужно, кроме этого планшета. В исходниках положим в packages/apps/TrickyDemo, а также в build/target/product/core.mk укажем его с списке предустановленных.

Процесс скачивания довольно долгий, так как скачано будет около 50Гб.

Далее скачиваем дополнительные бинарники от производителя (в корень папки с исходниками Android OS) для версии 4.4.4 KTU84P в нашем Nexus`е:


Распаковываем и извлекаем содержимое бинарников:


Удалить предыдущую сборку можно командой:


После сборки конечные образы будут находиться в папке out/target/product/grouper (system.img, recovery.img, ramdisk.img, userdata.img). Apk-файл приложения находится в out/target/product/grouper/obj/APPS/Jdts160demo_intermediates/package.apk.

Создание и заливка образа через fastboot. Создаем .zip-архив с образами, которые нужно залить во FLASH планшета (по умолчанию это boot.img, system.img, recovery.img, userdata.img, ramdisk.img), а также файлом android-info.txt с содержанием:


Если версия загрузчика по умолчанию не та, то можно скачать готовый Factory image образ отсюда и выполнить скрипт flash_all.sh из него. Его же можно использовать как базовый образ для заливки своих изменений.

Для обновления boot.img нужно установить тулзу abootimg:


В команде для abootimg можно еще указать параметры загрузки, в т.ч. и консоль, но она всё равно не работает, поэтому хрен на неё.

Переходим в режим fastboot. Варианты:

adb reboot bootloader (если планшет включен, подключен по usb и авторизован adb)
если выключен, то включить, удерживая кнопки питания и громкость.

Проверяем доступность fastboot (usb подключен и usb debugging включен).


Далее выполняем список команд. Совсем необязательно удалять всё, можно только изменяемые части:


Как понять, что в предыдущих пунктах что-то не так

На самом деле, в процессе выполнения задачи особо не было времени разбираться в деталях глубоко и честно и путь был пройден по камушкам, найденным на просторах сети. Уже после того как задача была закрыта начался анализ и дочитывание того что и как и где можно было сделать иначе. Получился небольшой список:

    Изменения в ОС рекомендуется делать в папке devices/asus/grouper/. написанием множества overlays, а не напрямую в структуре ядра и ОС, которые будут учтены при сборке. Я так до конца и не выснил, можно ли там городить ту же структуру, что в основных исходниках, или есть какие-то определенные требования.


Контроллер YAM_TOUCH_I2C_SIMPLE предназначен для подключения по USB емкостных тачей со встроенным I2C контроллером от:
— FocalTech FT5206/FT5302/FT5306/FT5406/FT5606
— GOODIX GT801/GT811/GT911/GT927x/GT928
— Synaptics S7300B
— VTL CT360/CT363
— Atmel MXT1386
— Ilitek ILI2511

YAM_TOUCH_I2C_SIMPLE так-же может являться и внутрисхемным программатором контроллера дисплея на чипе RTD2660H/RTD2662.

Контроллер поддерживает до 5 одновременных касаний.

Работает на андроид устройствах, имеющих поддержку тачпанели от Cypress, они, как правило уже вкомпилены в ядро.
Под windows7 и выше не требуется никаких драйверов.
Обновление ПО контроллера производится путем нажатия кнопки на плате и подключения к компьютеру.
Для YAM_TOUCH_I2C_SIMPLE обновление ПО производится с помощью оболочки под windows.

Тестовая программа проверки мультитача под windows.

Под 6 пиновые разъемы с шагом 0.5мм и стандартной распиновкой.
Или любые другие разъемы, для этого на плате предусмотрены точки для пайки шлейфа или для установки разъема.
Размеры платы: 27x40mm
новая версия платы V5:



Для подключения любых нестандартных шлейфов на 6pin предусмотрен переходник:


Рабочие тестовые тачпанели:
первая — 9" 233x141 габариты, 199x112 активная область
вторая — 7" 187x112 габариты, 155x87 активная область
третья — 10.1" 248x150 габариты, 224x127 активная область
четвертая — 7" 166x104 габариты, 156x90 активная область
пятая от Chalk-а — 7" 162x108 габариты, 154x96 активная область
шестая FPC-TP070323(M742S)-01 — 7" 165x98 габариты, 154x89 активная область
седьмая MCF-101-1093-V3 от Lenovo Yoga B8000 — 10" 259x161 габариты, 218x136 активная область
восьмая AD-C-800033-1-FPC от Newsmy — 8" 191x121 габариты, 174.5x105 активная область
девятая YDT1387-A2 — 8" 192x116 габариты, 180x103 активная область (под ZJ080NA-08A)
десятая TOPSUN M1003 — 10.1" 251x155 габариты, 223x125 активная область
одиннадцатая от Acer Iconia Tab A500 — 10.1" 255x158 габариты, 217x136 активная область

Добавлена поддержка емкостных тачей от магнитол с 5-ю кнопками слева:



К сожалению под андроидом кнопки слева по USB не работают, необходимо использовать приложение Serial Manager и любой UART конвертор.
Видео по программированию сенсорных кнопок ниже.

ВНИМАНИЕ:
на некоторых тачпанелях вместо сигнала RST выведен WUP (WAKE) и они не работают, необходимо просто выпаять R10 — он отмечен на фото.

Видео работы под андроид тв-бокс

Видео работы с планшетом на windows 8.1

Видео работы с планшетом на windows 8.1 и тачем на GT911

Видео проверки работы на GT928

Видео проверки работы на FT5606

Видео работы на PIPO X8 обновленном до windows 10

Видео работы на мультитач панели от Teclast X98 Air II на GOODIX GT9271

Видео работы с мультитачем PIPO Max-M9 на CT363 чипе от VTL

Видео работы с GT801 на 8" таче AD-C-800033-1-FPC

Видео работы с мультитачем от Acer Iconia Tab A500 на MXT1386 чипе от Atmel

Программирование сенсорных кнопок на мультитач панелях

Софт:
— Графическая оболочка для обновления ПО YAM_TOUCH_I2C_SIMPLE_UPDATE_V0102.zip
— Прошивки с поддержкой 5, 2 и 1 касания для всех панелей (1 касание для старых версий андроида и windows XP) touchi2csimple.zip
— Прошивки с поддержкой 5, 2 и 1 касания для панелей от магнитол на GT911 touchi2csimple_gt911_head_unit.zip
— IDC файл чтобы не было курсора для прошивки с поддержкой 1 касания. Файл Vendor_ffff_Product_0101.zip (после распаковки) положить в /system/usr/idc и выставить права 644

Программирование:
— Описание калибровки SETUP.pdf
— Режим работы под windows8 и далее: нажать кнопку, дождаться 4-го зажигания светодиода, отпустить кнопку.
— Режим работы в андроиде и под windows7: нажать кнопку, дождаться 5-го зажигания светодиода, отпустить кнопку.
— Сброс параметров в состояние по умолчанию: нажать кнопку, дождаться 9-го зажигания светодиода, отпустить кнопку.

Обновление ПО:
— Отключить контроллер от USB;
— Нажать кнопку на плате;
— Держа кнопку подключить USB.
— Далее через ПО оболочки загрузить нужную прошивку.

Параметры по умолчанию:
— режим работы в андроиде

Внутрисхемный программатор контроллера дисплея на чипе RTD2660H/RTD2662


Прошивка и оболочка программатора YAM_RTDPROG.zip
Подключение к контактам за FPC разъемом (см. фото контроллера):
1 — GND
2 — SDA
3 — SCL

Видео по обновлению ПО контроллера:

Видео перепрошивки контроллера дисплея:

Читайте также: