Цитата(cat_drugs @ Aug 8 2012, 11:19)

Извиняюсь, за поднятие столь старой темы, просто столкнулся с аналогичной проблемой.
Есть устройство, работающее на Андроид и есть у этого устройства чип с драйверами под Linux. С самими драйверами, я думаю, проблем возникнуь не должно никаких - кросс-компиляция под нужную архитектуру и все. Вопрос в другом - как мне теперь работать с этим драйвером из уровня приложения? Я так нигде и не нашел информации по теме

Можно ли это делать с помощью NDK? Если да, то где можно про это прочесть подробнее?
Заботу о взаимодействии драйвера и прикладного приложения берет на себя ядро, ос. Если брать за основу, что всё в Linux файлы, то при загрузке некоторых драйверов создается интерфейс в виде файла в папке /dev. Этим интерфейсом вы можете пользоваться вызывая библиотечные функции типа read(), write(). Хотя я точно не знаю, библиотечные ли это функции или прямые системные вызовы. Read, write из user space ядро транслирует в вызовы драйвера. В коде драйверов есть структура типа такой :
struct file_operations fops = {
.read = device_read,
.write = device_write,
.open = device_open,
.release = device_release
};
В коде драйвера все эти функции должны быть определены. То есть открывая файл в приложении, вы выбираете устройсво, вызывая read, write, вы работаете с устройством. Весь путь трансляции этих вызовов в вызовы драйвера берет на себя ядро. Почему не возникают вопросы по поводу работы прикладного софта с обычным текстовым файлом? Ведь читая из текстового файла вы ведь тоже работаете с железом в виде контроллера жесткого диска, к примеру.
NDK для Андроида, это набор скомпилированных библиотек, необходимых для компиляции вашего софта на С/С++ у себя на машине(не Android). Такие же библиотеки лежат уже на Android машине в соответсвии с весрией Andtoid и NDK. Native это у них вроде язык С/С++, не Native - Java(SDK). Там есть еще GDB, и система сборки их. Все это уже скомпилировано под ARM.