02.12.2014, 11:04 | #1 |
Пользователь
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
|
Подключение штатного монитора Toyota к android
Данная тема является развитием аналогичной на соседнем форуме, только применительно к платформе Android.
Судя по моим ЛС данный вопрос достаточно актуален и интересен не только мне. Да и самому, чтобы не забыть, желательно где-то записать Сразу хочу выразить благодарность пользователю KiLLWarez c 4pda.ru, от него я узнал о самой возможности реализовать нестандартное разрешение под android. Он же рассказал мне ключевые моменты технологии. Зачем все это нужно. С помощью изменения прошивки удалось реализовать вывод через VGA разрешения 800*480 и подключить Mele A2000 к штатному монитору Toyota Harrier Hybrid 2008 г. (через GVIF адаптер). Изображение на порядок лучше, чем при подключении через AV вход. Для начала просто скопирую свой ответ из ЛС про реализацию нестандартного разрешения на Mele A2000 (Allwinner A10, 512Mb, VGA). Если тема будет интересна, постараюсь расширить этот пост деталями. Прошивка собиралась из исходников и по инструкции из этого поста. Все выполнялось на Ubuntu 12.04. Правил файлы ./lichee/linux-3.0/drivers/video/sun4i/disp/de_bsp/de/disp_lcd.c ./lichee/boot/boot1/driver/drv_de_hdmi/de_bsp/de/disp_lcd.c ./lichee/boot/boot1/driver/drv_de/de_bsp/de/disp_lcd.c ./lichee/linux-3.0/drivers/video/sun4i/disp/de_bsp/de/disp_clk.c ./lichee/boot/boot1/driver/drv_de_hdmi/de_bsp/de/disp_clk.c ./lichee/boot/boot1/driver/drv_de/de_bsp/de/disp_clk.c ./lichee/linux-3.0/drivers/video/sun4i/disp/de_bsp/de/ebios/de_lcdc.c ./lichee/boot/boot1/driver/drv_de_hdmi/de_bsp/de/ebios/de_lcdc.c ./lichee/boot/boot1/driver/drv_de/de_bsp/de/ebios/de_lcdc.c ./android/system/core/init/init_disp.c В файлах disp_lcd.c и init_disp.c для одного из штатных разрешений поправил параметры. Взял разрешение 1360x768, правил соответственно на 800x480 В файлах de_lcdc.c правятся тайминги VGA сигнала. За основу я брал вот такой Modeline (подбирал его с помощью PowerStrip, на компьютере с Windows) # "800x480" 29,664 800 826 898 958 480 542 545 575 +hsync +vsync Для понимания как все это перевести в термины (ht, hbp, vt, vbp, vspw, hspw) очень полезная статья http://skif.bas-net.by/bsuir/admin/node85.html у меня получились вот такие параметры cfg.src_x = cfg.scl_x = cfg.out_x = 800;//HA cfg.src_y = cfg.scl_y = cfg.out_y = 480;//VA cfg.ht = 958;//HT-1=-1 horizontal total time cfg.hbp = 132;//HS+HBP-1=+-1 back porch cfg.vt = 1150;//VT*2=*2 vertical total time cfg.vbp = 33;//VS+VBP-1=+-1 vertical back porch cfg.vspw = 3;//VS-1=-1 vertical sync pulse width in pixels cfg.hspw = 72;//HS-1=-1 horizontal sync pulse width тут есть тонкость, что cfg.vt - это vertical total time умноженный на 2 cfg.vbp - vertical back porch умноженный vertical sync pulse cfg.hbp - аналогично. формулы в комментариях написаны. какой потаенный смысл в формуле типа HS-1=-1 я так и не понял, поставил туда просто ширину синхросигнала. можно еще управлять полярностью синхросигналов через параметр cfg.io_pol значения я сейчас точно не вспомню, как то так по моему cfg.io_pol = 0x04000000; // +hsync +vsync cfg.io_pol = 0x00000000; // -hsync -vsync или наоборот, в общем оказалось, что у меня гораздо лучше изображение при стандартном cfg.io_pol = 0x00000000; как получить другие варианты полярности синхросигнала по моему тут нужно искать http://linux-sunxi.org/Display_Contr...#LCD_Registers там определенные биты в регистре нужно cfg.io_pol нужно выставлять. ну и остался файл disp_clk.c в нем описывается частота тактового генератора, или, если точнее, частота выдачи точек на монитор у меня там используются следующие значения { 29600000 , 1 , 29600000, 222000000 , 0 }, // DISP_VGA_H800_V480 // первое число LCDx_CH1_CLK2 третье оно же четвертое PLL_CLK попробую объяснить как их получить. Сразу ссылку на доки http://linux-sunxi.org/Clock_Control_Module Для начала нам нужно определить какая частота нам нужна. Берем из Modeline частоту в МГц 29,664 В принципе это и длжно быть значение LCDx_CH1_CLK2, но т.к. A10 не умеет генерировать произвольную частоту нужно подобрать ближайшую из тех, что он умеет. Из доков формулы LCD[01]_CH1_CLK2 = PLL_CLK / M, где M может быть от 1 до 16. Как я понял PLL_CLK это PLL3 из доков, т.е. он умеет выдвать частоту из ряда 3МГц * M, где M может быть от 9 до 127 вот подбирая значения M для этих двух частот и нужно получить LCDx_CH1_CLK2 наиболее близкий к требуемому. Чтобы было проще подбирать, а написал небольшой скрипт. Ему нужно задать нужную частоту в Гц, он выдаст пары значений PLL_CLK и LCDx_CH1_CLK2 отсортированные по наименьшей разнице с заданным значением. Правда если задать ему 29664000 скрипт не выдаст пары 29600000, 222000000. Связанно это с тем что изначально я использовал в 2 раза меньшую частоту 14,832 Мгц Для нее скрипт выдает пару 222000000, 14800000 точно уже не скажу почему взял не самый верний результат, скорее всего потребовалось немного поднять частоту. Потом я выяснил, что если взять частоту в 2 раза выше, то изображение на мониторе получается качественней, и просто увеличил 14800000 в два раза, и не стал подбирать новые пары. Так же выяснилось что mele в качестве внутреннего разрешения (то в котором изначально формируется изображение, можно посмотреть в antutu, далее при выводе на vga, hdmi оно просто масштабируется до требуемог). Так вот в качестве внутреннего разрешения используется разрешение режима который прописан в script.bin параметр screen0_output_mode По умолчанию там стоит 1280*720, мелковато получается. Я поставил разрешение поменьше. В качестве смесителя синхросигнала использовалась схема на 555ЛП5 с соседнего форума На двух резисторах смеситель синхросигналов не заработал. Оказалось причина в том, что mele выдает синхроимпульсы амплитудой около 3В, сравнивал с обычным компьютером, там амплитуда синхроимпульсов в районе 5В. Похоже 3В моей голове не хватало. Т.е. смеситель на 555ЛП5 у меня по большому счету только уровень синхроимпульсов поднимает, ну и заодно смешивает синхросигналы. С обычного компьютера все работало и от двух резисторов Пробовал еще изменять разрешение на HummingBird A31 в нем достаточно script.bin исправить. Файл прошивки и исправленные файлы исходников для нее для Allwinner A20, cubietruck (Правилось разрешение 640x480 - переделал его в 800x480) https://yadi.sk/d/joxxW73FmqNx8 Последний раз редактировалось ak1976; 12.01.2016 в 16:17. Причина: добавлена прошивка для cubietruck |
02.12.2014, 17:05 | #2 |
Старший Пользователь
Регистрация: 06.04.2009
Возраст: 40
Город: Владивосток
Регион: 25
Машина: Toyota CAMRY
Сообщений: 636
|
Скажите а в какой Toyota вы это реализовали, и можно фото посмотреть? Видел андроид на AV входе, скажу честно, полное Г, хотелось бы посмотреть на сколько лучше у вас все показывает.
__________________
Chaser продал forester продал Legacy продал Impreza GH8 идет постройка... Продал, комп забрал... Toyota Camry 2015 07.09.18 Продал комп отдал с машиной, следующий будет полностью с ноля! |
03.12.2014, 12:31 | #3 |
Пользователь
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
|
Делал все это на toyota harrier hybrid 2008г. Фотографии поищу, если не найду завтра в машине сделаю. Через AV все действительно очень плохо. Через rgbs намного лучше. Жалко что раньше не знал насколько лучше - купил бы gvif интерфейс на год раньше.
|
03.12.2014, 17:25 | #4 |
Гуру
Регистрация: 03.05.2011
Возраст: 73
Город: Верещагино
Регион: 59
Машина: Toyota-Echo
Сообщений: 2,045
|
А тач работает? Если да, то как его к приставке привязал ?
__________________
DN2800MT, DDR3-4Gb, SSD -30 Gb, Lilliput FA1000 - по HDMI, Win-8 . |
04.12.2014, 15:26 | #5 |
Пользователь
Регистрация: 07.04.2008
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 52
|
Я вот никак не могу понять, почему у меня изображение в два раза вытянуто, я так полагаю, что при использовании режима interlace ни только частота строк уменьшается в два раза, но и количество линий...Тогда исходя из этого, чтобы вывести rgbs с железки на android, нужно либо указывать 800х240 либо вообще 400х240...Пока эксперименты продолжаются, удалось получить хоть чтото...но наложенное друг на друга...
|
05.12.2014, 04:32 | #6 |
Пользователь
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
|
Тач пока не работает, но есть идее по его подключению.
Голова шлет навигации через AVCLan информацию о нажатии на тач. Я собираюсь получать эти данные через свой адаптер и с помощью друго контроллера эмулировать световое перо (правда, тут придется прошивку поправить). Все это делать на одном конроллере я не хочу, потому как думаю производительности ардуины не хватит на обе задачи, а портировать обе платы на другую платформу будет дороже, чем стоит вторая ардуина. |
05.12.2014, 04:43 | #7 | |
Пользователь
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
|
Цитата:
Попробуйте им modeline посчитать как нибудь так lrmc 400 234 30 -cga |
|
05.12.2014, 19:08 | #8 |
Пользователь
Регистрация: 07.04.2008
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 52
|
Как ни странно но этот калькулятор помог, вижу изображение с правильной частотой, без всяких перекрытий и наложений, но опять проблема, оно вытянуто, меняю размер экрана с помощью am display-size и делаю меньше, но изображение уменьшается и получается как бы по центру того что было вытянуто, и у нового изображения я вижу только верх, т.к. его центр где-то внизу за нижним краем экрана.
Так вот вопрос, может кто знает как поднять саму картинку вверх? Правда режим подбирал для 800х480 и он мне выдавал 800х240 ..... Последний раз редактировалось Vova; 05.12.2014 в 20:43. |
05.12.2014, 22:43 | #9 |
Старший Пользователь
Регистрация: 05.12.2006
Город: Тула
Регион: 71
Машина: Range Rover\Acura MDX
Сообщений: 177
|
К сожалению нет инфрмации - что вы пытаетесь настроить и на чем видеть результат...
Как правило, контроллеры стоковых мониторов автомобильных навигационных систем начала текущего века относятся к классу WQVGA и работают в режиме interlaced. Далеко не все графические подсистемы современных PC способны поддерживать подобные режимы. В некоторых случаях удается синхронизировать OEM WQVGA контроллер в прогрессивном режиме. При этом, фактические тайминги находятся в зоне 800x240. Для примера, рабочие настройки графики nvidia для OEM 7 inch 480x234: |
08.12.2014, 13:05 | #10 |
Пользователь
Регистрация: 07.04.2008
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 52
|
Проблема оказывается в следующем, если я изменяю 640х480 то у меня получается по высоте картинка нормальная, но по ширине уже, как бы 4:3, а если я меняю 800х480, то по ширине нормальная, а по высоте больше, соответственно и с другими разрешениями в таком же стиле...
Изменения производил во всех перечисленных выше файлах (искал поиском)... Но при загрузке, пока идет надпись андройд, все ок, получается где-то что-то надо еще изменять именно в исходниках андройда, т.к. получается в исходниках ядра все ок. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
Опции темы | Поиск в этой теме |
|
|