Досліджуємо електро-кишківник MIB2 дисплея

Опубліковано: 11 травня 18:33
Я їжджу на Audi A4 Allroad (B9)
Київ, Україна

Відкриваємо ящик Пандори


Колись в клубі ваговодів-аудістів трапилось фото, на якому хтось спробував підключити рестовий тач-дисплей на дорест мультимедію. Виглядало це приблизно ось так:


рест дисплей на доресті


Згодом дізнався про існування китайської коробочки (по ціні в $380), яка конвертує сигнал з дореста і виводить збільшену картинку для реста:


магічна коробка


Стало цікаво розібратись, як ця магія влаштована. Щоб не ковиряти свій автомобіль - зібрав bench setup, тобто MMI на столі. З розбірки приїхав дисплей і mib2h юніт. Пізніше - відрізок quadlock конектора та обрізки LVDS кабелів, щоб все підключити більш-менш цивільно. Спойлер: ще пізніше замовив цілу косу передньої панелі. Бо економити на проводах - це як економити на гальмах.


розпіновка quadlock part 1


розпіновка quadlock part 2


Схема підключення дисплею

Розпіновка LVDS кабеля на схемі вище непроста, не вийде запаяти обрізки по кольору один до одного, та й повертати роз'єм на 90 град не допоможе. 
Для розуміння правильної пайки малякаємо підказку:


підказка для моїх обрізків LVDS кабеля


Напаяв робочий кабель з обрізків, потрібен лише 1 канал!


Bench setup, тиждень тиші


З просторів тирнетів дізнався, що для запуску систем по CAN-шині потрібні дані віртуальної шини запалення - Terminal 15.


Потрібний CAN пакет зі статусом запалення


Не проблема: берем мікроконтролер, приліпляємо фізичний CAN-модуль, програмуємо, граємо з CRC, програємо, ще раз граємо - і ось уже по шині літають потрібні фрейми кожні 100 мс.


срали-мазали, але працює


Підключився до UART MMX, щоб бачити, що відбувається. По логах система стартувала, але чогось їй не вистачало - і вона просто йшла в сон. Тиждень безуспішних страждань. Вирішив все ж докупити блок керування.

Коса передньої панелі вже була придбана, тому блок підключився запросто по рідних конекторах. І о диво - панель стартанула одразу.


алілуя, хоча б тепер знаємо, що сетап робочий:)


Бо ВАГ передбачили: якщо чогось бракує - воно не запуститься, як би ти не старався. Особливо, якщо ти старався.


1024 на 480, і ні пікселем більше

Тепер - як взагалі працює вивід на дисплей і що там можна змінити.

MIB2 побудований на Snapdragon 602A з графічним ядром Adreno 320. Він рендерить інтерфейс і через вбудований display-контролер подає сигнал на фізичні виходи. Виходів два: один на головний дисплей через серіалайзер DS90UH929Q, другий на приладову панель через DS90UH927Q. Обидва просто перетворюють сигнал у FPD-Link III для передачі по кабелю - обробку зображення вони не роблять.

Тут починається весело. Є два абсолютно різних поняття, які легко переплутати.

Перше - розмір framebuffer'а. Його можна крутити через конфіги і через власноруч створений dm_force_res.

Друге - фізичний timing сигналу, який контролер видає на виходах. А ось це жорстко прописано в qcdisplaycfg.xml: частота пікселів, синхроімпульси, паузи. Саме цей файл визначає, що на виході завжди буде 1024x480.

Проблема в тому, що файл лежить у read-only розділі, який завантажується разом з ядром QNX ще до того, як стають доступні writable розділи. Тобто фізично змінити його без перепакування boot-образу неможливо. 

Тому коли до виходу MIB2 підключається панель 1540x720, вона отримує сигнал з таймінгами 1024x480. Але є додатковий нюанс: у доресті в LVDS кабелі живий лише один канал, другий не використовується. У ресті - живі обидва.


