реклама на сайте
подробности

 
 
> Android, Взаимодействие с железом
toxxin
сообщение Mar 2 2011, 07:23
Сообщение #1





Группа: Участник
Сообщений: 10
Регистрация: 8-07-09
Пользователь №: 51 025



Доброго времени суток!
Существует недопонимание взаимодействия верхнего(пользовательского) уровня ОС Android и уровня драйверов. Если конкретнее - есть отладочная плата на OMAP3530, на ней поднят Android 2.2. Необходимо написать тестовое приложение(пустой экран и кнопочка), которое при нажатии кнопки отправляет данные по интерфейсу SPI и соответственно вызывает прерывание при приеме. На уровне linux все понятно - пишем драйвер интерфейса SPI, загружаем драйвер и работаем с файликом устройства /dev/spi. Но вот виртуальная машина Dalvik вряд ли даст просто так записать данные в файл устройства на нижнем уровне, да и не правильно это. Отсюда вытекает предположение о существовании некоего класса который бы осуществлял бы это взаимодействие. Собственно вопрос - где можно про это почитать и какой механизм для этого используется??
Спасибо!

Сообщение отредактировал toxxin - Mar 2 2011, 07:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
cat_drugs
сообщение Aug 8 2012, 07:19
Сообщение #2





Группа: Новичок
Сообщений: 1
Регистрация: 8-08-12
Пользователь №: 73 059



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


--------------------


Go to the top of the page
 
+Quote Post
Kirill_Good
сообщение Aug 19 2012, 06:51
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 217
Регистрация: 10-12-10
Из: Москва
Пользователь №: 61 528



Цитата(cat_drugs @ Aug 8 2012, 11:19) *
Извиняюсь, за поднятие столь старой темы, просто столкнулся с аналогичной проблемой.
Есть устройство, работающее на Андроид и есть у этого устройства чип с драйверами под Linux. С самими драйверами, я думаю, проблем возникнуь не должно никаких - кросс-компиляция под нужную архитектуру и все. Вопрос в другом - как мне теперь работать с этим драйвером из уровня приложения? Я так нигде и не нашел информации по теме sad.gif Можно ли это делать с помощью 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.

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 10:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.02255 секунд с 7
ELECTRONIX ©2004-2016