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

 
 
> свой драйвер АЦП, два пути
TigerSHARC
сообщение Jun 13 2013, 11:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Надобно написать драйвер(модуль ядра) АЦП.

Прочитав Linux Device Drevers вижу очевидный путь: пишу модуль ядра, который представляет собой standalone программу, принимающую данные от АЦП поп рерыванию от АЦП(сигнал когда данные готовы), и оформленную как собственно модуль/драйвер для Linux (благо доступ к регистрам есть из пространства ядра)

Но! Вижу что устройства "по-хорошему" регистрируются в sysfs, а вот этот путь не совсем понятен.

Вопрос: чем чреват первый путь и и как писать для второго(статейки может какие есть с примерами...)?

Сообщение отредактировал TigerSHARC - Jun 13 2013, 11:30
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hoodwin
сообщение Aug 27 2013, 14:17
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 881
Регистрация: 21-03-10
Из: _// \\_
Пользователь №: 56 107



В новой модели драйверов тоже есть свои неудобства. Например, можно взять стандартный UART 16550. Это довольно распространенный контроллер, для которого существует много вариантов сопряжения с основным процессором: через ISA, PCI, наконец в современных системах на кристалле это вариант platform_device. Мне вот пришлось делать подобное для "новой" шины VLYNQ. Так вот проблема в том, что программно интерфейс для всех реализаций самого 16550 одинаковый, но приходится писать разные драйверы и регистрировать их в разных шинах. Получается вместо повторного использования кода его дублирование.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 27 2013, 22:50
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Hoodwin @ Aug 27 2013, 18:17) *
В новой модели драйверов тоже есть свои неудобства. Например, можно взять стандартный UART 16550. Это довольно распространенный контроллер, для которого существует много вариантов сопряжения с основным процессором: через ISA, PCI, наконец в современных системах на кристалле это вариант platform_device. Мне вот пришлось делать подобное для "новой" шины VLYNQ. Так вот проблема в том, что программно интерфейс для всех реализаций самого 16550 одинаковый, но приходится писать разные драйверы и регистрировать их в разных шинах. Получается вместо повторного использования кода его дублирование.

Это не относится к новой или старой модели. Просто драйверы принадлежат шинам.
Новое это как делать pipes в /dev. При помощи скрипта или система сама сделает посредством udev.
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Aug 28 2013, 13:08
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(Tarbal @ Aug 28 2013, 02:50) *
Это не относится к новой или старой модели. Просто драйверы принадлежат шинам.
Новое это как делать pipes в /dev. При помощи скрипта или система сама сделает посредством udev.


У меня есть несколько книг по Линукс драйверам. Не скажу за все, но три, которые самые крутые (на мой взгляд) написаны как справочники. Из них трудно получить информацию о том, чего не знаешь. Я описал вам самый сокровенный механизм установки драйвера. Будете вы создавать pipe или нет неважно. Устройство создавать обязательно надо, иначе драйвер не встанет. Ну разве что если работать через procfs. Но зачем делать через одно место? Есть вспомогательный механизм доступа, но он не основной и использовать его вместо основного неправильно. Вот как то, что я описал описывается в довольно завуалированной форме в Библии драйверов Линукса:

Add a Driver
A PCI driver is added to the PCI core when it calls the pci_register_driverfunction.
This function merely initializes the struct device_driver structure that is contained
within the struct pci_driver structure,as previously mentioned in the section
about adding a device. Then the PCI core calls the driver_register function in the
driver core with a pointer to the struct device_driver structure contained in the
struct pci_driver structure.
The driver_register function initializes a few locks in the struct device_driver structure,and then calls the bus_add_driver function.
This function does the following steps:
• Looks up the bus that the driver is to be associated with. If this bus is not found,
the function instantly returns.
• The driver’s sysfs directory is created based on the name of the driver and the
bus that it is associated with.
• The bus’s internal lock is grabbed,and then all devices that have been registered
with the bus are walked,and the match function is called for them,just like
when a new device is added. If that match function succeeds,then the rest of the
binding process occurs, as described in the previous section.

(LINUX DEVICE DRIVERS THIRD EDITION Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman)

Тот кто не знает о чем речь скажет, мне надо не PCI, а другой драйвер и читать это не будет, а это ключевой для всех драйверов механизм.


