Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:6
Форум » starterkit.ru » Embedded Linux
вызов ioctl
Franky
Добавлено 07.08.2012 08:51
0
Сообщение: 1
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Изучаю написание драйверов по книге "Linux device drivers". И в то же время смотрю в готовый исходник опроса драйвера АЦП. В связи с чем возник вопрос: хоть в кгиге и описан метод ожидания готовности данных(poll), можно ли те же функции(ожидание готовности данных) выполнить посредствам ioctl, передавая в качестве третьего арогумента указатель.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 07.08.2012 10:46 Редактировалось 07.08.2012 10:50 Сообщение: 2
sasamy
4.70

Пункты: 76920
Регистрация: 14.08.2009
но зачем ?? есть стандартные ф-ции (poll/select)- зачем городить непонятно что ? какую задачу вы не можете решить используя стандартные методы (poll/select + read) ?
Спуститься к концу Подняться к началу
Персональная информация
Franky
Добавлено 07.08.2012 12:18 Редактировалось 07.08.2012 12:54 Сообщение: 3
Franky
5

Пункты: 5030
Регистрация: 29.06.2010
Дело в том что я изучаю чужой исходник комерческого проекта, и там чтение производится путём ioctl(ioctl принимает в качестве аргумента указатель, который по всей видимости и указывает на блок данных, которые прочитаны). Вот и ломаю голову, зачем.
Попутно есть ещё один вопрос, я решил задать его здесь дабы не городить много тем.
Хочу забирать данные в драйвере во внутренний буфер по внешнему прерыванию, в книге "Linux device driver" это описано очень хорошо. Но я не пойму как задать номер прерывания (наверное это есть в даташите, но я пока не смог найти) и условия, если на AT91SAM9XE512 я хочу использовать прерывание IRQ1 по неспадающему фронту.

Хотя номер прерывания, думаю, должен быть отображён в виде макроса IRQ1. А вот как быть с ниспадающим фронтом - незнаю.
Спуститься к концу Подняться к началу
Персональная информация
dx
Добавлено 07.08.2012 17:04 Редактировалось 07.08.2012 17:14 Сообщение: 4
dx
3.5

Пункты: 7618
Регистрация: 26.10.2010
Пол: Мужчина
Из: Ukraine, Kiev city
Спуститься к концу Подняться к началу
Персональная информация
ARMbeginner
Добавлено 08.08.2012 00:16 Сообщение: 5
ARMbeginner
5

Пункты: 311
Регистрация: 30.05.2012
Цитата
но зачем ?? есть стандартные ф-ции (poll/select)- зачем городить непонятно что ? какую задачу вы не можете решить используя стандартные методы (poll/select + read) ?

если нет исходника драйвера, то остаётся только догадываться как читаются данные из устройства путём ioctl, НО!
если кроме ioctl в приложении ничего нет для чтения данных (указателя), то, вероятно, в драйвере используется DMA а в приложении используется ioctl, через которые юзерспейс просит драйвер замапить ему в адресное пространство dma-буфер. Мапится в драйвере через io_remap_pfn_range.
Спуститься к концу Подняться к началу
Персональная информация
chronoman
Добавлено 24.08.2012 13:28 Сообщение: 6
chronoman
0

Пункты: 295
Регистрация: 19.04.2010
А я еще через рт-сигналы посылал сразу по готовности данные в свой юзерспейс. Понятное дело, что перед этим при старте юзерспейса я передавал пид в драйвер. Наверное подход для извращенцев, но интересно поиграться со всякими разными механизмами чтобы выбрать наиболее эффективный-удобный в том или инном конкретном случае. Можно передавать обычный сигнал без данных, а данные уже вычитывать при приходе такого сигнала.
Думаю селект-полл неплохой вариант. И конечно же разбирайтесь в вашем случае. Кстати, кроме ЛДД3 (или ЛДД2) могу посоветовать вот это
Essential Linux device drivers, Author: Venkateswaran, Sreekrishnan
Если знаете немецкий то еще и
http://www.amazon.de/gp/product/3898646963/ref=oh_details_o00_s00_i00
У меня обе книжки в бумажном виде с библиотеки взятые, поэтому где скачать поищите. Будет как дополнение к достаточно непростой и не совсем удобной ЛДД3.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux