|
свой драйвер АЦП, два пути |
|
|
|
 |
Ответов
|
Aug 30 2013, 15:33
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Драйвер АЦП, имхо, по простому - это символьное устройство: данные накапливаются в fifo, размер которого превышает максимальное время опроса. Метка времени отсчетам не нужна, потому что если частота дискретизации постоянная, время отсчета можно узнать по номеру отсчета в буфере, относительно последнего. Если АЦП является неотьемлемой частью системы, т.е. подключен в течение всего времени работы устройства, udev не нужен, потому что при этом драйвер включается на шину при старте ядра в MACHINE_START. udev нужен только при p&p. Регистрация устройства в /dev производится последовательностью вызовов register_chrdev, class_create, device_create при probe драйвера. После того как драйвер поднимется ядром при старте, ему доступны зарегистрированные в file_operations вызовы. Что касается sysfs, это просто интерфейс между драйвером и юзерспейсом, можно пользовать, а можно и нет. Как альтернатива, например, вызов ioctl драйвера. Кроме того, sysfs удобен с т.з. настройки устройства, выдачи статистики драйвера и т.п. поскольку позволяет работать c устройством через echo/cat из консоли. Что касается встраивания устройства в различные фреймфорки (v4l) это, имхо, имеет смысл в случае, когда необходимо типовое использование устройства в основном в сторонних программах, в случае специфической подсистемы видимо это избыточно.
|
|
|
|
|
Aug 30 2013, 16:21
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(psL @ Aug 30 2013, 19:33)  Драйвер АЦП, имхо, по простому - это символьное устройство: данные накапливаются в fifo, размер которого превышает максимальное время опроса. Метка времени отсчетам не нужна, потому что если частота дискретизации постоянная, время отсчета можно узнать по номеру отсчета в буфере, относительно последнего. Если АЦП является неотьемлемой частью системы, т.е. подключен в течение всего времени работы устройства, udev не нужен, потому что при этом драйвер включается на шину при старте ядра в MACHINE_START. udev нужен только при p&p. Регистрация устройства в /dev производится последовательностью вызовов register_chrdev, class_create, device_create при probe драйвера. После того как драйвер поднимется ядром при старте, ему доступны зарегистрированные в file_operations вызовы. Что касается sysfs, это просто интерфейс между драйвером и юзерспейсом, можно пользовать, а можно и нет. Как альтернатива, например, вызов ioctl драйвера. Кроме того, sysfs удобен с т.з. настройки устройства, выдачи статистики драйвера и т.п. поскольку позволяет работать c устройством через echo/cat из консоли. Что касается встраивания устройства в различные фреймфорки (v4l) это, имхо, имеет смысл в случае, когда необходимо типовое использование устройства в основном в сторонних программах, в случае специфической подсистемы видимо это избыточно. Нет желания спорить по всем пунктам, по которым не согласен. Лишь о главном. V4L это video for Linux. Я не вижу никакого смысла делать драйвер АЦП в видео системе. Кстати уже давно используется новая версия V4L2. То что вы называете fifo, используется не только в видео фор линукс, но и в сетевых драйверах, USB драйверах, фрейм буферах и т.д.. Это называется ПДП (DMA). Зачем надо усложнять драйвер ненужными наворотами из видео системы, когда можно написать простой с использованием ПДП? посмотите что такое udev и как он создает пайпы для всех устройств, а не только PnP http://www.iredale.net/p/by-title/introduc...tion-latest.pdf
|
|
|
|
|
Aug 30 2013, 20:09
|
Знающий
   
Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390

