Некоторые старые устройства с интерфейсом PCI, а именно, реализации звуковых карт семейства Sound Blaster, использовали DMA-контроллер 8237 из оригинальной архитектуры IBM PC. Такое использование, безусловно, является устаревшим для PCI, но поддерживалось с целью обеспечения полной совместимости по ПО и драйверам со звуковыми картами Sound Blaster для шины ISA. Если во время стрима dma на адресные светодиоды допустить задержку более нескольких микросекунд, то произойдёт плохо прогнозируемое искажение индикации на светодиодах. Однако задержку в микросекунду и меньше наши светодиоды успешно переносят. Поэтому для передачи информации на светодиоды применяется классический способ с таймером и ШИМ-ом, но при этом таймер имеет двойную буферизацию. В первичный буфер по DTC засылаются данные, а вторичный буфер генерирует паузу и грузится в первичный буфер если DTC не успевает записать данные из-за заторов на шине.

Архитектура, планирование и реализация DMA в микроконтроллерах Synergy

Дескрипторы описывающие, как должна выполняться пересылка DTC хранятся в RAM и при каждом запуске DTC считываются из RAM и записываются вновь в RAM после модификации счетчика пересылок и адресов источника и приёмника данных. Дескрипторы для 8-ми каналов DMA хранятся в самом модуле DMA и при старте DMA не нужно читать их из памяти. DTC допускает чтение дескрипторов и выполнение пересылок по цепочке, размер цепочки не ограничен. DMA не обладает возможностью отработки дескрипторов по цепочке. В модуле DMA в каждом канале отрабатывается один дескриптор записанный в сам модуль DMA. В жестких дисках с интерфейсом IDE технология ПДП получила свое развитие в виде дополнительных режимов ПДП, получивших название Ultra DMA (UDMA).

dma

Кастомная Прошивка или CFW для DMA карты. Почему это важно

Протокол этих светодиодов повторяет протокол светодиодов WS2812B. В нашем PLC модуль Ethernet не используется, как и модуль графического вывода. Область векторов DTC и управляющие пересылками DTC блоки (transfer information) должны располагаться в области SRAM0, SRAM1, чтобы не создавать дополнительных тактов при чтении-записи. Для решения проблемы ряд компаний, в том числе Intel, разработал контроллеры IDE с поддержкой DMA.

DMA и виртуальная память, IOMMU и AGP GART

Но в микроконтроллерах Synergy есть модули DMA Controller (DMAC ) и Data Transfer Controller (DTC). Многие операционные системы требовали действий администратора для использования IDE DMA. Так, например, стандартные ядра Linux до примерно 2004 года не имели такой поддержки, требовалось пересборка ядра с отредактированным файлом конфигурации.

  • Например, если процессор делает выборку команд из Flash и выборку операндов команд из HSRAM, то в это же самое время DTC без препятствий может пересылать данные из внешней SDRAM в периферию, например SPI.
  • В модуле DMA в каждом канале отрабатывается один дескриптор записанный в сам модуль DMA.
  • Их основное назначение — обеспечить быструю передачу больших объемов данных, не загружая центральный процессор.
  • Качественную прошивку никак на твоем компе не найдут даже на Т2 сцене турниров.
  • Особенно важно использование разновидности технологии ПДП – Ultra DMA в винчестерах на основе интерфейса IDE, что позволяет значительно ускорить обмен данными между накопителем IDE и материнской платой.
  • Как я уже и писал выше — сами читы (если у них Only Read метод) да, ЕДИНСТВЕННЫЙ способ обнаружить дма софт — это обнаружить “подозрительную” плату замаскированную под вашей прошивкой.
  • В шинах MicroChannel, SBus, разработанной под их большим влиянием PCI и её концептуальных производных AGP и PCI-X, используется иная реализация DMA.

Что такое ДМА карта и зачем она нужна

Из соображений безопасности ОС запрещает несистемным приложениям доступ к определенным разделам памяти. Однако некоторые комплектующие (такие как звуковые и сетевые карты) и устройства (например, внешние жесткие диски) для ускорения передачи данных могут обращаться к памяти напрямую. Для этого используются специальные интерфейсы, такие как Firewire, Thunderbolt, ExpressCard, PCI и PCI Express. Их основное назначение — обеспечить быструю передачу больших объемов данных, не загружая центральный процессор. Однако они позволяют обходить ограничения безопасности ОС, поэтому их эксплуатируют в атаках типа DMA. То устройство (функциональный узел), которое управляет пересылкой данных, называется контроллером ПДП.

