Здравствуйте. Возникла задача подключить указанную tft панель к киту. Шлейф сделан, подключен, осталось настроить линукс и проверить (особенно правильность шлейфа). Читаю форум, но может неправильно формулирую запрос, не нахожу хотя примерного алгоритма настройки lcd.
Пока сделал следующее:
1. В файле at91sam9g-devices.c раскомментировал строки LCDDPWR и LCDCC
2. Посмотрел в файле board-sam9m10g45ek.c на структуры, описывающие различные видеорежимы, но так и не догнал, где прописывать частоту панели, тайминги.
При загрузке вижу строки:
atmel_lcdfb atmel_lcdfb.0: backlight control is not available
atmel_lcdfb atmel_lcdfb.0: 255KiB frame buffer at 73900000 (mapped at ffa00000)
atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00500000 (mapped at c4818000), irq 23
попытка записать что-либо в /dev/fb0 ни к каким видимым изменениям не приводит.
видел тему, где sasamy вскользь упоминал, что сабж - это тупая панель, но сейчас даже этой темы не наблюдаю(
Спасибо за ответ. Эту структуру видел, но не совсем понятно, как провести соответствие между ней и данными из даташита контроллера.
1. pixclock KHZ2PICOS - я так понимаю, что это тактовая частота панели? Если да, то как точно рассчитать это значение? Эмпирически я, конечно, почитал соотношение по другим структурам, но это не совсем корректно, как мне кажется? Например, у меня частота 6,4 МГц.
2. hsync_len - количество "пустых" пикселей до начала вывода реальной строки?
3. vsync_len - количество "пустых" строк?
4. непонятны параметры *margin. Это отступы, чтобы не пропадали крайние пиксели, как у некоторых происходит?
5. Как быть с сигналом DEN панели? Его установка - задача lcd-контроллера?
6. У меня матрица подключена в режиме RGB24, как это отразить в настройках?
7. Какие-то дополнительные параметры требуется прописывать в этих двух структурах?
Спасибо.
http://www.atmel.com/Images/doc32105.pdf
3.6.1 Registering the LCD controller as platform device
Table 3-4. Video mode configuration structure members
Figure 3-2 Display timings
спасибо, первая ссылка крайне полезная. по второму документу я и пытаюсь настраиваться.
попробовал скомпилировать новое ядро. но, к сожалению, реакции на запись в /dev/fb0 нет. Выставил 32 бита на пиксель - увидел изменение размера fb.
Если некорректно выставлены параметры margin*, то изображение должно быть, пусть и некорректное?
Куда еще глянуть в программной части, прежде чем начинать усиленно проверять распиновку шлейфа?
еще смущают эти две строки
atmel_lcdfb atmel_lcdfb.0: 300KiB frame buffer at 73980000 (mapped at ffa00000)
atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00500000 (mapped at c4818000), irq 23
как это правильно трактовать? два отдельных фб по разным адресам (вроде так и должно быть при включенном DMA)? или что-то иное?
Но остался второй, не менее важный вопрос - как грамотно программно работать с фб? понятно, что можно выводить напрямую в память самому, но даже та же начальная заставка видно, что пользуется некими библиотечными функциями (шрифты, битмап). как их использовать в своем приложении?