серіалайзер на доресті (ліворуч) та десеріалайзер на ресті (праворуч)


Тому панель намагається малювати сигнал не туди, не так і не з тими тимінгами - і отримує подвоєне зображення з пропуском рядків. Для підтвердження теорії розкрив рестовий дисплей: всередині DS90UH948Q, двоканальний FPD-Link III. Все сходиться.


нутрощі рестового дисплею, бачимо той самий десеріалайзер


Єдине живе рішення - поставити між MIB2 і панеллю окремий апаратний скалер з десеріалайзером і серіалайзером. Ланцюжок: DS90UH928 -> TW8844 -> DS90UH947. Приймаємо сигнал з MIB2 як є, масштабуємо до потрібної роздільної здатності, і вже коректний сигнал подаємо на панель. HDCP формально присутній, але дуже ймовірно деактивований - бо це VAG, і слова «секʼюріті» та «MIB2» в одному реченні зустрічаються рідко.

Знайти ці мікросхеми в Китаї - не проблема. Єдине завдання - розвести плату. Місяць безперервної роботи по вечорах. Чи воно мені треба? Не знаю. Але ідея гарна - і це найгірше, що з нею можна зробити.


Тачскірн: теоретична теорія і вологі мрії


Виявилось, що рестовий дисплей відправляє CAN-пакети про взаємодію з тачскрином. То, можливо, можна прокинути ці дані прямо в MIB2?

Архітектура така. У MIB2 уже є dio_manager, який конвертує локальні touch-події з блоку керування в iAP2 HID reports і AA Input messages. Тобто стек local touch -> CarPlay/AA вже існує і працює. Якщо вкинути подію на рівні local touch input - і CarPlay, і Android Auto автоматично проб'ють її в активну сесію без жодних модифікацій протоколу. Безкоштовно. Майже.

Нюанс простий і красивий: CAN читає IOC - окремий мікроконтролер MIB2, який займається power management, шинами і клемами. А інжектити touch треба на MMX - головному application-процесорі. Тобто ліва рука читає те, чого права не бачить. Класична німецька архітектура: усе на місці, просто не з'єднано.

Тому ця глава - теоретична. Поки що.


Чи варто продовжувати дослідження і зайнятись виготовленням плати - питання відкрите.

4 0 1

Коментарі

Щоб залишати коментарі, потрібно авторизуватись.
Я їжджу на Audi A4 Avant (B9)
Як допилювати - то вже із можливістю повісити нормальну таку плазму, нафіг той маленькій екранчик
ЗІ: без шуткав - рівень збочення вражає. Я правильно розумію, що в доресті можуть існувати одночасно тач і "аналогове" керування?
13 травня 09:34
Я їжджу на Audi A4 Allroad (B9)
Chegevarr
Як допилювати - то вже із можливістю повісити нормальну таку плазму, нафіг той маленькій екранчикЗІ: без шуткав - рівень збочення вражає. Я правильно розумію, що в доресті можуть існувати одночасно тач і "аналогове" керування?
Chegevarr, якщо все ж якось вийде прокинути потрібні пакети - так, вийде мати одночасно два варіанти керування. Але це стосується лише карплея/аа. Та й не бачу сенсу в тачскріні для рідного меню авто
13 травня 11:41
Я їжджу на Audi A4 Avant (B9)
GreenPanda
Chegevarr, якщо все ж якось вийде прокинути потрібні пакети - так, вийде мати одночасно два варіанти керування. Але це стосується лише карплея/аа. Та й не бачу сенсу в тачскріні для рідного меню авто
GreenPanda, та взагалі дорестова менюха, як на мене, до тача не прилаштована. А в карплеї дійсно було б непогано хоча б зум юзати не через ті "милиці", що пропонує ваг
1
13 травня 11:51
Заберіть в нього ті речовини, дайте хлопу пожити нормальне життя)

Нічого не зрозумів- але дуже цікаво. Краса й годі)
3
12 травня 00:02