PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > MP3Car ТехИнфа > AndroidCar > Дополнительные устройства

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2014, 11:04   #1
ak1976
Пользователь
 
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
ak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to all
По умолчанию Подключение штатного монитора 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
ak1976 вне форума   Ответить с цитированием
Старый 02.12.2014, 17:05   #2
-=zds=-
Старший Пользователь
 
Регистрация: 06.04.2009
Возраст: 40
Город: Владивосток
Регион: 25
Машина: Toyota CAMRY
Сообщений: 636
-=zds=- is a jewel in the rough-=zds=- is a jewel in the rough-=zds=- is a jewel in the rough
По умолчанию

Скажите а в какой Toyota вы это реализовали, и можно фото посмотреть? Видел андроид на AV входе, скажу честно, полное Г, хотелось бы посмотреть на сколько лучше у вас все показывает.
__________________
Chaser продал
forester продал
Legacy продал
Impreza GH8 идет постройка... Продал, комп забрал...
Toyota Camry 2015 07.09.18 Продал комп отдал с машиной, следующий будет полностью с ноля!
-=zds=- вне форума   Ответить с цитированием
Старый 03.12.2014, 12:31   #3
ak1976
Пользователь
 
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
ak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to all
По умолчанию

Делал все это на toyota harrier hybrid 2008г. Фотографии поищу, если не найду завтра в машине сделаю. Через AV все действительно очень плохо. Через rgbs намного лучше. Жалко что раньше не знал насколько лучше - купил бы gvif интерфейс на год раньше.
ak1976 вне форума   Ответить с цитированием
Старый 03.12.2014, 17:25   #4
vladj
Гуру
 
Аватар для vladj
 
Регистрация: 03.05.2011
Возраст: 72
Город: Верещагино
Регион: 59
Машина: Toyota-Echo
Сообщений: 2,045
vladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond reputevladj has a reputation beyond repute
По умолчанию

А тач работает? Если да, то как его к приставке привязал ?
__________________
DN2800MT, DDR3-4Gb, SSD -30 Gb, Lilliput FA1000 - по HDMI, Win-8 .
vladj вне форума   Ответить с цитированием
Старый 04.12.2014, 15:26   #5
Vova
Пользователь
 
Регистрация: 07.04.2008
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 52
Vova is on a distinguished road
По умолчанию

Я вот никак не могу понять, почему у меня изображение в два раза вытянуто, я так полагаю, что при использовании режима interlace ни только частота строк уменьшается в два раза, но и количество линий...Тогда исходя из этого, чтобы вывести rgbs с железки на android, нужно либо указывать 800х240 либо вообще 400х240...Пока эксперименты продолжаются, удалось получить хоть чтото...но наложенное друг на друга...
Vova вне форума   Ответить с цитированием
Старый 05.12.2014, 04:32   #6
ak1976
Пользователь
 
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
ak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to all
По умолчанию

Цитата:
Сообщение от vladj Посмотреть сообщение
А тач работает? Если да, то как его к приставке привязал ?
Тач пока не работает, но есть идее по его подключению.
Голова шлет навигации через AVCLan информацию о нажатии на тач. Я собираюсь получать эти данные через свой адаптер и с помощью друго контроллера эмулировать световое перо (правда, тут придется прошивку поправить).
Все это делать на одном конроллере я не хочу, потому как думаю производительности ардуины не хватит на обе задачи, а портировать обе платы на другую платформу будет дороже, чем стоит вторая ардуина.
ak1976 вне форума   Ответить с цитированием
Старый 05.12.2014, 04:43   #7
ak1976
Пользователь
 
Регистрация: 03.06.2008
Возраст: 48
Город: Хабаровск
Регион: 27
Машина: 2003\Toyota\Ipsum
Сообщений: 55
ak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to allak1976 is a name known to all
По умолчанию

Цитата:
Сообщение от Vova Посмотреть сообщение
Я вот никак не могу понять, почему у меня изображение в два раза вытянуто, я так полагаю, что при использовании режима interlace ни только частота строк уменьшается в два раза, но и количество линий...Тогда исходя из этого, чтобы вывести rgbs с железки на android, нужно либо указывать 800х240 либо вообще 400х240...Пока эксперименты продолжаются, удалось получить хоть чтото...но наложенное друг на друга...
Наткнулся сейчас на интересный проект Low Resolution Modeline Calculator
Попробуйте им modeline посчитать как нибудь так
lrmc 400 234 30 -cga
ak1976 вне форума   Ответить с цитированием
Старый 05.12.2014, 19:08   #8
Vova
Пользователь
 
Регистрация: 07.04.2008
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 52
Vova is on a distinguished road
По умолчанию

Как ни странно но этот калькулятор помог, вижу изображение с правильной частотой, без всяких перекрытий и наложений, но опять проблема, оно вытянуто, меняю размер экрана с помощью am display-size и делаю меньше, но изображение уменьшается и получается как бы по центру того что было вытянуто, и у нового изображения я вижу только верх, т.к. его центр где-то внизу за нижним краем экрана.
Так вот вопрос, может кто знает как поднять саму картинку вверх?

Правда режим подбирал для 800х480 и он мне выдавал 800х240 .....

Последний раз редактировалось Vova; 05.12.2014 в 20:43.
Vova вне форума   Ответить с цитированием
Старый 05.12.2014, 22:43   #9
slden
Старший Пользователь
 
Регистрация: 05.12.2006
Город: Тула
Регион: 71
Машина: Range Rover\Acura MDX
Сообщений: 177
slden is just really niceslden is just really niceslden is just really niceslden is just really nice
По умолчанию

Цитата:
Сообщение от Vova Посмотреть сообщение
Правда режим подбирал для 800х480 и он мне выдавал 800х240 .....
К сожалению нет инфрмации - что вы пытаетесь настроить и на чем видеть результат...
Как правило, контроллеры стоковых мониторов автомобильных навигационных систем начала текущего века относятся к классу WQVGA и работают в режиме interlaced. Далеко не все графические подсистемы современных PC способны поддерживать подобные режимы. В некоторых случаях удается синхронизировать OEM WQVGA контроллер в прогрессивном режиме. При этом, фактические тайминги находятся в зоне 800x240.
Для примера, рабочие настройки графики nvidia для OEM 7 inch 480x234:

__________________
Мои проекты: Range Rover
Acura MDX 1th gen & Honda Accord & Acura MDX 2010
slden вне форума   Ответить с цитированием
Старый 08.12.2014, 13:05   #10
Vova
Пользователь
 
Регистрация: 07.04.2008
Возраст: 39
Город: Москва
Регион: 77, 97, 99, 177
Сообщений: 52
Vova is on a distinguished road
По умолчанию

Проблема оказывается в следующем, если я изменяю 640х480 то у меня получается по высоте картинка нормальная, но по ширине уже, как бы 4:3, а если я меняю 800х480, то по ширине нормальная, а по высоте больше, соответственно и с другими разрешениями в таком же стиле...
Изменения производил во всех перечисленных выше файлах (искал поиском)...
Но при загрузке, пока идет надпись андройд, все ок, получается где-то что-то надо еще изменять именно в исходниках андройда, т.к. получается в исходниках ядра все ок.
Vova вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 10:03.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot