|
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
|
|
Через /dev или /proc29.10.2015, 14:17. Показов 1551. Ответов 8
Метки нет (Все метки)
Всем доброго времени суток. Появилась задача написать драйвер для PCI устройства. В ходе изучения литературы, в честности книги Колисниченко "Разработка Linux-приложений" появился вопрос: если необходимо передать данные из userspace в kernel, то через что лучше и правильнее это реализовывать? через /dev или /proc? в чем разница?
Спасибо
0
|
|
| 29.10.2015, 14:17 | |
|
Ответы с готовыми решениями:
8
Список таблиц участвующих в view или proc
|
|
Почетный модератор
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
|
|||
| 29.10.2015, 15:38 | |||
|
Например, у вас есть USB-камера... драйвер создаёт файл /dev/video0. Ваше приложение открывает этот файл и общается с ним через специальные ioctl запросы. В частности, может получить список поддерживаемых форматов видео, указать формат, с которым хочет работать, запросить буферы под кадры, запрашивать заполнение этих буферов и т.п. А через read() или mmap() можно вычитывать данные.
2
|
|||
|
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
|
|
| 29.10.2015, 20:24 [ТС] | |
|
Вы сказали приложение будет общаться через ioctl. Оно должно быть реализовано в драйвере, правильно? А в приложении будет формироваться строка, которая будет позже обычным write писаться в файл, верно?
0
|
|
| 29.10.2015, 22:31 | |
|
Это зависит от того как реализовать драйвер.
Драйвер может вообще не иметь ioctl() и всё общение с прогами будет через read/write Например, /dev/ttyS* - COM-порты. Ус-ва последовательные, т.е. только читаем/пишем, но с помощью ioctl можем менять режимы - битность данных, контроль чётности или скорость приёма-передачи... Все эти свойства реализует драйвер, а прога только пользуется тем, что ей предоставил драйвер. Например, для /dev/ttyS* я не знаю методов работы через mmap Обычно, для простых драйверов, так и происходит, а ioctl только управляют режимами и для получения статусной инфы. Иногда проге нужны большие объёмы данных передавать/читать драйверу или менять их в разных местах - тут на помощь mmap. Например драйвер имеет фиксированную область памяти к-либо железного девайса и необходимо дать доступ к ней проге юзера, например область памяти текстового режима экрана на 0xB800. Вместо того чтобы через read/write для изменения одного байта перегонять все 8Кб можно использовать mmap и там прога доберётся до каждого байта без большой передачи данных З.Ы. Я не писал дров под линух, только под ДОС, но мне это так видится. Если не прав - поправьте.
0
|
|
|
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
|
|
| 29.10.2015, 23:57 [ТС] | |
|
Драйвер планируется самый простейший. В наличии PCI железяка, произведенная в НИИ, простейший сетевой адаптер на коаксиале. Приложение должно отправить железяке адрес и данные, позже из этого соберется пакет, и он запускается в сеть. На другой стороне принимается пакет, забирается то что нужно и можно его для наглядности показать в терминале.
Вот как то так
0
|
|
| 30.10.2015, 00:42 | ||
|
1. Железка соединяется "один к одному" или "один ко многим"? 2. Адрес и настройки лучше отправлять/читать через ioctl 3. Какая будет нагрузка в потоке? 4. Надо ли впихивать железку в OSI-стек? От этих вопросов зависит архитектура и драйвера и приложений, с ентим драйвером работающих
0
|
||
|
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
|
|
| 30.10.2015, 10:14 [ТС] | |
|
1. Один ко многим. В сети может быть до 16 узлов, при оправке пакета происходит широковещательная рассылка и уже на принимающей стороне смотрят адрес, если это направлялось к нам, забираем, если нет - игнорируем.
2.насчет ioctl понял, буду реализовывать 3.точная нагрузка неизвестна, но она будет далеко от максимально возможной 4.нет, не надо
0
|
|
|
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
|
|
| 12.11.2015, 12:03 [ТС] | |
|
а как правильно реализовать mmap?? в инете полно примеров под старые ядра, и этот код под ядро 3.16 просто не работает
0
|
|
| 12.11.2015, 12:03 | |
|
Помогаю со студенческими работами здесь
9
Ида пишет proc near- это в общем для дикорации или что-нибудь означает? "webpack-dev-server" не является внутренней или внешней командой, исполняемой программой или пакетным файлом Ошибка или баг в Dev C++? Установка время через /dev/rtc пример с Gluit или OpenGL на Dev C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита табличной части. . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|