Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Отладочные платы » SK-iMX233
iMX233 драйвер FB
sasamy
Добавлено 25.05.2010 19:05 Сообщение: 11
sasamy
4.70

Пункты: 78560
Регистрация: 14.08.2009
Цитата
"на коленке" пишется примитивная прога, которая сама шевелит все пинами изображая GPIO-интерфейс.


Это ничего не даст кроме проверки драйвера gpio который очевидно и так работает - речь идет о режиме работы интерфейса lcd. В режиме master контроллер подключается к приоритетной шине axi и автоматом перекидывает буфер из ram но до этого нужно еще проинициализировать контроллер lcd на плаге чтобы эти данные он воспринимал, для этого есть режим pio - обычная запись передаваемых данных в регистр котрые должны передаваться по шине с автоматоматическим формированием всех сопутствующих сигналов но это не происходит, пока не понятно чего не хватает.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 25.05.2010 19:44 Редактировалось 25.05.2010 21:30 Сообщение: 12
sasamy
4.70

Пункты: 78560
Регистрация: 14.08.2009
Затыка в том что все драйверы в ядре расчитаны на работу tft панелей без контроллера так называемым dotclock, есть какой-то кусок кода якобы для инициализации системного интерфейса (это тот который у нас - m68/i80) в мануале но это не работает - ничего на шине не формируется и там полная тишина.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.05.2010 21:08 Сообщение: 13
Jury093
4.5

Пункты: 54252
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Это ничего не даст кроме проверки драйвера gpio который очевидно и так работает - речь идет о режиме работы интерфейса lcd.

как минимум это даст проверку физики соединения и исправности цепей.. один неподключенный пин - и можно танцевать бесконечно - фурычить не будет..

Цитата
все драйверы в ядре расчитаны на работу tftp панелей без контроллера так называемым dotclock

на мнуке950 схожий контроллер - TFT/MCU, но у меня нет под рукой стекла с контроллером, чтобы изобразить ваши условия. Поэтому, я тольке теоретизирую :)

Хм.. поищу (по возможности) доку на iMX.. всякое бывает :)

Цитата
автоматоматическим формированием всех сопутствующих сигналов но это не происходит, пока не понятно чего не хватает.

врядли там сильно наверчено - как правило, чтобы запустить узел - надо разрешить его работу, разрешить ему входящий клок, ну и какой-нить бит для старта дернуть - видимо чего-то не хватает..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 25.05.2010 21:59 Редактировалось 25.05.2010 22:01 Сообщение: 14
Jury093
4.5

Пункты: 54252
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
в ДШ есть упоминание о шаринге пинов между LCDIF и NAND - я бы для чистоты действий заблокировал НАНД драйвер..

я так понимаю общий инит начинается отсюда
Код
18.2.4 Initializing the LCDIF
The following initialization steps are common to all LCDIF modes of operation before entering any particular
mode.
Initialization Steps:
1. To select the pins and their directions for interfacing to the LCD panel, set the appropriate bits in
the HW_PINCTRL_MUXSELx registers in the PINCTRL block.
2. Start the PIXCLK and set the appropriate frequency by programming the registers in CLKCTRL.
3. Bring the LCDIF out of soft reset and clock gate.
4. Reset the LCD controller by setting LCDIF_CTRL1_RESET bit appropriately, being careful to
observe the reset requirements of the controller.
Select the bus interface mechanism with the LCDIF_MASTER bit in HW_LCDIF_CTRL register. If bus
master mode is enabled (LCDIF_MASTER=1), set the HW_LCDIF_CUR_BUF and
HW_LCDIF_NEXT_BUF registers by following the description in Section 18.2.1, “Bus Interface Mechanisms.
5. Set the INPUT_DATA_SWIZZLE according to the endianness of the LCD controller. Also set the
DATA_SHIFT_DIR and SHIFT_NUM_BITS if it is required to shift the data left or right before it
is output.
6. Set the WORD_LENGTH field appropriately, indicating the resolution of the pixels in the frame
buffer: 0 = 16-bit pixel, 1 = 8-bit pixel, 2 = 18-bit pixel, 3 = 24-bit pixel. Also select the correct
16/18/24 bit data format with the corresponding fields in HW_LCDIF_CTRL register.
7. Set the BYTE_PACKING_FORMAT field in HW_LCDIF_CTRL1 according to the input frame.
8. Set the LCD_DATABUS_WIDTH appropriately: 0 = 16-bit output, 1 = 8-bit output, 2 = 18-bit
output, 3 = 24-bit output.
9. Enable the necessary IRQs.


а потом специфичное для System mode
Код
18.2.5.1 Code Example to initialize LCDIF in System mode
// Note: Common initialization steps in Section 18.2.4, “Initializing the LCDIF,” must also be
// executed along with the following code
BF_CS1(LCDIF_CTRL, DATA_SELECT, 1); // 0 if sending command, 1 if sending data. Note that the idle
state for LCD_RS signal is high, regardless of the programming of the DATA_SELECT register.
BF_CS1 (LCDIF_CTRL, MODE86, 8080_MODE);
BF_CS1 (LCDIF_CTRL, BYPASS_COUNT, 0); //Must be 0 in system mode
BF_CS1 (LCDIF_CTRL1, BUSY_ENABLE, 1);//Only if LCD controller implements a busy line
BF_CS4 (LCDIF_TIMING, CMD_HOLD, 2, CMD_SETUP, 2, DATA_HOLD, 2, DATA_SETUP, 2); //Values based on
PIXCLK frequency and timing requirements of controller. Note that these register must be non-zero
for correct operation.
BF_CS2 (LCDIF_TRANSFER_COUNT, H_COUNT, 320, V_COUNT, 240); //For a 320 RGB x 240 display
BF_CS1 (LCDIF_CTRL, RUN, 1);

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 27.05.2010 21:10 Редактировалось 27.05.2010 21:11 Сообщение: 15
Pavel Ivanchenko
Admin
4.39

