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

Контроллеры были и остаются несовместимыми по ПО между различными производителями, хотя совместимость всех Intel IDE/ATA/SATA снизу вверх более или менее поддерживается. В начале 1990-х dma годов диски MFM/RLL вышли из употребления («вымерли»), сменившись дисками IDE, но регистровый интерфейс ПО к контроллеру не изменился.

dma

Режимы Ultra DMA протокола ATA для ОС Linux

В нашем ПЛК реализовано более 10 одновременно работающих каналов DMA и DTC. Однако корректная работа DMA не достаётся автоматически. Требуется тщательное планирование размещения в памяти и тестирование.

Термин: Прямой доступ к памяти (DMA)

dma

Сигнальные события вызываются прерываниями периферии, но в отличие от прерываний сигнальные события не надо специально очищать чтобы они снова возникли. У DTC нет каналов, все запросы на обмен по DTC обслуживаются последовательно в порядке приоритетности сигналов прерываний вызвавших запрос DTC. DMA имеет 8 фиксированных каналов, где у канала 0 высший приоритет, а у канала 7 низший.

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

На плате находится FPGA чип — программируемая логическая матрица, которая выполняет считывание и запись в память. Атака DMA (Direct Memory Access) — это атака, при которой злоумышленник получает возможность загружать данные напрямую в память устройства и считывать их оттуда через высокоскоростные порты. Здесь мы продолжаем развитие платформы нашего ПЛК (PLC) под названием PLCS7 на базе модуля с микроконтроллером семейства Synergy S7FS2. В этом ПЛК ввод-вывод в основном выполняется через микросхемы расширители IO с последовательными каналами связи. Программный байтовый обмен с такими микросхемами может отбирать значительные ресурсы процессора.

Как в системе Windows настроить прямой доступ к памяти (DMA)

DTC работает через ту же шину что и DMA, но DMA имеет приоритет над DTC. Запросы DMA всегда обслуживаются раньше чем запросы DTC. Обмен по DTC и DMA стартует по сигнальным событиям, а не по запросам DMA.

dma

По мере развития процессорной техники, контроллеры ПДП стали многоканальными, что позволило поддерживать несколько каналов доступа к памяти от разных периферийных устройств, а также  и из памяти в память. Сами архитектуры процессорных систем сильно видоизменялись, контроллеры ПДП, периферия и память входили в разные части процессорных систем, но общая идея прямого доступа к памяти фактически не изменилась. Остановимся отдельно на режиме BUS Master компьютерных интерфейсов PCI и PCI Express. Плата, вставленная в слот, поддерживающая режим  BUS Master, способна сама на время захватить шину, полностью взяв на себя роль контроллера ПДП.

Всего стандарт Ultra DMA поддерживает 8 основных режимов передачи данных, обеспечивающих  скорость от 16,7 до 167 МБ/c. Использование режимов Ultra DMA для винчестеров позволило значительно увеличить пропускную способность шины IDE. Включить или изменить режим Ultra DMA для жестких дисков можно при помощи специальной опции BIOS, обычно носящей название DMA (UDMA) Mode. Таким образом DMA подходит для быстрых обменов блоками данных между памятью и единственным регистром периферии или между двумя областями памяти. А DTC годен для пересылок по самым разным адресам периферии за один проход без вмешательства процессора, но при этом нужно быть готовым к задержкам пересылок вследствие ожидания окончания всех пересылок DMA. Так появилась идея технологии DMA (сокращение от Direct Memory Access, т.е. Прямой Доступ к Памяти), состоящая в том, чтобы позволить различным устройствам обращаться к оперативной памяти напрямую, минуя ЦП.

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

ДМА карты используются читерами для доступа к памяти игры и манипулирования ей. Это решение на уровне железа, и для этого нужно будет купить дма карту. Обычно доступом к памяти устройства управляет операционная система.

dma

