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

 
 
> Драйвер, написать самому
Dubov
сообщение Nov 12 2012, 10:21
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 408
Регистрация: 28-05-12
Пользователь №: 72 052



Стало необходимо написать свой драйвер SPI устройства. Драйвер для работы из пользовательского пространства не годится, так как данные нужно принимать от АЦП по SPI в DMA буфер непрерывно(пропуски в данных недопускаются) со скоростью 100К семплов в секунду, чего нельзя добится из user space. Из пользовательского пространства я планирую только забирать блоками через драйвер.
Для моей платформы есть файлы для работы с spi в папке /drivers/spi/

Вопрос:
файлы в /drivers/spi - это всё что нужно для написания своего драйвера(модуля ядра)?

Просто ранее я писал только standalone приложения и смущает отсутствие в Linux процедур прямого обращения к регистрам (здесь всё через обёртки какие то мудрёные).
В линукс смущает то что нету так привычных мне *.h файлов где через дефайны описаны адреса всех регистров (по мануалу).

Сообщение отредактировал Dubov - Nov 12 2012, 10:27
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vshemm
сообщение Nov 13 2012, 20:00
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 167
Регистрация: 15-08-07
Пользователь №: 29 803



Простейший способ "в лоб" - это char device, внутри которого 2 буфера, в один пишем, другой готов к чтению
из приложения через read(). При заполнении одного буфера DMA перезапускается на другой буфер. Либо "дмашить"
в кольцевой буфер. Как сделать лучше - см. спеки на железо.

Есть нюансы sm.gif Во-первых, вам нужно перезапустить DMA за 10мкс (по прерыванию, например). Не факт, что вы
успеете, т.к. если обращение к регистру занимает (к примеру) 1мкс, а вам нужно перезаписать 5шт - это уже 10мкс.
Некоторые DMA умны настолько, что могут сами брать дескрипторы из памяти и закольцовываться по их списку.
В этом случае перезапускать DMA нет необходимости. Если это не так и терять данные нельзя вообще - то вы
близки к теоретическому пределу железа - опять же, см. спеки на железо.
Во-вторых, при использовании своего char dev нужно убедиться, что никто через линуксовый SPI-фреймворк не
обращается к SPI контроллеру (и через DMA фреймворк тоже).

Что касается "сложности" драйверов в linux - это нормально sm.gif На самом деле там все довольно просто - почти
все разбито на слои и фреймворки для облегчения портируемости и расширения. Фактически, там используется ООП
подход, со всеми вытекающими. В итоге вход в это хозяйство усложняется (и кажется странным для людей
работавших до этого с МК осями/bare metal), но иначе никак. Вообще, такой подход характерен для всех
не-tiny мультиплатформенных ОС.

P.S. Есть фреймворк comedi, все еще стандарт де-факто для data acquisition. Но 100К семплов/с - немалая величина,
и с ней оверхед фреймворка может стать неприемлемым.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Dubov   Драйвер   Nov 12 2012, 10:21
- - Idle   Цитата(Dubov @ Nov 12 2012, 14:21) Просто...   Nov 12 2012, 11:20
|- - Dubov   Цитата(Idle @ Nov 12 2012, 15:20) Это не ...   Nov 12 2012, 12:46
|- - Idle   Цитата(Dubov @ Nov 12 2012, 16:46) так во...   Nov 12 2012, 13:24
|- - Dubov   Цитата(Idle @ Nov 12 2012, 17:24) а как д...   Nov 12 2012, 13:39
|- - Idle   Цитата(Dubov @ Nov 12 2012, 17:39) Вообще...   Nov 12 2012, 14:04
|- - Dubov   [quote name='Idle' date='Nov 12 2012, ...   Nov 12 2012, 14:56
|- - Idle   Цитата(Dubov @ Nov 12 2012, 18:56) Наскол...   Nov 12 2012, 15:25
|- - Dubov   Цитата(Idle @ Nov 12 2012, 19:25) ну вот ...   Nov 12 2012, 19:17
|- - alx2   Цитата(Dubov @ Nov 13 2012, 00:17) Я дума...   Nov 13 2012, 12:03
|- - Dubov   Цитата(alx2 @ Nov 13 2012, 16:03) Вам Idl...   Nov 13 2012, 12:08
|- - Idle   Цитата(alx2 @ Nov 13 2012, 16:03) Вам Idl...   Nov 13 2012, 16:14
|- - Dubov   Цитата(Idle @ Nov 13 2012, 20:14) ему над...   Nov 13 2012, 17:59
|- - alx2   Цитата(Idle @ Nov 13 2012, 21:14) ему над...   Nov 14 2012, 04:50
- - xor.kruger   Сначала ознакомьтесь с принципами функционирования...   Nov 12 2012, 11:54
|- - Dubov   Цитата(vshemm @ Nov 14 2012, 00:00) Прост...   Nov 14 2012, 05:37
|- - Idle   Цитата(Dubov @ Nov 14 2012, 09:37) А вот ...   Nov 14 2012, 06:31
|- - Dubov   Цитата(Idle @ Nov 14 2012, 10:31) посмотр...   Nov 14 2012, 06:53
|- - Idle   Цитата(Dubov @ Nov 14 2012, 10:53) гдеж э...   Nov 14 2012, 12:42
- - Dubov   Господа! Вопрос на засыпку: если 100кГц частот...   Nov 14 2012, 11:01
|- - vshemm   Цитата(Dubov @ Nov 14 2012, 09:37) так я ...   Nov 14 2012, 20:53
|- - Zelepuk   Цитата(vshemm @ Nov 15 2012, 00:53) 100КГ...   Nov 15 2012, 11:27
- - Dron_Gus   Неужели сложно сделать grep dma -R ./drivers/spi/ ...   Nov 16 2012, 13:53


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

 


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


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