Пункты: 91940
Регистрация: 24.03.2009
Пол: Мужчина
Вобщем, прислали из техсаппорта драйвера от пары смарт панелей, которые имеют подобный интерфейс.
Готов драйвер, в пике пропускной способности (24МГц) 61FPS на WF43BTIBED0 плагах выдаст (столько явно не нужно, поставил 25fps)!!!
Мне стало интересно, насколько LCDIF мастер на шине будет систему тормозить, засек время исполнения memtester (на один мегабайт) с FB и без него - можно сказать, никак не влияет!!!
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.05.2010 00:25 Редактировалось 28.05.2010 00:43 Сообщение: 16
sasamy
4.70

Пункты: 78560
Регистрация: 14.08.2009
У меня нечем мерять частоту но судя по топу все хорошо :)
Код

Mem: 12524K used, 48748K free, 0K shrd, 0K buff, 7864K cached
CPU: 0% usr 0% sys 0% nic 98% idle 0% io 0% irq 0% sirq
Load average: 0.00 0.01 0.00 1/28 422
PID PPID USER STAT VSZ %MEM %CPU COMMAND
408 399 root R 2260 4% 0% top
421 398 root S 2704 4% 0% mc
399 1 root S 2260 4% 0% -sh
398 1 root S 2260 4% 0% -sh
1 0 root S 2180 4% 0% init
401 1 root S 2180 4% 0% /sbin/klogd -n
400 1 root S 2180 4% 0% /sbin/syslogd -n -m 0
402 1 root S 2180 4% 0% /usr/bin/tail -f /var/log/messages
422 421 root S 1596 3% 0% cons.saver /dev/tty1
5 2 root SW< 0 0% 0% [khelper]
171 2 root SW< 0 0% 0% [khubd]
337 2 root SW< 0 0% 0% [stmp3xxx_ssp.1]
2 0 root SW< 0 0% 0% [kthreadd]
3 2 root SW< 0 0% 0% [ksoftirqd/0]
4 2 root SW< 0 0% 0% [events/0]
8 2 root SW< 0 0% 0% [async/mgr]
162 2 root SW< 0 0% 0% [kblockd/0]
176 2 root SW< 0 0% 0% [kmmcd]
206 2 root SW 0 0% 0% [pdflush]
207 2 root SW 0 0% 0% [pdflush]


Не знаю как прикрепляют здесь картинки - тремя разными браузрами пробовал и не получилоь :)
http://www.sasamy.narod.ru/mc_imx.jpg
Спуститься к концу Подняться к началу
Персональная информация
Hermes
Добавлено 28.05.2010 09:18 Редактировалось 28.05.2010 09:18 Сообщение: 17
Hermes
5

Пункты: 3383
Регистрация: 02.04.2010
ну просто красота! поздравляю!

ЗЫ: деньги уже почти накопил, скоро буду заказывать :-)
ЗЫЫ: а с выводом на телек никаких проблем нет ?
Спуститься к концу Подняться к началу
Персональная информация
alsegor
Добавлено 28.05.2010 11:56 Сообщение: 18
alsegor
0

Пункты: 4761
Регистрация: 11.06.2009
Пол: Мужчина
Я так понял, мапится часть ОЗУ процессора и используя LCDIF механизм постоянно отправляется в панель?
Да, а что там с телеком? Будет ли возможность работать и с тем и с тем? Есть мысль сделать игровую приставку для дочки.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 28.05.2010 12:28 Редактировалось 28.05.2010 12:49 Сообщение: 19
sasamy
4.70

Пункты: 78560
Регистрация: 14.08.2009
Цитата
Я так понял, мапится часть ОЗУ процессора и используя LCDIF механизм постоянно отправляется в панель?


Да, причем там хитро сделано - контроллер по шине сразу хватает блок памяти из 16 слов и есть аппаратные буферы fifo.

Цитата
а что там с телеком? Будет ли возможность работать и с тем и с тем?


Телик работает, только качество картинки оставляет желать лучшего, для игры думаю подойдет а вот в качестве монитора для работы я бы не рискнул использовать - напрягает зрение. Одновременно работать не будет - контроллер lcdif там один на всех а по отдельности будет и выбор панели осуществляется на этапе загрузки ядра, как сменить на лету я пока не знаю и вообще возможно ли такое.
Спуститься к концу Подняться к началу
Персональная информация
Pavel Ivanchenko
Добавлено 28.05.2010 13:30 Редактировалось 28.05.2010 13:38 Сообщение: 20
Pavel Ivanchenko
Admin
4.39

Пункты: 91940
Регистрация: 24.03.2009
Пол: Мужчина
Меня тут спросили про возможные варианты реализации с двумя TFT панелями ...
Подумал, получается, к iMX233 можно несколько панелей с системным интерфейсом повесить, только с CS придется "шаманить" - сделать их все через GPIO.
Сейчас логика такая, указываем адрес выдаваемого буфера экрана, настраиваем прерывание по окончании передачи буфера, а потом просто в прерывании даем панельке команду обнуления х и у.
В случае с несколькими панеляим, в простейшем случае, в обработчике прерываний добавить логику переключения CS и сменить указатель на другой фреймбуфер ...
А FPS просто поделятся на количество панелей, можно прикинуть:
24 000 000/(X*Y*N)=FPS одной панели (где N - количество байт на пиксель, для WF43...= 3), которое и делим на количество панелей (напрмер 100 :) ).
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Отладочные платы » SK-iMX233