Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:2
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Вспомогательные средства
9G45 и MI0350CT-6
titan83
Добавлено 06.05.2013 09:55
0
Сообщение: 1
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Здравствуйте. Возникла задача подключить указанную 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 вскользь упоминал, что сабж - это тупая панель, но сейчас даже этой темы не наблюдаю(
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 06.05.2013 11:35 Сообщение: 2
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
2. Посмотрел в файле board-sam9m10g45ek.c на структуры, описывающие различные видеорежимы, но так и не догнал, где прописывать частоту панели, тайминги.

в файле борды ищите такую структуру, в ней все задается
Код
/*
* LCD Controller
*/
#if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
static struct fb_videomode at91_tft_vga_modes[] = {
{
.name = "LTC12",
.refresh = 60,
.xres = 800, .yres = 600,
.pixclock = KHZ2PICOS(40000),

/* .left_margin = 1, .right_margin = 1,
.upper_margin = 40, .lower_margin = 1,
.hsync_len = 45, .vsync_len = 1,*/

.left_margin = 2, .right_margin = 2,
.upper_margin = 12, .lower_margin = 1,
.hsync_len = 41, .vsync_len = 10,

.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};

static struct fb_monspecs at91fb_default_monspecs = {
.manufacturer = "LTC",
.monitor = "ltc12",

.modedb = at91_tft_vga_modes,
.modedb_len = ARRAY_SIZE(at91_tft_vga_modes),
.hfmin = 40000,
.hfmax = 87000,
.vfmin = 55,
.vfmax = 62,
};

#define AT91SAM9G45_DEFAULT_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
| ATMEL_LCDC_DISTYPE_TFT \
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)

/* Driver datas */
static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
.lcdcon_is_backlight = true,
.default_bpp = 16,
// .default_bpp = 32,
.default_dmacon = ATMEL_LCDC_DMAEN,
.default_lcdcon2 = AT91SAM9G45_DEFAULT_LCDCON2,
.default_monspecs = &at91fb_default_monspecs,
.guard_time = 9,
.lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
};

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 06.05.2013 13:06 Сообщение: 3
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Спасибо за ответ. Эту структуру видел, но не совсем понятно, как провести соответствие между ней и данными из даташита контроллера.
1. pixclock KHZ2PICOS - я так понимаю, что это тактовая частота панели? Если да, то как точно рассчитать это значение? Эмпирически я, конечно, почитал соотношение по другим структурам, но это не совсем корректно, как мне кажется? Например, у меня частота 6,4 МГц.
2. hsync_len - количество "пустых" пикселей до начала вывода реальной строки?
3. vsync_len - количество "пустых" строк?
4. непонятны параметры *margin. Это отступы, чтобы не пропадали крайние пиксели, как у некоторых происходит?
5. Как быть с сигналом DEN панели? Его установка - задача lcd-контроллера?
6. У меня матрица подключена в режиме RGB24, как это отразить в настройках?
7. Какие-то дополнительные параметры требуется прописывать в этих двух структурах?
Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 06.05.2013 13:15 Редактировалось 06.05.2013 13:19 Сообщение: 4
sasamy
4.71

Пункты: 83534
Регистрация: 14.08.2009
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

http://www.promelec.ru/pdf/MI0350CT-6.pdf
5.2 24 bit RGB mode for 320RGB x 240

Цитата

5. Как быть с сигналом DEN панели? Его установка - задача lcd-контроллера?

Подключить так же как местных плагах - схемы никто не прячет.

Цитата

6. У меня матрица подключена в режиме RGB24, как это отразить в настройках?

пины уже настроены на 24 битный RGB
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 06.05.2013 14:52 Сообщение: 5
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Цитата
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

http://www.promelec.ru/pdf/MI0350CT-6.pdf
5.2 24 bit RGB mode for 320RGB x 240

спасибо, первая ссылка крайне полезная. по второму документу я и пытаюсь настраиваться.
попробовал скомпилировать новое ядро. но, к сожалению, реакции на запись в /dev/fb0 нет. Выставил 32 бита на пиксель - увидел изменение размера fb.
Если некорректно выставлены параметры margin*, то изображение должно быть, пусть и некорректное?
Куда еще глянуть в программной части, прежде чем начинать усиленно проверять распиновку шлейфа?
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 06.05.2013 15:51 Сообщение: 6
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
еще смущают эти две строки
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)? или что-то иное?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 06.05.2013 16:03 Сообщение: 7
Jury093
4.5

Пункты: 54271
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
вот это:
Код
atmel_lcdfb atmel_lcdfb.0: 300KiB frame buffer at 73980000 (mapped at ffa00000)

область памяти для фреймбуфера размером 300кбайт
а это
Код
atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00500000 (mapped at c4818000), irq 23

данные для контроллера lcd - блок регистров и прерывание

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 06.05.2013 16:15 Сообщение: 8
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
[quote]вот это:
Код
atmel_lcdfb atmel_lcdfb.0: 300KiB frame buffer at 73980000 (mapped at ffa00000)

область памяти для фреймбуфера размером 300кбайт
а это
Код
atmel_lcdfb atmel_lcdfb.0: fb0: Atmel LCDC at 0x00500000 (mapped at c4818000), irq 23

данные для контроллера lcd - блок регистров и прерывание[/quote]
спасибо за разъяснение.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 06.05.2013 16:16 Сообщение: 9
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Всем огромное спасибо - проблема была в неправильно подключенном шлейфе.
Спуститься к концу Подняться к началу
Персональная информация
titan83
Добавлено 06.05.2013 16:18 Сообщение: 10
titan83
3

Пункты: 3141
Регистрация: 16.12.2012
Но остался второй, не менее важный вопрос - как грамотно программно работать с фб? понятно, что можно выводить напрямую в память самому, но даже та же начальная заставка видно, что пользуется некими библиотечными функциями (шрифты, битмап). как их использовать в своем приложении?
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Вспомогательные средства