Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
Автозапуск и тачскрин
Vladmir
Добавлено 13.02.2016 10:21
0
Сообщение: 1
Vladmir
0

Пункты: 2090
Регистрация: 12.05.2010
Пол: Мужчина
Устройство на базе AT91SAM9263.
Графическое приложение Qt необходим автозапуск.
Пробовал запускать из inittab и скриптом из init.d. И в том и в другом случае не работает тачскрин.
Попробовал вместо своего приложения автозапустить ts_test, пишет:
/dev/touchscreen/ucb1x00: No such file or directory
хотя тачскрин висит не на ucb.
Драйвер:
ads7846 spi0.3: touchscreen, irq 31
input: ADS7843 Touchscreen as /class/input/input0

Для проверки работы тача использую
cat /dev/input/event0 | hexdump
на консоль сыпятся данные при прикосновении к экрану.
/dev/input/event0 появляется до автозапуска, проверял в inittab командой ::once:ls /dev/input/, event0 уже есть.
Вопрос, почему ts_test ищет /dev/touchscreen/ucb1x00. Qt шное приложение тоже наверное ищет /dev/touchscreen/ucb1x00.
Как я понимаю надо подождать какое то событие или еще что то. Но что именно не знаю.
Спуститься к концу Подняться к началу
Персональная информация
Vladmir
Добавлено 13.02.2016 12:17 Сообщение: 2
Vladmir
0

Пункты: 2090
Регистрация: 12.05.2010
Пол: Мужчина
Попробовал вот такой код:
unsigned int i;
char *tsdevice=NULL;

for(i = 0;i < 100;i++)
{
tsdevice = getenv("TSLIB_TSDEVICE");
if(tsdevice == NULL) printf("NULL\n");
else printf("%s\n", tsdevice);
sleep(1);
}
Из автозапуска печатает NULL, причем этот же тест запускаю параллельно из командной строки на консоли получаю:
NULL
/dev/input/event0

В ступоре курю бамбук
Спуститься к концу Подняться к началу
Персональная информация
Vladmir
Добавлено 13.02.2016 13:28 Сообщение: 3
Vladmir
0

Пункты: 2090
Регистрация: 12.05.2010
Пол: Мужчина
Да кстати, если тестик обозначенный выше запускать из telnet, тоже будет NULL, хотя
cat /dev/input/event0 | hexdump
сыпит данные при касании к экрану
Спуститься к концу Подняться к началу
Персональная информация
Vladmir
Добавлено 15.02.2016 09:44 Сообщение: 4
Vladmir
0

Пункты: 2090
Регистрация: 12.05.2010
Пол: Мужчина
Чета я сам с собою веду беседу.
Проблема оказывается в переменных окружения.
В inittab вставил строчку:

::once:env

печатает:
HOME=/
TERM=vt102
PATH=/sbin:/usr/sbin:/bin:/usr/bin
SHELL=/bin/sh
USER=root
RUNLEVEL=115200

а после того как залогинился
env выдает:

HISTFILESIZE=1000
INPUTRC=/etc/inputrc
TSLIB_TSDEVICE=/dev/input/event0
USER=root
HOSTNAME=A17
TSLIB_TSEVENTTYPE=INPUT
HOME=/root
PAGER=/bin/more
TSLIB_FBDEVICE=/dev/fb0
PS1=\h:\w #
TSLIB_PLUGINDIR=/usr/lib/ts
TSLIB_CONSOLEDEVICE=none
LOGNAME=root
TERM=vt100
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/local/bin
TSLIB_CONFFILE=/etc/ts.conf
DMALLOC_OPTIONS=debug=0x34f47d83,inter=100,log=logfile
HISTSIZE=1000
SHELL=/bin/sh
PWD=/root
QWS_MOUSE_PROTO=Tslib:/dev/input/event0 Auto:/dev/input/mice
TSLIB_CALIBFILE=/etc/pointercal
EDITOR=/bin/vi

Теперь вопрос: как мне иметь этот набор переменных окружения во время выполнения inittab
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 15.02.2016 10:23 Редактировалось 15.02.2016 10:26 Сообщение: 5
sasamy
4.71

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

как мне иметь этот набор переменных окружения во время выполнения inittab


сделайте скрипт-обертку и запускаете его. Например:

i.mx6 + Qt 5.5 + tslib (тачскрин event1)

# cat /root/player.sh

Цитата

#!/bin/sh

export LANG=ru_RU.UTF-8
export TSLIB_TSDEVICE=/dev/input/event1
export FB_MULTI_BUFFER=2
export QT_QPA_EGLFS_TSLIB=1
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1
export QT_GSTREAMER_CAMERABIN_VIDEOSRC="imxv4l2videosrc"
export QT_QPA_PLATFORM=eglfs
export LD_LIBRARY_PATH=\
/usr/lib/imx-mm/audio-codec:\
/usr/lib/imx-mm/audio-codec/wrap:\
/usr/lib/imx-mm/parser

test -f /etc/pointercal || ts_calibrate
exec /usr/lib/qt/examples/multimedia/video/qmlvideo/qmlvideo


# cat /etc/inittab

Цитата

.....
# Put a getty on the serial port
ttymxc0::respawn:/sbin/getty -L ttymxc0 115200 vt100
#tty1::respawn:/sbin/getty 38400 tty1 linux
null::respawn:/root/player.sh
.....


в данном случае программа будет перезапущена автоматически после завершения работы - неважно из-за ошибки или штатно
Спуститься к концу Подняться к началу
Персональная информация
Vladmir
Добавлено 15.02.2016 11:41 Сообщение: 6
Vladmir
0

Пункты: 2090
Регистрация: 12.05.2010
Пол: Мужчина
Весьма благодарен! Работает.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux