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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Система сбора данных, 60 дифференциальных каналов, дискретизация 500-2500гц
DS
сообщение Aug 25 2010, 10:27
Сообщение #16


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



А откуда ограничение на 4 Кбайта ? В PLX, например, 16 мегабайт за раз можно передать. А кольцевой буфер легче реализуется вместо списков, если, например, логика DMA делается руками. Может, Вы какую-то конкретную реализацию контроллера имеете в виду ?


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 25 2010, 10:35
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(DS @ Aug 25 2010, 14:27) *
А откуда ограничение на 4 Кбайта ? В PLX, например, 16 мегабайт за раз можно передать. А кольцевой буфер легче реализуется вместо списков, если, например, логика DMA делается руками. Может, Вы какую-то конкретную реализацию контроллера имеете в виду ?


Ограничение на пересылку в 4 килобайта следует из размера памяти на плате.
Руками проще делается пинг-понг, чем полноценный кольцевой буфер. Но и для него обычно стартовый адрес очередного свободного буфера легко прописывается ЦП при обработке прерывания, превращая пинг-понг в список из двух буферов.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 25 2010, 10:43
Сообщение #18


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Так память на плате для DMA обычно вообще прозрачна - это FIFO на случай приостановки DMA. DMA шпарит со скоростью поступающих данных, длина ограничивается только физической длиной счетчика контроллера. Зачем же копить 4К, а потом спешно их выпихивать в шину ? Для реализации кольцевого DMA вообще кроме счетчика ничего не нужно, для двухбуферной схемы нужны доп. регистры. В серийных контроллерах, конечно, используются очереди DMA, поскольку это позволяет минимизировать пересылку данных. Но для низкосокоростной платы сбора данных можно и кольцо сделать для упрощения драйвера.

В общем, дальше уже холивар, поскольку конечный результат можно получить и так и так, например отдавая пользователю указатель на кусок данных в кольцевом буфере.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 25 2010, 10:55
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(DS @ Aug 25 2010, 14:43) *
Для реализации кольцевого DMA вообще кроме счетчика ничего не нужно, для двухбуферной схемы нужны доп. регистры.


Допустим, кроме счетчика еще нужны пороги для генерации прерываний и контроль переполнений, чтобы знать, что данные запороты, в случае чего. И регистр адреса начала буфера - тоже. Нет большой разницы, один или два.


Цитата(DS @ Aug 25 2010, 14:43) *
В общем, дальше уже холивар, поскольку конечный результат можно получить и так и так, например отдавая пользователю указатель на кусок данных в кольцевом буфере.


Вы знаете простой способ отдать пользователю указатель на кусок памяти в буфере, не аллокированного ранее самим пользователем?



--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 25 2010, 10:55
Сообщение #20


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Oldring @ Aug 25 2010, 14:49) *
Допустим, кроме счетчика еще нужны пороги для генерации прерываний и контроль переполнений, чтобы знать, что данные запороты, в случае чего. И регистр адреса начала буфера - тоже. Нет большой разницы, один или два.


Прерывание генерится по установке в 1 старшего разряда счетчика, регсистр начала обязателен в любом случае. Контроль переполнений производит драйвер, считывая значение счетчика при выходе из прерывания. Удобство в том, что запустил один раз - и забыл. Но, еще раз повторюсь, можно реализовать бесчисленным множеством вариантов. Главное - размер буфера данных должен предусматривать большую задержку обработки прерывания.

Не знаю. Я сам программизмом под Windows стараюсь поменьше вообще не заниматься. Хотя вот последние пару месяцев пришлось разбираться - умер программист, программа большая, писалась и дописывалась около 8 лет, надо хотя бы разобрать все до состояния, когда можно поручить вновь взятому человеку.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 25 2010, 11:05
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(DS @ Aug 25 2010, 14:55) *
Прерывание генерится по установке в 1 старшего разряда счетчика, регсистр начала обязателен в любом случае. Контроль переполнений производит драйвер, считывая значение счетчика при выходе из прерывания. Удобство в том, что запустил один раз - и забыл.


Что, одно прерывание на весь буфер?
Не очень надежный контроль переполнения. При длительных задержках (а если переполнение произойдет - наверняка задержка будет длительной) переполнение таким образом детектируется ненадежно. Если я Вас правильно понял.