Для нас главное понимать драйверы так как понимают их те, кто разработал систему -- иначе все встанет криво. Вот я недавно делал аудио драйвер для чипа CX20709-Z21. Вроде драйвер, но в понимании драйвера Линуксом, в нем три драйвера. на все кроме одного в теле "драйвера" созданы устройства, но разработчик системы должен создать еще одно устройство в файле где конкретный борд настраивается. Это вообще I2C driver. Так что надо прояснить то, что мы называем драйвером и как оно соотносится с тем как это понятие соответствует понятию, использованную в системе.
Грустно, что индусы каждое слово хватают, а мы норовим каждый по своему сделать.



Цитата(A. Fig Lee @ Aug 28 2013, 06:28) *
А вот в V4L эта проблема решена


А какие шины там используются?
Мне кажется, что только platform.
Ссылку на код можешь дать?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TigerSHARC   свой драйвер АЦП   Jun 13 2013, 11:29
- - DASM   Ну вообще доступ к регистрам можно и из пользовате...   Jun 13 2013, 12:21
|- - TigerSHARC   Цитата(DASM @ Jun 13 2013, 16:21) Ну вооб...   Jun 13 2013, 13:39
- - DASM   Не, так делать не надо. Но можно.. Мне если лень д...   Jun 13 2013, 14:37
- - Hoodwin   С sysfs пробовал немного, все же это не совсем фай...   Jun 13 2013, 21:50
|- - Муравей   Цитата(Hoodwin @ Jun 14 2013, 01:50) Собс...   Jul 12 2013, 10:47
|- - DASM   Цитата(Муравей @ Jul 12 2013, 14:47) Тоже...   Aug 6 2013, 02:47
- - Idle   Цитата(TigerSHARC @ Jun 13 2013, 15:29) В...   Jun 18 2013, 03:57
- - Ya_Mike   Как-то пользовался драйвером АЦП для at91-adc, для...   Jun 28 2013, 13:13
|- - denyslb   Цитата(Ya_Mike @ Jun 28 2013, 16:13) Как-...   Jun 29 2013, 01:38
|- - Ya_Mike   Цитата(denyslb @ Jun 29 2013, 05:38) Мне ...   Jul 4 2013, 13:24
|- - sasamy   Цитата(Ya_Mike @ Jul 4 2013, 17:24) Можно...   Jul 4 2013, 14:52
|- - denyslb   Цитата(Ya_Mike @ Jul 4 2013, 16:24) Откры...   Jul 26 2013, 09:22
- - vshemm   В ядре (хоть и в staging) есть специальный фреймво...   Jul 5 2013, 11:44
|- - sasamy   Цитата(vshemm @ Jul 5 2013, 15:44) В ядре...   Jul 5 2013, 19:29
- - Tarbal   в /sys драйвер появится усилиями операционной сист...   Aug 22 2013, 15:14
|- - Dubov   Цитата(Tarbal @ Aug 22 2013, 19:14) в /sy...   Aug 26 2013, 13:38
|- - Tarbal   Цитата(Dubov @ Aug 26 2013, 17:38) интере...   Aug 26 2013, 14:34
- - Dubov   Ну а кроме устарелости моей практики, что можно ск...   Aug 26 2013, 15:16
|- - Tarbal   Цитата(Dubov @ Aug 26 2013, 19:16) Ну а к...   Aug 27 2013, 01:25
||- - A. Fig Lee   Цитата(Tarbal @ Aug 28 2013, 09:08) А как...   Aug 29 2013, 00:26
||- - Tarbal   Цитата(A. Fig Lee @ Aug 29 2013, 04:26) Н...   Aug 29 2013, 19:57
||- - A. Fig Lee   Цитата(Tarbal @ Aug 29 2013, 15:57) What ...   Aug 29 2013, 22:20
||- - Tarbal   Цитата(A. Fig Lee @ Aug 30 2013, 02:20) h...   Aug 30 2013, 11:21
||- - A. Fig Lee   Цитата(Tarbal @ Aug 30 2013, 07:21) Если ...   Aug 30 2013, 16:04
||- - Tarbal   Цитата(A. Fig Lee @ Aug 30 2013, 20:04) ...   Aug 30 2013, 22:08
||- - A. Fig Lee   Цитата(Tarbal @ Aug 30 2013, 18:08) Это н...   Aug 30 2013, 23:57
|- - A. Fig Lee   Цитата(Hoodwin @ Aug 27 2013, 10:17) В но...   Aug 28 2013, 02:28
- - psL   Драйвер АЦП, имхо, по простому - это символьное у...   Aug 30 2013, 15:33
|- - Tarbal   Цитата(psL @ Aug 30 2013, 19:33) Драйвер ...   Aug 30 2013, 16:21
|- - psL   Цитата(Tarbal @ Aug 30 2013, 20:21) V4L э...   Aug 30 2013, 20:09
|- - Tarbal   Цитата(psL @ Aug 31 2013, 00:09) по повод...   Aug 31 2013, 17:11
|- - sasamy   ЦитатаНо если вы настаиваете, то имея ПДП фифо не ...   Aug 31 2013, 17:37
||- - Tarbal   Цитата(sasamy @ Aug 31 2013, 21:37) Скоро...   Aug 31 2013, 17:57
||- - sasamy   Цитата(Tarbal @ Aug 31 2013, 21:57) Был в...   Aug 31 2013, 18:17
||- - Tarbal   Цитата(sasamy @ Aug 31 2013, 22:17) Приме...   Aug 31 2013, 19:51
||- - sasamy   Цитата(Tarbal @ Aug 31 2013, 23:51) я не ...   Sep 2 2013, 14:07
||- - Tarbal   Цитата(sasamy @ Aug 31 2013, 18:07) Кольц...   Sep 3 2013, 13:29
||- - sasamy   Цитата(Tarbal @ Sep 3 2013, 17:29) Я пола...   Sep 3 2013, 16:14
||- - Tarbal   ЦитатаУ процессора может и не быть ПДП к АЦП. Тогд...   Sep 3 2013, 16:24
||- - sasamy   Цитата(Tarbal @ Sep 3 2013, 20:24) самое ...   Sep 3 2013, 17:46
|- - psL   Цитата(Tarbal @ Aug 31 2013, 21:11) имея ...   Sep 2 2013, 16:48
- - Tarbal   Интересно стало: есть ли здесь кто-нибудь кто писа...   Sep 4 2013, 17:26
|- - sasamy   Цитата(Tarbal @ Sep 4 2013, 21:26) Интере...   Sep 5 2013, 06:58
- - vshemm   Есть, писали Comedi самый старый фреймворк, для ...   Sep 5 2013, 07:30
|- - sasamy   Цитата(vshemm @ Sep 5 2013, 11:30) Comedi...   Sep 5 2013, 11:11
- - Tarbal   Теперь такая проблема. У меня ЦПУ Freescale Cortex...   Sep 5 2013, 12:26
|- - vshemm   Цитата(Tarbal @ Sep 5 2013, 16:26) Теперь...   Sep 5 2013, 13:00
|- - Tarbal   Цитата(vshemm @ Sep 5 2013, 17:00) Так, к...   Sep 5 2013, 13:29
|- - vshemm   Цитата(Tarbal @ Sep 5 2013, 17:29) И чем ...   Sep 5 2013, 14:32
- - Tarbal   Моя проблема в том, что в ссылке, что вы дали под ...   Sep 5 2013, 15:01
|- - vshemm   Цитата(Tarbal @ Sep 5 2013, 19:01) Моя пр...   Sep 5 2013, 15:25
||- - Tarbal   TigerShark если у вас будут вопросы по реализации ...   Sep 5 2013, 19:08
|- - sasamy   Цитата(Tarbal @ Sep 5 2013, 19:01) Кстати...   Sep 6 2013, 07:49
- - Tarbal   Вопрос знатокам. В данный момент я делаю драйвер e...   Sep 6 2013, 11:04
- - vshemm   Цитата(Tarbal @ Sep 6 2013, 15:04) Вопрос...   Sep 7 2013, 17:27
- - Tarbal   Цитата(vshemm @ Sep 7 2013, 21:27) Выбор ...   Sep 8 2013, 21:11
- - sasamy   Цитата(Tarbal @ Sep 9 2013, 01:11) Kак сд...   Sep 9 2013, 05:44
- - Tarbal   Цитата(sasamy @ Sep 9 2013, 09:44) Ваш во...   Sep 9 2013, 11:50


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

 


RSS Текстовая версия Сейчас: 27th July 2025 - 04:01
Рейтинг@Mail.ru


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