LINUX.ORG.RU

Не запускается сишное приложение на реальной железке

 , , ,


0

1

Собрал простенькое приложение на SDL-1.2.15 с помощью тулчайна из NDK-r8c (API level 3, march=armv5te). На эмуляторе Android 2.1 приложение работает нормально. На рельном дейвайсе пишет: Unable to open a console terminal.

Путем гугления и изучения кода выяснил, что дело в том, что не проходят ioctl вызовы на /dev/tty в функции FB_OpenKeyboard(). Само устройство есть и нормально открывается, но ioctl(keyboard_fd, VT_GETSTATE, &vtstate) и ioctl(keyboard_fd, KDGKBMODE, &dummy) возвращают ошибку Invalid argument.

Судя по гуглу, у людей в интернете похожие проблемы тоже были, но внятного ответа «что делать», так и не нашлось.

Пытался хачить код, чтобы FB_OpenKeyboard() вообще не вызывался (ведь у реальной железки клавиатуры и мыши нет). Для мышки даже есть штатный способ SDL_NOMOUSE, но как запустить (сконфигурить) SDL без клавы, я так и не понял, потому и хачил.

В первую очередь интересует, как вообще можно понять, почему ioctl возвращает ошибку. В этом случае, судя по всему, не поддерживаются VT_GETSTATE и KDGKBMODE.

Буду рад любой помощи.

★★

Ответ на: комментарий от ziemin

Хороший вопрос. Какие именно логи интересуют? А гуглил я то, что выдавало SDL_GetError и perror.

Еще я успел попробовать с SDL-1.3 поиграться. Вроде оно именно для андройда пилится. Но SDL_InitVideo так и не удалось мне заставить работать. Начинаю уже подумывать об использовании чистого OpenGL ES...

kulti ★★
() автор топика
Ответ на: комментарий от ziemin

Туда ничего не пишется после запуска приложения.

kulti ★★
() автор топика
Ответ на: комментарий от true_admin

Я там уже без strace понял, что он пытается к несуществующим виртуальным терминалам обращаться (/dev/tty0). Проще говоря SDL-1.2 вообще не предназначен для андройда. Но спасибо за идею, сейчас под strace'ом посмотрю, что там не так с SDL-1.3

kulti ★★
() автор топика
Ответ на: комментарий от Nao

Если бы не было прав, то сломалось бы еще до ioctl - на open.

kulti ★★
() автор топика

Давайте выхлоп adb logcat с момента запуска приложения.

andreyu ★★★★★
()
Ответ на: комментарий от kulti

Начинаю уже подумывать об использовании чистого OpenGL ES...

И это правильно. Нечего тянуть sdl на мобильник - не нужен он там.

andreyu ★★★★★
()
Ответ на: комментарий от kulti

А как ты заходишь на мобилку-то? Я бы поставил ssh и заходил через него, оно само создаст виртуальные терминалы.

true_admin ★★★★★
()
Ответ на: комментарий от andreyu

Нужен или не нужен - вопрос второй. Дело было в простоте использования. Как оказалось сделать через OpenGL ES и NativeActivity проще. Правда будет работать только начиная с Android 2.3 (но их больше 90%, судя по статистике).

kulti ★★
() автор топика
Ответ на: комментарий от true_admin

Я через adb shell хожу. А вообще, я решил в сторону чистого open gl попробовать. Вроде получается.

kulti ★★
() автор топика
Ответ на: комментарий от kulti

Как оказалось сделать через OpenGL ES и NativeActivity проще.

Угу.

Правда будет работать только начиная с Android 2.3 (но их больше 90%, судя по статистике).

Я давно забил на девайсы с андроидом меньше 2.3.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.