реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> uClinux + TFT-LCD через PPI, Вывод графической информации на TFT дисплей через PPI в uClinux
Giekelberri
сообщение Oct 25 2011, 10:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 28-01-11
Пользователь №: 62 532



Здравствуйте!

Возникла насущная задача - вывод графической информации на TFT дисплей.
Система uClinux работает на отладочной плате tcm-bf537.
TFT дисплей имеет свой контроллер, передача данных осуществляется по параллельному интерфейсу PPI.

Вопрос вот в чем:
временная характеристика контроллера TFT дисплея порядка 100 наносекунд, в то время как
минимальная разрешающая способность uClinux (из функции clock()) минимум 10 миллисекунд.
Разница в 2 порядка, что неприемлемо.
Как правильно организовать обмен данными по параллельному интерфейсу PPI? Поделитесь, пожалуйста, любой информацией.

Сообщение отредактировал Giekelberri - Oct 25 2011, 10:31
Go to the top of the page
 
+Quote Post
cpl
сообщение Oct 25 2011, 10:30
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(Giekelberri @ Oct 25 2011, 14:28) *
Здравствуйте!

Возникла насущная задача - вывод графической информации на TFT дисплей.
Система uClinux работает на отладочной плате tcm-bf537.
TFT дисплей имеет свой контроллер, передача данных осуществляется по параллельному интерфейсу PPI.

Вопрос вот в чем:
временная характеристика контроллера TFT дисплея порядка 100 наносекунд, в то время как
минимальная разрешающая способность uClinux (из функции clock()) минимум 10 миллисекунд.
Разница в 2 порядка, что неприемлемо.
Как правильно организовать обмен данными по параллельному интерфейсу PPI? Поделитесь, пожалуйста, любой информацией.


Несовсем понятно как передаете по PPI. Побайтно ?
ДМА используете ?
Go to the top of the page
 
+Quote Post
Giekelberri
сообщение Oct 25 2011, 10:41
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 28-01-11
Пользователь №: 62 532



Цитата(cpl @ Oct 25 2011, 14:30) *
Несовсем понятно как передаете по PPI. Побайтно ?
ДМА используете ?


8 бит данных выставляются на шину PPI и по тактирующим сигналам записываются в память дисплея TFT.
и так, пока все изображение не запишется в память дисплея TFT.

ДМА не использую.


Go to the top of the page
 
+Quote Post
kurtis
сообщение Oct 25 2011, 10:43
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



1. Можно посмотреть как это сделано у других. Например, у производителя платы должны быть исходники.
2. Возможно то что вам нужно, уже кто-то когда-то реализовывал, можно поискать в архивах почтовых рассылок (гугль это умеет).
3. Я не знаю по поводу многозадачности в ядре ucLinux, может ли один процесс в ядре, втеснить другой, но чисто теоретически, если многозадачность не вытесняющая, то можно все сделать в одном процессе, а когда уже передача закончена, то возвращать управление планировщику.
И возможно, вы немного путаете sleep() и delay(). Первая передает управление планировщику, и уже тот дальше решает когда возвращать управление процессу, а первая просто ждет заданное количество времени.
Go to the top of the page
 
+Quote Post
cpl
сообщение Oct 25 2011, 10:51
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(Giekelberri @ Oct 25 2011, 14:41) *
8 бит данных выставляются на шину PPI и по тактирующим сигналам записываются в память дисплея TFT.
и так, пока все изображение не запишется в память дисплея TFT.

ДМА не использую.


Так непойдет smile3046.gif
Тут только ДМА !
Посмотрите пример tft
остается только под себя переделать.

Надо стараться избегать ногадрыганья под линуксом иначе все умрет,
в качестве эксперимента попробуйте вывести меандр на gpio из user space и померить частоту.

Go to the top of the page
 
+Quote Post
Giekelberri
сообщение Oct 26 2011, 07:11
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 28-01-11
Пользователь №: 62 532



Цитата(cpl @ Oct 25 2011, 14:51) *
Так непойдет smile3046.gif
Тут только ДМА !
Посмотрите пример tft
остается только под себя переделать.

Надо стараться избегать ногадрыганья под линуксом иначе все умрет,
в качестве эксперимента попробуйте вывести меандр на gpio из user space и померить частоту.


Про ногадрыганья я с вами абсолютно согласен.

В теории вывод изображения на LCD происходит так:
1. Изображение загружается в память. Причем в контроллере ПДП (прямого доступа к памяти) устанавливается
начальный адрес в памяти, размер изображения в байтах и т.д.
2. По тактирующим импульсам, генерируемых BlackFin'ом, идет
- начало записи
- выставление 8 бит на PPI,
- и т.д.
3. Затем инкрементирование текущего адреса в контроллере ПДП и снова пункт2, пока не будет передано все изображение.

Interface protocol на мой дисплей:
Прикрепленное изображение


И это все согласуется c документацией BlackFin Hardware reference:
Прикрепленное изображение


Но не понятно как реализовать на uClinux синхроимпульсы, установление значений контроллера ПДП...

Сообщение отредактировал Giekelberri - Oct 26 2011, 07:13
Go to the top of the page
 
+Quote Post
cpl
сообщение Oct 26 2011, 08:06
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Помотрите пример+схему все станет понятно.
Уже есть готовый драйвер посмотрите как реализовано и переделайте под себя.
Нужно выставить: свое разрешение, свой инит.
(там все достаточно просто, в первом приближении обычный набор подпрограмм работы с железом как в и без линукса, только задаются специфические функции через которые ядро и работает между железом и узерспасе)

DMA запускается в 2D т.е. передача идет весь кадр полностью.
Передали весь кадр прерывание DMA, перезагрузка на передачу нового кадра и т.д.
Go to the top of the page
 
+Quote Post
Giekelberri
сообщение Oct 26 2011, 10:56
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 28-01-11
Пользователь №: 62 532



Спасибо!

Нашел драйвер
./blackfin-linux-dist/linux-2.6.x/drivers/video/bfin537-lq035.c

для вот этого дисплея
http://docs.blackfin.uclinux.org/doku.php?...w:cards:tft-lcd

В настройках ядра находится:
Device Drivers -> Graphics support -> Support for frame buffer devices -> SHARP LQ035Q1DH02 TFT LCD
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01441 секунд с 7
ELECTRONIX ©2004-2016