Прямой доступ к памяти (англ. direct memory access, DMA) — режим обмена данными между устройствами компьютера или же между устройством и основной памятью, в котором центральный процессор (ЦП) не участвует. Так как данные не пересылаются в ЦП и обратно, скорость передачи увеличивается. Начиная с появления шины ввода-вывода PCI, концепция практической реализации ПДП претерпела изменения. В материнских платах с шиной PCI больше не использовался контроллер DMA, а вместо этого стала применяться технология Bus Mastering. Суть этой технологии заключается в том, что любое устройство может обратиться к шине и полностью использовать ее в своих целях, в том числе, и для доступа к оперативной памяти.

Кроме того, в шине PCI отпала необходимость в использовании каналов доступа к памяти. Подобный механизм используется также и в преемниках шины PCI –сверхбыстрых шинах AGP и PCI-Express. При этом процессор также не был полностью исключен из этого процесса.

Прежде всего, механизм ПДП инициализировался самим процессором, однако в ход процесса передачи данных он не вмешивался, занимаясь в это время другими задачами. После того, как обмен информацией между устройством и ОЗУ завершался, то процессор получал соответствующее прерывание, которое отсылал ему контроллера DMA. Особенно важно использование разновидности технологии ПДП – Ultra DMA в винчестерах на основе интерфейса IDE, что позволяет значительно ускорить обмен данными между накопителем IDE и материнской платой. Большинство устройств ПК нуждаются в периодическом обмене данными не только с центральным процессором (ЦП), но и с оперативной памятью.

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

Первоначальный контроллер жёсткого диска компьютера IBM PC/AT не поддерживал DMA и требовал передачи всех данных дискового ввода-вывода инструкциями REP INSW/REP OUTSW через порт 0x1f0. Нельзя допускать в линкере объединять области памяти SRAMHS и SRAM1 и 2, как это делается в простых демо проектах. Иначе переменные находящиеся на границе этих областей и пересекающие их будут вызывать сбой доступа или неверно читаться. Около 2000 года поддержка DMA по шине IDE/ATA развилась в сторону увеличения тактовой частоты шины, что потребовало нового типа кабеля от контроллера к диску с удвоенным числом проводников меньшего диаметра.

Кроме упомянутых реализаций Sound Blaster, практически никакие устройства PCI не используют понятие «номер входа DMA-контроллера», как и 8237 вообще. Только обратите внимание какой процессор стоит в коммандере. Для полноценной работы нужно сделать (или купить) наборное поле для коммутации К линии. Качественную прошивку никак на твоем компе не найдут даже на Т2 сцене турниров.

Также часто используется русская аббревиатура данной технологии – ПДП. Прямой доступ к памяти (DMA) обычно включен по умолчанию для таких устройств, как жесткие диски, а также устройств для компакт- и DVD-дисков с поддержкой DMA. Однако, может потребоваться включении DMA вручную, если устройство неправильно установлено или если возникла системная ошибка. Микроконтроллеры семейства Synergy показывают неплохую производительность при высокой загруженностью каналами прямой пересылки данных и имеют механизмы разделения потоков по отдельным шинам.

В первых вариантах  персональных компьютеров процесс обмена данными какого-либо устройства с ОЗУ протекал при помощи процессора. Такой метод получил название PIO (Programmable Input-Output, программируемый ввод-вывод). ДМА (Direct Memory Access) карта — это специальное устройство, которое позволяет получить прямой доступ к памяти компьютера.

dma

Несмотря на достаточно полную документацию понять как эффективно использовать движки DMA/DTC не так то просто, да ещё в комплекте с API SSP. Термин используется при описании архитектур различных систем сбора данных, например, в документации перечисленных ниже систем. Решение этой задачи требует выявления физических страниц, реализующих регион, и их блокировку от отгрузки обращением к подсистеме виртуальной памяти. Далее становится возможным нахождение физических адресов страниц региона, которые в общем случае не являются непрерывными и формируют так называемый «список рассеяния/сборки» (англ. scatter-gather list, SGL).

Прямой доступ к памяти могут использовать любые устройства, расположенные в слотах расширения  материнской платы, или подключенные к ней при помощи внутренних шин. Это могут быть, например, жесткие диски, накопители для оптических дисков, видеокарты, звуковые и сетевые карты, и т.д. Кроме того, технология DMA может использоваться как внутри процессоров – для передачи данных между отдельными ядрами, так и внутри самой оперативной памяти – для обмена данными между различными участками памяти.

関連記事