Это заставит нас пересмотреть все исходники и тщательно проверить где находятся области памяти к которым обращается DMA или DTC. Современные операционные системы, такие как MS Windows, умеют управлять режимом ПДП для многих устройств. В частности, пользователь имеет возможность включить или выключить режим DMA для жестких дисков. Для вас это значит то, что если вы например собираетесь играть в ВАЛОРАНТ, то вам достаточно купить прошивку под Валорант и все остальные рейтингом ниже — автоматом андетект. ДМА карта состоит из платы расширения, которая устанавливается в Pcie x1 (Допускается установка в порты x4,x8 и x16) слот материнской платы игрового ПК.

Работа с интерфейсом I2C в микроконтроллерах выполняется сложнее и медленнее чем с SPI с точки зрения ресурсов процессора. Обычные скрипты линкера из демо-проектов объединяют пространство внутренней RAM от адреса 0x1FFE0000 до адреса 0x2007FFFF в один большой непрерывной блок памяти, в котором линкер может размещать что и как угодно. На самом деле у RAM нижняя часть SRAMHS к DMA подключается через два моста, как видно из схемы. А верхняя половина RAM SRAM0, SRAM1 подключается к DMA через один мост. Для чтения из области SRAMHS модуль DMA будет тратить дополнительные циклы. На доступ к SRAMHS модули DMA и DTC тратят дополнительно два цикла.

Для пользователя ПК это означает, что процессор во время пересылки данных по DMA (из платы в память ПК и обратно) может заниматься другими важными задачами, в том числе, и задачами пользователя. Это занимает существенное время на шине данных микроконтроллера. Это приходится учитывать при работе с другой периферией не имеющей достаточного объёма собственных FIFO, чтобы переждать периоды занятости шины.

В операционных системах со страничной виртуальной памятью, таких, как Windows и семейство UNIX, непрерывный регион виртуальных адресов может быть реализован разрывно расположенными физическими страницами. В оригинальной архитектуре IBM PC (шина ISA) DMA был возможен лишь при наличии аппаратного контроллера DMA (микросхема Intel 8237). В каскаде зеленым будут гореть те пины по которым прога опрашивает блок.

  • Для решения проблемы ряд компаний, в том числе Intel, разработал контроллеры IDE с поддержкой DMA.
  • Из соображений безопасности ОС запрещает несистемным приложениям доступ к определенным разделам памяти.
  • Прямой доступ к памяти могут использовать любые устройства, расположенные в слотах расширения  материнской платы, или подключенные к ней при помощи внутренних шин.
  • Кроме того, в шине PCI отпала необходимость в использовании каналов доступа к памяти.
  • В жестких дисках с интерфейсом IDE технология ПДП получила свое развитие в виде дополнительных режимов ПДП, получивших название Ultra DMA (UDMA).

Например, если процессор делает выборку команд из Flash и выборку операндов команд из HSRAM, то в это же самое время DTC без препятствий может пересылать данные из внешней SDRAM в периферию, например SPI. И в это же самое время DMA может пересылать данные из RAM1 в Ethernet. Могут существовать одновременно три потока данных не пересекаясь и не мешая друг другу. Один из рисков – наткнуться на заторы, когда одна DMA пересылка будет мешать другой DTC пересылке или работа процессора может существенно замедляться. В этом случае следует подумать о реализации параллельной работы DMA, DTC и процессора. Разработка под семейство Sinergy поддерживается пакетом программного обеспечения SSP, в который входят, в частности, функции инициализации и запуска обмена по DMA и DTC.

Низкая производительность такого контроллера стала серьёзной проблемой, особенно на системах PCI. Помимо требования нескольких циклов PCI на передачу каждых двух байт данных, это приводило к загрузке процессора дисковым вводом-выводом. В шинах MicroChannel, SBus, разработанной под их большим влиянием PCI и её концептуальных производных AGP и PCI-X, используется иная реализация DMA.

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

Leave A Comment