-
- Использование ДМА позволяет не избавится от прерываний совсем (в этом нет никакого профита), а получить реальный выигрыш по КАЖДОМУ принятому в ДМА байту за счет ликвидации латентности и брутто-кода обработчика. То есть этот выигрыш умножается на my504(646 знак., 07.04.2017 11:48)
- Т.е. фактически ДМА используется для увеличения размера ФИФО УАРТа и имеет смысл там, где ФИФО нет или его размер почему-то не достаточный. - AlexBi(07.04.2017 12:28)
- Абсолютно согласен. По большому счету, FIFO и есть разновидность ДМА, только со стековой памятью. my504(91 знак., 07.04.2017 12:57)
- Стековая память это уже стало ФИФО ? :) - Petrovich(07.04.2017 15:06, )
- Наоборот. ФИФО и ЛИФО - две разновидности стековой памяти. Правда нынешняя терминология к стеку относит только ЛИФО, но я как то со времен института неправильно полагал стек видом безадресной памяти с последовательным доступом. - my504(07.04.2017 15:09 - 15:21)
- Вообще-то, если быть точным, LIFO - стек, FIFO - очередь. - Bill(07.04.2017 20:06)
- Наоборот. ФИФО и ЛИФО - две разновидности стековой памяти. Правда нынешняя терминология к стеку относит только ЛИФО, но я как то со времен института неправильно полагал стек видом безадресной памяти с последовательным доступом. - my504(07.04.2017 15:09 - 15:21)
- Стековая память это уже стало ФИФО ? :) - Petrovich(07.04.2017 15:06, )
- Абсолютно согласен. По большому счету, FIFO и есть разновидность ДМА, только со стековой памятью. my504(91 знак., 07.04.2017 12:57)
- Нет. Использование ДМА может оправдано при приеме большого пакета данных с заранее известной длиной, но чаще всего,например в Модбасе, не даст профита, кроме того, теряем аппаратную проверку ошибок каждого байта. - Petrovich(07.04.2017 12:11, )
- как раз очень хорошо использую дма для модбас. Под RTOS вызывают задачу каждые n-мс в зависимости от скорости, смотрю дма, если кол-во байт не изменилось с последней проверки и больше 0, тогда уже запускаю обработку. в общем случае получается AVF(127 знак., 07.04.2017 15:11)
- Если Modbus - RTU, то еще проверка таймаутов жизнь осложняет - AlexG(07.04.2017 19:18)
- А... флаг прихода байта не судьба пощупать? :) - Petrovich(07.04.2017 15:32, )
- С какой частотой щупать? Если 115200 - >10тыс раз в секунду. А если 1-2 МБит? Щупалка отвалится. - Apтём(07.04.2017 18:08 - 18:16)
- А я что либо говорил про Модбас? Я как раз НАОБОРОТ предупреждал, что все зависит от протокола. Стандартные протоколы никто не оптимизировал под ДМА. Естественно, что и профита не будет. - my504(07.04.2017 12:27)
- как раз очень хорошо использую дма для модбас. Под RTOS вызывают задачу каждые n-мс в зависимости от скорости, смотрю дма, если кол-во байт не изменилось с последней проверки и больше 0, тогда уже запускаю обработку. в общем случае получается AVF(127 знак., 07.04.2017 15:11)
- Кстати, у меня избавление от прерывания дало реальный профит. Потому что прерывание используется для важного процесса, и ему не хочется мешать. И с приоритетами заморачиваться тоже не хочется. "Вот как бывает"© - SciFi(07.04.2017 12:07)
- "Все остальные проверки (включая четность) легко осуществляются в парсере". Имеется ввиду одна ошибка четности на весь пакет? - vllv(07.04.2017 11:58)
- Т.е. фактически ДМА используется для увеличения размера ФИФО УАРТа и имеет смысл там, где ФИФО нет или его размер почему-то не достаточный. - AlexBi(07.04.2017 12:28)
- Всё-таки любая контрольная сумма с некоторой вероятностью пропускает испорченные данные, поэтому идеологически правильно ловить ошибки на уровне канала. - SciFi(07.04.2017 10:41)
- Использование ДМА позволяет не избавится от прерываний совсем (в этом нет никакого профита), а получить реальный выигрыш по КАЖДОМУ принятому в ДМА байту за счет ликвидации латентности и брутто-кода обработчика. То есть этот выигрыш умножается на my504(646 знак., 07.04.2017 11:48)