ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Собрать tslib для Tion  (Прочитано 15158 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Ivan

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 88
Re: Собрать tslib для Tion
« Ответ #15 : 06 Ноября, 2013, 16:00:48 »

tslib взял версии 1.0 (как в Buildroot).

Патчи:
tslib-1.0-no-cxx.patch
tslib-1.0-remove-bzero.patch
tslib-1.0-remove-return-on-error-from-check-df.patch
tslib-1.0-x-ep93xx.patch
tslib-1.0-x-ep93xx_glibc.patch

> GCC ставили из репозитория emdebian

Да.

Добрый день!

Наконец-то добрался до работы и поставил deb-пакет, который Вы собрали.

Вот что получил - пока все копировал и устанавливал, у меня отключилась подсветка дисплея (т.к. собирал все через ttyAM1-терминал).  При запуске ts_calibrate с отключенной подсветкой дисплея калибровка прошла успешно (это видно по логам в терминале). После калибровки подсветка дисплея включилась. Теперь ts_test корректно определяет положение курсора, но не реагирует на наведение на кнопки Drag и Draw (всегда просто перемещает курсор, не рисует).

Сейчас, прежде чем отвечать, проверил еще раз. ts_calibrate отрабатывает только при выключенной подсветке.

Я понимаю, что это, мягко говоря, странно... Но это так! Возможно, мы где-то неправильно подключили тачскрин и подсветку. Но тогда почему все работает в режиме 640х480?!
Записан

Ivan

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 88
Re: Собрать tslib для Tion
« Ответ #16 : 06 Ноября, 2013, 16:15:46 »

Цитировать
ts_calibrate отрабатывает только при выключенной подсветке

Update: ts_calibrate все-таки отрабатывает, но ОЧЕНЬ криво. Корректно откалибровать при включенной подсветке не получается. Переговорил с человеком, который разбирается в устройстве нашей платы. Будем искать проблему у себя.

Вам еще раз огромное спасибо за помощь!
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Собрать tslib для Tion
« Ответ #17 : 06 Ноября, 2013, 16:24:22 »

У вас подсветка на высоковольтных лампах?
Записан

Ivan

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 88
Re: Собрать tslib для Tion
« Ответ #18 : 06 Ноября, 2013, 16:39:45 »

У нас дисплей 7" Ampire AM800480R2. Более подробно, похоже, здесь (прямо на этот дисплей ссылку не дать - сайт у них кривой)
Записан

Ivan

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 88
Re: Собрать tslib для Tion
« Ответ #19 : 07 Ноября, 2013, 18:18:53 »

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

Еще раз подниму тему.

Но нужно проверить не будет ли из-за такого изменения 100% занят процессор в приложении. ts_test и
так 100% занимает процессор, на другой программе я не проверял.

Как Вы и предполагали, процессор действительно загружен на 100% всегда.

Сейчас имеем следующее - тачскрин как-то откалиброван при выключенной подсветке. Наше приложение на Qt на тачскрин не реагирует как раз из-за того, что процессор загружен полностью (иногда проходят реакции на касания, но очень редко).

Я пытаюсь самостоятельно разобраться с устройством tslib и драйвера для тачскрина чтобы сделать патч, не нагружающий процессор.

Пока что понял только, что ts_input_read() из tslib/plugins/input_ep93xx_ts.c вызывается в tslib/src/ts_read.c. А вот как все это взаимодействует с драйвером тачскрина я понять не могу. Пытаюсь разобраться в драйвере тачскрина для тиона (linux/drivers/input/touchscreen/ep93xx_ts.c), но пока что не понимаю, где там используется tslib.

А может я вообще не туда смотрю? Буду признателен, если подскажете, куда копать.

Спасибо!
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Собрать tslib для Tion
« Ответ #20 : 08 Ноября, 2013, 10:59:03 »

tslib читает файл символьного устройства (/dev/ep93xx_ts), это чтение
обслуживает ep93xx_ts_read() из drivers/input/touchscreen/ep93xx_ts.c

Проблема видимо в том, что uсlibc и glibc по разному обрабатывают read() при
нулевых данных.

Можно попробовать возвращать не 0 в стр. 375 а -EAGAIN, -ENODATA
   if( !bFreshTouchData)
       {
      iReturn = 0;
       }       
Записан

Ivan

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 88
Re: Собрать tslib для Tion
« Ответ #21 : 08 Ноября, 2013, 12:32:28 »

tslib читает файл символьного устройства (/dev/ep93xx_ts), это чтение
обслуживает ep93xx_ts_read() из drivers/input/touchscreen/ep93xx_ts.c

Проблема видимо в том, что uсlibc и glibc по разному обрабатывают read() при
нулевых данных.

Можно попробовать возвращать не 0 в стр. 375 а -EAGAIN, -ENODATA
   if( !bFreshTouchData)
       {
      iReturn = 0;
       }       


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

Да, в порядке вызова я явно запутался, спасибо что прояснили ситуацию. Замена 0 на -EAGAIN или -ENODATA проблему, к сожалению, не решила... Ну теперь я, по крайней мере, знаю, в каком месте надо что-то менять.
Записан

Ivan

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 88
Re: Собрать tslib для Tion
« Ответ #22 : 11 Ноября, 2013, 17:27:27 »

В общем, проблема, как обычно, решилась достаточно просто.

В модуле ядра, отвечающем за тачскрин (файл drivers/input/touchscreen/ep93xx_ts.c), надо было подредактировать параметры констант

#define   TS_HEAVY_INV_PRESSURE 3000 /*5500*/
#define   TS_LIGHT_INV_PRESSURE 5000 /*9500*/

С такими значениями все, кроме ts_calibrate, работает даже без Вашего патча. А с патчем работает и ts_calibrate. Почему так - понять до сих пор не могу, но это вроде как и не важно...
Записан