-
- Не понял. Что положить данные в буфер ПДП, что вывести на порт - затраты одинаковые. - Леонид Иванович(06.02.2012 19:59)
- В LPC навороченный DMA. В произвольном месте в памяти размещается связанный список. Контроллер DMA при окончании текущей пересылки сам выбирает оттуда следующие параметры для новой пересылки, выполняет ее. И т.д. Можно весьма замысловатые Гудвин(936 знак., 06.02.2012 20:35)
- Такой DMA, насколько я помню, называется scatter/gather DMA (SGDMA). Есть практически во всех сигнальниках (DSP) и даже драйвера (WDM) под Windows Me его вовсю использовали. - USSR(07.02.2012 05:27,
)
- Вам уже говорили - koyodza(06.02.2012 20:38, ссылка)
- Такой DMA, насколько я помню, называется scatter/gather DMA (SGDMA). Есть практически во всех сигнальниках (DSP) и даже драйвера (WDM) под Windows Me его вовсю использовали. - USSR(07.02.2012 05:27,
- разные. Потому что потактовая синхронность не нужна - koyodza(06.02.2012 20:04)
- Есть такое дело, но разница не в разы. Интересно, сделает ли STM32 на 24 МГц в задаче DDS AVR-а на 20 МГц? - Леонид Иванович(06.02.2012 20:16)
- Это бесполезные спортивные соревнования. Да AVR быстро бегает стометровку, почти обгоняет STM32 и даже точно обгоняет AT91. Но спорт сильно отличается от реальной жизни. В реальной жизни AT91 тянет на себе программный MP3-декодер, пусть и без DDS, fk0(39 знак., 07.02.2012 00:13)
- смотря как реализовать. Если на java... :=) koyodza(189 знак., 06.02.2012 20:29)
- 200 ксэмплов - это с интерполяцией. Вон =GM= делает на AVR 2.5 МГц. Кстати, он утверждает, что ПДП даст в DDS замедление. - Леонид Иванович(06.02.2012 20:45)
- Есть такое дело, но разница не в разы. Интересно, сделает ли STM32 на 24 МГц в задаче DDS AVR-а на 20 МГц? - Леонид Иванович(06.02.2012 20:16)
- В LPC навороченный DMA. В произвольном месте в памяти размещается связанный список. Контроллер DMA при окончании текущей пересылки сам выбирает оттуда следующие параметры для новой пересылки, выполняет ее. И т.д. Можно весьма замысловатые Гудвин(936 знак., 06.02.2012 20:35)
- Хотелось бы еще заметить, что DMA дает существенный выигрыш, когда а) работает с памятью и через свою отдельную (от ядра) шину и б) на больших потоках. Переслать десять байт "вручную" может оказаться быстрее, чем запрограммировать DMA для rezident(13 знак., 06.02.2012 16:15)
- Не согласен. То-есть 10 может и проще. Или даже 100000 при наличии достаточно глубокого FIFO. А когда нет FIFO, но есть DMA -- понятно, что DMA даёт выигрыш, независимо от шины, в том, что он освобождает CPU от тягомотной обработки прерывания на fk0(592 знак., 06.02.2012 23:55)
- большой FIFO - это сколько в граммах? - koyodza(06.02.2012 23:57)
- Настолько большой, что оверхед вызванный прерываниями становится мало заметным и задержка от прерывания до попадания в обработчик перестаёт волновать. Практически для UART это десятки, ближе к 128 байт, например. Практически 16 байт маловато fk0(249 знак., 07.02.2012 00:10)
- В DSP (DM8148/DM8168 и пр) есть большой FIFO на передачу - 64 Байта и большой FIFO на прием - 64 Байта. Кроме того, во многих DSP к каждому UART'у аппаратно привязаны по два канала DMA - на прием и на передачу. При этом DMA можно настроить на USSR(408 знак., 07.02.2012 05:05,
)
- вопрос второй: где (в каком МК) такой FIFO есть? koyodza(52 знак., 07.02.2012 00:45)
- В МК я не встречал. Но есть внешние FIFO с на порядки большими объёмами. Есть внешние же UART'ы (SPI и с параллельными шинами) с большими FIFO порядка 64-256 байт. Всем известный FT232 имеет то ли 128, то ли 256 байт. Во времена ISA и PCI модемов fk0(363 знак., 07.02.2012 01:17)
- если в МК не встречал, то о чём разговор? - koyodza(07.02.2012 11:33)
- В изделии конкурентов видел внешний UART рядом с МК... - fk0(07.02.2012 12:11)
- если в МК не встречал, то о чём разговор? - koyodza(07.02.2012 11:33)
- В МК я не встречал. Но есть внешние FIFO с на порядки большими объёмами. Есть внешние же UART'ы (SPI и с параллельными шинами) с большими FIFO порядка 64-256 байт. Всем известный FT232 имеет то ли 128, то ли 256 байт. Во времена ISA и PCI модемов fk0(363 знак., 07.02.2012 01:17)
- В DSP (DM8148/DM8168 и пр) есть большой FIFO на передачу - 64 Байта и большой FIFO на прием - 64 Байта. Кроме того, во многих DSP к каждому UART'у аппаратно привязаны по два канала DMA - на прием и на передачу. При этом DMA можно настроить на USSR(408 знак., 07.02.2012 05:05,
- Настолько большой, что оверхед вызванный прерываниями становится мало заметным и задержка от прерывания до попадания в обработчик перестаёт волновать. Практически для UART это десятки, ближе к 128 байт, например. Практически 16 байт маловато fk0(249 знак., 07.02.2012 00:10)
- большой FIFO - это сколько в граммах? - koyodza(06.02.2012 23:57)
- Не согласен. То-есть 10 может и проще. Или даже 100000 при наличии достаточно глубокого FIFO. А когда нет FIFO, но есть DMA -- понятно, что DMA даёт выигрыш, независимо от шины, в том, что он освобождает CPU от тягомотной обработки прерывания на fk0(592 знак., 06.02.2012 23:55)
- Не понял. Что положить данные в буфер ПДП, что вывести на порт - затраты одинаковые. - Леонид Иванович(06.02.2012 19:59)