"Запустил один раз - и забыл" - так не бывает, так как всё равно есть поток запросов к драйверу от пользовательского кода.

Цитата(DS @ Aug 25 2010, 14:55) *
Я сам программизмом под Windows стараюсь поменьше вообще не заниматься. Хотя вот последние пару месяцев пришлось разбираться - умер программист, программа большая, писалась и дописывалась около 8 лет, надо хотя бы разобрать все до состояния, когда можно поручить вновь взятому человеку.


Соболезную.
Желаю Вам всё же в программе успешно разобраться в конце концов.
Если там применены какие-то нестандартные приемы по передаче информации из драйвера в пользовательскпий код - это может оказаться непросто.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 25 2010, 11:08
Сообщение #22


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Цитата(Oldring @ Aug 25 2010, 15:03) *
Что, одно прерывание на весь буфер?
Не очень надежный контроль переполнения. При длительных задержках (а если переполнение произойдет - наверняка задержка будет длительной) переполнение таким образом детектируется ненадежно. Если я Вас правильно понял.

"Запустил один раз - и забыл" - так не бывает, так как всё равно есть поток запросов к драйверу от пользовательского кода.


Ну можно в счетчик несколько лишних разрядов + сбрасываемый чтением залипающий старший разряд для 100% обнаружения переполнения сделать. Это всего пяток триггеров. Обычно при таком переполнении это уже все лишнее.

Запустил - имелся ввиду процесс DMA. Пользователю дальше только надо будет указатели отдавать / в буфер копировать.

В любом случае думаю, что на исходный вопрос человек ответ получил.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 25 2010, 11:13
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(DS @ Aug 25 2010, 15:08) *
В любом случае думаю, что на исходный вопрос человек ответ получил.


А мне кажется, что как раз нет. biggrin.gif
Человек не спрашивал про возможность реализации, он спрашивал, про существующие платы.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 25 2010, 11:15
Сообщение #24


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Вроде мы тут уже с разных сторон рассмотрели, что 1 -4 К буфера не есть принципиальное ограничение, что его смущало.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Oldring
сообщение Aug 25 2010, 11:27
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 041
Регистрация: 10-01-05
Из: Москва
Пользователь №: 1 874



Цитата(DS @ Aug 25 2010, 15:15) *
Вроде мы тут уже с разных сторон рассмотрели, что 1 -4 К буфера не есть принципиальное ограничение, что его смущало.


Тем не менее, ответа на вопрос, что там на самом деле творится на этих существующих платах, нет.


--------------------
Пишите в личку.
Go to the top of the page
 
+Quote Post
DS
сообщение Aug 25 2010, 11:32
Сообщение #26


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Ну и названий же их тоже нет. Так что ответить невозможно. Так что предлагаю взять паузу до появления дополнительных вопросов или данных.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post
Клим
сообщение Aug 26 2010, 06:49
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 230
Регистрация: 7-04-08
Из: Украина, Запорожье
Пользователь №: 36 541



Цитата(DS @ Aug 25 2010, 14:32) *
Ну и названий же их тоже нет. Так что ответить невозможно. Так что предлагаю взять паузу до появления дополнительных вопросов или данных.

Как-то тема углубилась в написание драйверов )
Карты, например такие:
http://www.advantech.ru/products/PCI-1747U/mod_GF-HXGX.aspx
http://www.advantech.ru/products/PCI-1713U/mod_1-2MLGYK.aspx
http://sine.ni.com/nips/cds/view/p/lang/en/nid/14134
Буфер, кстати обычно указывается в кличестве семплов, а не байт.
Цитата(DS @ Aug 25 2010, 12:47) *
Ну мегабайт - это по нынешним временам совсем не много.

Я тоже так считаю, но производители почему-то придерживаются иного мнения.
Go to the top of the page
 
+Quote Post
DS
сообщение Sep 1 2010, 17:30
Сообщение #28


Гуру
******

Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250



Судя по описаниям, все подходят. NI получше смотрится, но, думаю, и стоит с отрывом от остальных.


--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
Go to the top of the page
 
+Quote Post

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

 


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


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