|
Система сбора данных, 60 дифференциальных каналов, дискретизация 500-2500гц |
|
|
|
 |
Ответов
|
Aug 25 2010, 10:43
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

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

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

|
Цитата(DS @ Aug 25 2010, 14:43)  Для реализации кольцевого DMA вообще кроме счетчика ничего не нужно, для двухбуферной схемы нужны доп. регистры. Допустим, кроме счетчика еще нужны пороги для генерации прерываний и контроль переполнений, чтобы знать, что данные запороты, в случае чего. И регистр адреса начала буфера - тоже. Нет большой разницы, один или два. Цитата(DS @ Aug 25 2010, 14:43)  В общем, дальше уже холивар, поскольку конечный результат можно получить и так и так, например отдавая пользователю указатель на кусок данных в кольцевом буфере. Вы знаете простой способ отдать пользователю указатель на кусок памяти в буфере, не аллокированного ранее самим пользователем?
--------------------
Пишите в личку.
|
|
|
|
|
Aug 25 2010, 10:55
|
Гуру
     
Группа: СуперМодераторы
Сообщений: 3 096
Регистрация: 16-01-06
Из: Москва
Пользователь №: 13 250

|
Цитата(Oldring @ Aug 25 2010, 14:49)  Допустим, кроме счетчика еще нужны пороги для генерации прерываний и контроль переполнений, чтобы знать, что данные запороты, в случае чего. И регистр адреса начала буфера - тоже. Нет большой разницы, один или два. Прерывание генерится по установке в 1 старшего разряда счетчика, регсистр начала обязателен в любом случае. Контроль переполнений производит драйвер, считывая значение счетчика при выходе из прерывания. Удобство в том, что запустил один раз - и забыл. Но, еще раз повторюсь, можно реализовать бесчисленным множеством вариантов. Главное - размер буфера данных должен предусматривать большую задержку обработки прерывания. Не знаю. Я сам программизмом под Windows стараюсь поменьше вообще не заниматься. Хотя вот последние пару месяцев пришлось разбираться - умер программист, программа большая, писалась и дописывалась около 8 лет, надо хотя бы разобрать все до состояния, когда можно поручить вновь взятому человеку.
--------------------
Не бойтесь тюрьмы, не бойтесь сумы, не бойтесь мора и глада, а бойтесь единственно только того, кто скажет - "Я знаю как надо". А. Галич.
|
|
|
|
Сообщений в этой теме
Клим Система сбора данных Aug 25 2010, 07:42 DS Цитата(Клим @ Aug 25 2010, 11:42) Требует... Aug 25 2010, 08:16 Oldring Цитата(DS @ Aug 25 2010, 12:16) Если режи... Aug 25 2010, 08:31  DS Цитата(Oldring @ Aug 25 2010, 12:31) При ... Aug 25 2010, 08:39   Oldring Цитата(DS @ Aug 25 2010, 12:39) 1.5 мс вс... Aug 25 2010, 08:54    DS Цитата(Oldring @ Aug 25 2010, 12:54) 1/(6... Aug 25 2010, 08:59     Oldring Цитата(DS @ Aug 25 2010, 12:59) Я считал,... Aug 25 2010, 09:16      DS Цитата(Oldring @ Aug 25 2010, 13:16) 1/(2... Aug 25 2010, 09:21       Oldring Цитата(DS @ Aug 25 2010, 13:21) Да, прошу... Aug 25 2010, 09:24        DS Цитата(Oldring @ Aug 25 2010, 13:24) Маст... Aug 25 2010, 09:26         Oldring Цитата(DS @ Aug 25 2010, 13:26) Ну так пр... Aug 25 2010, 09:32          DS Цитата(Oldring @ Aug 25 2010, 13:32) Коль... Aug 25 2010, 09:47           Oldring Цитата(DS @ Aug 25 2010, 13:47) Косвенно ... Aug 25 2010, 09:53            DS Цитата(Oldring @ Aug 25 2010, 13:53) Не и... Aug 25 2010, 09:57             Oldring Цитата(DS @ Aug 25 2010, 13:57) Если начи... Aug 25 2010, 10:04 DS А откуда ограничение на 4 Кбайта ? В PLX, например... Aug 25 2010, 10:27 Oldring Цитата(DS @ Aug 25 2010, 14:27) А откуда ... Aug 25 2010, 10:35   Oldring Цитата(DS @ Aug 25 2010, 14:55) Прерывани... Aug 25 2010, 11:05    DS Цитата(Oldring @ Aug 25 2010, 15:03) Что,... Aug 25 2010, 11:08     Oldring Цитата(DS @ Aug 25 2010, 15:08) В любом с... Aug 25 2010, 11:13 DS Вроде мы тут уже с разных сторон рассмотрели, что ... Aug 25 2010, 11:15 Oldring Цитата(DS @ Aug 25 2010, 15:15) Вроде мы ... Aug 25 2010, 11:27 DS Ну и названий же их тоже нет. Так что ответить нев... Aug 25 2010, 11:32 Клим Цитата(DS @ Aug 25 2010, 14:32) Ну и назв... Aug 26 2010, 06:49 DS Судя по описаниям, все подходят. NI получше смотри... Sep 1 2010, 17:30
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|