Russian Qt Forum
Март 29, 2024, 09:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Настройка Qt-embedded для работы с фрэймбуфером  (Прочитано 3565 раз)
Stlkr_19
Гость
« : Март 11, 2016, 06:17 »

Всем доброго времени!

Прошу помощи в настройке Qt-embedded для работы с фрэймбуфером.

Собрал простую программку в Qt - Label с текстом "Hello, world!". Запустил ее на фулскрине.
Проблемы:
1. Инвертирован цвет (в программе Qt задан черный – на экране пиксель светится, задан белый – пиксель погашен)
2. Перепутаны попарно пиксели (т.е. тетрады в байтах фреймбуфера)
При этом ядро выводит своего пингвина в верном цвете и пиксели не путает.

Железо:
at91sam9g45 (arm9) + norflash + TFEL-дисплей (160х120 mono, шина 4 бита)

Софт:
linux-2.6.36-rc6
qt-4.8.6 (собран в систему при помощи Buildroot-2015.11.1)
Кросс-компилятор CodeSourcery 2014.05

Фреймбуфер в ядре настроен так (вывод fbset):
Mode “160x120-21”
#D: 0,414 MHz, H: 2,540 kHz, V: 20,991 Hz
geometry 160 120 160 120 4
timings 2415458 1 1 0 0 1 1
accel false
rgba 4/0, 4/0, 4/0
endmode

Т.е. pixel depth = 4bpp (встроенный в проц LCD-контроллер делает 16 оттенков при помощи "ШИМ").
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Март 11, 2016, 10:31 »

Было что-то похожее, когда оранжевый отображался как синий.. вроде проблема была в 16-битном фреймбуффере.. настроили на 24 бита и все стало норм.. как-то так..
Записан

ArchLinux x86_64 / Win10 64 bit
Stlkr_19
Гость
« Ответ #2 : Март 15, 2016, 07:53 »

В-общем, проблему "решил"

В исходниках ядра в файле
arch/arm/mach-at91/board-sam9m10g45ek.c
поправил значение регистра LCD Control Register 2.

/*
#define AT91SAM9G45_DEFAULT_STN_LCDCON2 (ATMEL_LCDC_MEMOR_LITTLE \
| ATMEL_LCDC_DISTYPE_STNMONO \
| ATMEL_LCDC_CLKMOD_ALWAYSACTIVE \
| ATMEL_LCDC_IFWIDTH_4 \
| ATMEL_LCDC_INVVD_INVERTED \
| ATMEL_LCDC_SCANMOD_SINGLE)
*/
#define AT91SAM9G45_DEFAULT_STN_LCDCON2 (ATMEL_LCDC_MEMOR_WINCE \
| ATMEL_LCDC_DISTYPE_STNMONO \
| ATMEL_LCDC_CLKMOD_ACTIVEDISPLAY \
| ATMEL_LCDC_IFWIDTH_4 \
| ATMEL_LCDC_INVVD_NORMAL \
| ATMEL_LCDC_SCANMOD_SINGLE)

Теперь Qt пишет верно и все красиво.

Но в консоли, которая писала в tty0 (на дисплей) всё развалилось - и пингвин, и текст под пингвином (цвет инверсный, пиксели попарно перепутаны).
Консоль мне пока не нужна, поэтому пока так оставлю.

Но если кто-нибудь объяснит, как сделать чтоб и Qt и консоль работали правильно, я буду очень благодарен!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.