Мастер для прерываний на основе UART IO

UART IO на основе прерываний позволяет передавать данные без вмешательства ЦП. Теперь вопрос, если не ЦП, кто этим управляет? Это контроллер DMA или какой-то внешний мастер, который получает контроль над шиной памяти от процессора. Не получил правильного ответа здесь. Если это контроллер DMA, то что отличает DMA и передачу на основе прерываний?


person Ginu Jacob    schedule 30.06.2016    source источник
comment
Не получил правильного ответа здесь -- FWIW Я добавил ответ на этот вопрос.   -  person sawdust    schedule 03.07.2016


Ответы (1)


Не получил правильного ответа здесь .
Если это контроллер прямого доступа к памяти тогда что отличает DMA и передачу на основе прерываний

На этот вопрос не было хороших ответов, IMO, потому что в вопросе была неверная формулировка.
На самом деле я не понимаю его описания "управляемого прерываниями", потому что оно не имеет смысла, и это не потому, что мне не хватает знаний/опыта в этой области.
"DMA" не является альтернативой "прерываниям".
Вместо этого они являются ортогональными понятиями, и оба понятия обычно используются вместе.
Альтернативой DMA является программируемый ввод-вывод, также известный как PIO.
Альтернативой прерываниям является опрос.

Передачи DMA почти всегда используют completion interrupt (от контроллера DMA) для уведомления ЦП о завершении передачи буфера.
PIO часто использует прерывание (от устройства) для инициации передачи каждого байта/слова данных. Это помогает смягчить характер PIO, интенсивно использующий ЦП. В противном случае передача PIO по запросу полностью потребляла бы ресурсы ЦП.
Но называть «PIO с прерываниями» просто «прерываниями» было бы неточным и вводящим в заблуждение.

UART IO на основе прерываний позволяет передавать данные без вмешательства ЦП. Теперь вопрос, если не ЦП, кто этим управляет?

Вы не указали источник прерывания; поэтому ваш вопрос неоднозначен.

Если предполагается, что "на основе прерывания" подразумевается "PIO с прерыванием от UART", то вопрос вообще не имеет смысла, поскольку именно ЦП управляет передачей данных.
Если предполагается, что "на основе прерываний" речь идет о передаче DMA с прерываниями от контроллера DMA, то вы используете эти термины в контексте, ранее не использовавшемся в вашем или связанных вопросах.

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

При передаче PIO ЦП все время находится под контролем, выполняя инструкции для чтения с устройства и записи в память.

Это контроллер DMA или какой-то внешний мастер, который получает контроль над шиной памяти от процессора.

Шина памяти обслуживается контроллером памяти. Ни одно другое устройство не получает управление шиной памяти.

Для фактического чтения или записи в память именно контроллер DMA запрашивает доступ к памяти во время передачи DMA.
Обратите внимание, что существуют привилегированные устройства, такие как мастер шины или сопроцессор/графический процессор, которые также могут запрашивать доступ к памяти. .
Но ЦП обычно назначается наивысший приоритет для доступа к памяти.

person sawdust    schedule 02.07.2016