Ник:
Пароль:

Контакты

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 » Embedded Linux
iMX6. Debian. TFT1024X768(TP). Сенсор и кнопки
Jury093
Добавлено 02.08.2016 17:27 Сообщение: 21
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
И еще - ts_calibrate при event0 калибрует, а при event1 - зависает )))
В Иксах при event1 курсор прыгает в нижний правый край.

по-хорошему, надо убирать нерабочий "event" из ядра - вполне может быть, что драйвер в Иксах игнорирует/"не видит" настройки, сам сканирует events на предмет тачей и цепляется за нерабочий канал. отсюда и скачок в угол из-за левых координат..

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

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
эвона как - век живи и столько же учись..
пошел по ссылкам посмотреть, погуглил по термину "xinput set-prop", вышел на шпаргалку
http://blog.rot13.org/2013/12/touch-screen-configuration-using-xinput.html
Код
apt-get install xinput

потом
Код
xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ADS0 Touchscreen id=6 [slave pointer (2)]
⎜ ↳ PS/2+USB Mouse id=7 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ CHESEN USB Keyboard id=8 [slave keyboard (3)]
↳ CHESEN USB Keyboard id=9 [slave keyboard (3)]

потом
Код
xinput list-props 6

там
Evdev Axis Inversion (241): 0, 0
у меня по Х работает правильно, а У инвертирован, ввел
Код
xinput set-prop 6 241 0 1

и всё, тач фурычит как надо.. осталось выяснить куда это прописать в конфигах (впрочем можно в загрузочный скрипт вписать) и проблема (моя) решена..

деинсталируйте старую xserver-*-tslib (dpkg -r имя-пакета)
отключите в ядре или поищите как вразумить в Иксах не использовать дохлый канал тача.. и все должно получиться..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
qqqqq2
Добавлено 03.08.2016 11:08 Сообщение: 23
qqqqq2
0

Пункты: 5507
Регистрация: 29.04.2016
Из: Санкт-Петербург
Цитата

по-хорошему, надо убирать нерабочий "event" из ядра

Какой event нерабочий?
Тот, при котором есть реакция на прикосновение (1) или при котором проходит калибровка (0)?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 03.08.2016 12:27 Сообщение: 24
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Какой event нерабочий?
Тот, при котором есть реакция на прикосновение (1) или при котором проходит калибровка (0)?

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

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
qqqqq2
Добавлено 03.08.2016 12:46 Сообщение: 25
qqqqq2
0

Пункты: 5507
Регистрация: 29.04.2016
Из: Санкт-Петербург
стоит ли попробовать вот так сделать?
http://newblog.kz/posts/view/43
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 03.08.2016 12:58 Сообщение: 26
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
стоит ли попробовать вот так сделать?
http://newblog.kz/posts/view/43

конечно стоит, учтите что xinput - консольное приложение для Иксов, т.е. надо запускать в шелле под Иксами

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
qqqqq2
Добавлено 10.08.2016 12:15 Редактировалось 29.12.2016 15:46 Сообщение: 27
qqqqq2
0

Пункты: 5507
Регистрация: 29.04.2016
Из: Санкт-Петербург
Цитата
конечно стоит, учтите что xinput - консольное приложение для Иксов, т.е. надо запускать в шелле под Иксами

продолжаю попытки...
Cделал как советуют в http://newblog.kz/posts/view/43

Но пока не работает.
Во-первых, при калибровке дальше одной точки не идет...
Код
root@armets:~# xinput -list
пїЅ Virtual core pointer id=2 [master pointer (3)]
пїЅ пїЅпїЅпїЅ Virtual core XTEST pointer id=4 [slave pointer (2)]
пїЅ пїЅпїЅпїЅ ADS7846 Touchscreen id=6 [slave pointer (2)]
пїЅ пїЅпїЅпїЅ ADS7846 Touchscreen id=7 [slave pointer (2)]
пїЅ Virtual core keyboard id=3 [master keyboard (2)]
пїЅпїЅпїЅ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
пїЅпїЅпїЅ USB Keyboard id=8 [slave keyboard (3)]
пїЅпїЅпїЅ USB Keyboard id=9 [slave keyboard (3)]
root@armets:~# xinput_calibrator --device 6
Calibrating EVDEV driver for "ADS7846 Touchscreen" id=6
current calibration values (from XInput): min_x=150, max_x=3830 and min_y=190, max_y=3830
root@armets:~#


Xorg.0.log
http://pastebin.ru/2DF1Grj5

dmesg
http://pastebin.ru/mLrYnKPO

При нажатии на экран курсор прыгает в правый нижний угол.
Спуститься к концу Подняться к началу
Персональная информация
qqqqq2
Добавлено 29.12.2016 15:03 Редактировалось 29.12.2016 16:12 Сообщение: 28
qqqqq2
0