|
Цитата(Tarbal @ Aug 30 2013, 20:21)  V4L это video for Linux. Я не вижу никакого смысла делать драйвер АЦП в видео системе. Кстати уже давно используется новая версия V4L2. То что вы называете fifo, используется не только в видео фор линукс, но и в сетевых драйверах, USB драйверах, фрейм буферах и т.д.. Это называется ПДП (DMA). Зачем надо усложнять драйвер ненужными наворотами из видео системы, когда можно написать простой с использованием ПДП? посмотите что такое udev и как он создает пайпы для всех устройств, а не только PnP http://www.iredale.net/p/by-title/introduc...tion-latest.pdfНе нужно путать мягкое с мокрым. FIFO - это способ организации памяти по принципу первый вошел, первый вышел, а ПДП - механизм обмена периферии с памятью на прямую, без участия процессора. При том, что fifo можно заполнять хоть по полингу, а ПДП м.б. к одному адресу памяти  udev для встраиваемых систем вообще избыточен, поскольку состав подключаемого оборудования известен заранее и находится уже на борту. Обычно используют mdev из bb Хотя может вы про adc на usb или pci шине. V4L (про 2 в курсе  ) приведен как пример (было в предыдущих постах), по поводу АЦП в V4L - во-первых, видеосигналы и АЦП бывают разные, во-вторых, аудиопоток в видео никто не отменял
|
|
|
|
|
Aug 31 2013, 17:11
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(psL @ Aug 31 2013, 00:09)  по поводу АЦП в V4L - во-первых, видеосигналы и АЦП бывают разные, во-вторых, аудиопоток в видео никто не отменял Вы о чем? Вопрос стоит как проще сделать драйвер для АЦП, а не о способах использования АЦП в муьтимедиа даже если для вас это наиболее удобный способ подключить АЦП. Цитата(psL @ Aug 31 2013, 00:09)  Не нужно путать мягкое с мокрым. FIFO - это способ организации памяти по принципу первый вошел, первый вышел, а ПДП - механизм обмена периферии с памятью на прямую, без участия процессора. При том, что fifo можно заполнять хоть по полингу, а ПДП м.б. к одному адресу памятиwink.gif ПДП может - скопировать блок памяти в другое место - пересылать значение из фиксированного адреса в инкрементируемый поинтер (назовем так для краткости изложения) - пересылать из инкрементируемого адреса в фиксированный. Я натянул второй метод на фифо, хотя он гораздо удобнее -- он сразу доставит данные. Но если вы настаиваете, то имея ПДП фифо не нужен как страшный сон. Цитата(psL @ Aug 31 2013, 00:09)  udev для встраиваемых систем вообще избыточен, поскольку состав подключаемого оборудования известен заранее и находится уже на борту. Обычно используют mdev из bb Это уже придирка. Я имел ввиду udev как концепцию в противовес методу делать пайпы вручную.
Сообщение отредактировал Tarbal - Aug 31 2013, 17:15
|
|
|
|
|
Aug 31 2013, 17:37
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата Но если вы настаиваете, то имея ПДП фифо не нужен как страшный сон. Скоростная периферия работает не с контроллером DMA а сама является bus master и фифо там нужен чтобы смягчить нагрузку на шину. Периферии попроще - тоже самое, только чтобы упростить жизнь контроллеру DMA у которого каналов до и более. Без фифо любит делать атмел - кривейшая периферия наверно из того с чем встречался. Хотя я вас возможно неправильно понял (тут вы сами виноваты) и имеется ввиду фифо в общей памяти а не локальная память периферийных устройств, так без буферов для DMA которые в очередь как фифо выстраиваются ни одна нормальная ОС не обходится.
Сообщение отредактировал sasamy - Aug 31 2013, 18:07
|
|
|
|
|
Aug 31 2013, 17:57
|
Профессионал
    
Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439

|
Цитата(sasamy @ Aug 31 2013, 21:37)  Скоростная периферия работает не с контроллером DMA а сама является bus master и фифо там нужен чтобы смягчить нагрузку на шину. Периферии попроще - тоже самое, только чтобы упростить жизнь контроллеру DMA у которого каналов до и более. Без фифо любит делать атмел - кривейшая периферия наверно из того с чем встречался. Я с этим не спорю. Разве вопрос стоит о том как устроена скоростная периферия? Давайте не будем уходить в теорию в то время, когда человеку надо решить его конкретную проблему. Был вопрос как проще сделать драйвер для АЦП и каким способом сделать это правильно, чтобы /sys был заполнен необходимыми псевфо файлами. Я предложил как это сделать. Что имеется ввиду под фифо в контексте данной задачи я смутно себе представляю. Надо поставить какой-то дополнительный чип? Или как? Исполнить его программно в интеррапте? В то же время процессор имеет немерянное число каналов ПДП, один из которых прекрасно справится с работой. В то же время использование мультимедиа драйверов в качестве прототипа я считаю не лучшим подходом.
|
|
|
|
|
Aug 31 2013, 18:17
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(Tarbal @ Aug 31 2013, 21:57)  Был вопрос как проще сделать драйвер для АЦП и каким способом сделать это правильно Пример V4l2 - это как можно не напрягая мозг использовать фреймворк у которого есть готовые средства для управления памятью ( буфер DMA + метаинформация) буферы отображаются в памяти пользовательского процесса и позволяют избежать лишнего копирования за счет CPU которе неизбежно будет при использовании read/write (copy_to_user()/copy_from_user() ) Цитата Что имеется ввиду под фифо в контексте данной задачи Кольцевая очередь (циклический двусвязный список) из этих буферов (вернее их там две). Кто и по какому интерфейсу заполняет буферы - вообще не важно, хоть за счет ЦПУ. Цитата В то же время использование мультимедиа драйверов в качестве прототипа я считаю не лучшим подходом. Естественно, есть готовые фреймворки, но ТС непременно хочет _свой_, он так и написал.
Сообщение отредактировал sasamy - Aug 31 2013, 19:08
|
|
|
|
Сообщений в этой теме
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 Hoodwin В новой модели драйверов тоже есть свои неудобства... Aug 27 2013, 14:17 Tarbal Цитата(Hoodwin @ Aug 27 2013, 18:17) В но... Aug 27 2013, 22:50  Tarbal Цитата(Tarbal @ Aug 28 2013, 02:50) Это н... Aug 28 2013, 13:08   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       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
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0
|
|
|