Пункты: 5507
Регистрация: 29.04.2016
Из: Санкт-Петербург
Код
root@armets:~# cat /proc/interrupts
CPU0 CPU1
29: 59728 21825 GIC 29 twd
34: 0 0 GIC 34 sdma
35: 0 0 GIC 35 VPU_JPG_IRQ
37: 0 0 GIC 37 2400000.ipu
38: 6 0 GIC 38 2400000.ipu
39: 0 0 GIC 39 2800000.ipu
40: 0 0 GIC 40 2800000.ipu
43: 1 0 GIC 43 galcore interrupt service for 2D
44: 0 0 GIC 44 VPU_CODEC_IRQ
50: 0 0 GIC 50 vdoa
51: 0 0 GIC 51 rtc alarm
54: 18304 0 GIC 54 mmc1
56: 257 0 GIC 56 mmc0
58: 1231 0 GIC 58 IMX-uart
63: 12 0 GIC 63 spi_imx
66: 42953 0 GIC 66 spi_imx
69: 36 0 GIC 69 21a4000.i2c
71: 0 0 GIC 71 ahci-imx
72: 16404 0 GIC 72 ci_hdrc_imx
75: 26 0 GIC 75 ci_hdrc_imx
79: 0 0 GIC 79 ssi@0202c000
81: 0 0 GIC 81 imx_thermal
82: 0 0 GIC 82 asrc
84: 0 0 GIC 84 spdif
87: 432 0 GIC 87 i.MX Timer Tick
139: 0 0 GIC 139 mmdc_1
144: 0 0 GIC 144 mmdc_1
147: 0 0 GIC 147 hdmi_cec.16
150: 20451 0 GIC 150 2188000.ethernet
151: 0 0 GIC 151 2188000.ethernet
155: 0 0 GIC 155 PCIe PME
251: 0 0 gpio-mxc 27 ads7846
266: 186 1 gpio-mxc 10 ads7846
IPI0: 0 0 CPU wakeup interrupts
IPI1: 0 78 Timer broadcast interrupts
IPI2: 8485 17381 Rescheduling interrupts
IPI3: 0 0 Function call interrupts
IPI4: 1711 1800 Single function call interrupts
IPI5: 0 0 CPU stop interrupts
IPI6: 3463 2297 IRQ work interrupts
IPI7: 0 0 completion interrupts


Вопрос 1 - а почему два ads7846?

dmesg
http://pastebin.ru/6lPXX2YR

Видно, что при нажатии на экран срабатывает прерывание только на одном из ads7846.

Вопрос 2 - как отключить прерывание на первом ads7846 или вообще удалить первое ads7846 ?
Очень хочется верить, что именно это мешает нормальной работе тача...
Напомню - при нажатии на экран курсор прыгает в угол экрана (можно поиграть настройкой и будет в разные углы прыгать).

Код
root@armets:~# uname -a
Linux armets 3.14.14 #86 SMP Tue Nov 8 15:06:03 UTC 2016 armv7l GNU/Linux
root@armets:~# cat /etc/debian_version
8.6
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 29.12.2016 16:22 Сообщение: 29
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Вопрос 1 - а почему два ads7846?
Видно, что при нажатии на экран срабатывает прерывание только на одном из ads7846.

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

Цитата
Вопрос 2 - как отключить прерывание на первом ads7846 или вообще удалить первое ads7846 ?

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

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

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

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 29.12.2016 16:32 Редактировалось 29.12.2016 16:55 Сообщение: 30
sasamy
4.70

Пункты: 76994
Регистрация: 14.08.2009
Цитата

Очень хочется верить, что именно это мешает нормальной работе тача...


если хочется - верьте, но курсор прыгает потому что тачскрин у вас не откалиброван, в том числе это возможно потому что откалиброван один тачскрин а иксы используют другой неоткалиброванный. Изучайте настройки иксов как указать им нужное устройство evdev, это тот у которого появляется мусор при нажатии на экран

# cat /dev/input/eventX

Если уж не получается настроить и проще убрать ненужный evdev - уберите его в DTS - либо вообще удалить ненужное описание или можно просто отключить через status весь интерфейс

linux-3.14-sr-ea83bda-sk/arch/arm/boot/dts/imx6qdl-sodimm.dtsi

&ecspi1 {
fsl,spi-num-chipselects = <1>;
cs-gpios = <&gpio5 25 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi1_sodimm>;
status = "disabled";

tsc2046@0 {
compatible = "ti,tsc2046";
reg = <0>;
spi-max-frequency = <100000>;
/* pen irq is GPIO3_27 */
interrupt-parent = <&gpio3>;
interrupts = <27 0x2>;
pendown-gpio = <&gpio3 27 0>;
vcc-supply = <&reg_3p3v>;

ti,x-min = /bits/ 16 <150>;
ti,x-max = /bits/ 16 <3830>;
ti,y-min = /bits/ 16 <190>;
ti,y-max = /bits/ 16 <3830>;

ti,pressure-max = /bits/ 16 <255>;
ti,debounce-max = /bits/ 16 <5>;
ti,debounce-tol = /bits/ 16 <10>;
ti,debounce-rep = /bits/ 16 <0>;

linux,wakeup;
};
};
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux