Регистры параметров, управления и статуса DMA-пересылок в ADSP-2106x. Приоритеты каналов DMA. Схемы изменения приоритетов

Регистр статуса DMA-каналов (DMASTAT)

DMA-контроллер ADSP-21060 отображает состояния DMA-пересылок по каждому каналу в регистре статуса DMASTAT, доступном только для чтения. Биты с 0 по 9 отображают состояние соответствующих DMA-каналов, причем активное состояние бита означает, что DMA-пересылка по данному каналу разрешена и текущая DMA-последовательность еще не завершена. Сброшенный бит означает, что в данный момент времени по каналу выполняется передача TCB-блока (загрузка параметров следующей DMA-пересылки) или что DMA для данного канала запрещена.

Биты с 10 по 19 показывают текущий статус цепочечного связывания DMA-пересылок по соответствующему каналу. Если бит установлен, то выполняется пересылка TCB-блока (или ожидается пересылка TCB-блока), т.е. когда процесс связывания не закончен. В противном случае (цепочечная DMA запрещена или по данному каналу передаются данные) бит сброшен.

В качестве альтернативы использованию прерываний для отслеживания завершения единичной (не цепочечной) DMA-пересылки по какому-либо каналу может быть использовано чтение соответствующих ему битов в регистре DMASTAT. Если оба статусных бита для данного канала сброшены, то DMA-пересылка завершена.

Например, чтобы приостановить выполнение задачи ядром процессора до окончания выполнения пересылки по DMA-каналу № 6 (буфер внешнего порта EPB0), следует выполнить следующие действия:

R0 = dm(DMASTAT); // напрямую нельзя работать, так как в памяти

wait: BTST R0 BY 0x6; // проверка канала № 6 на передачу данных

IF NOT SZ JUMP wait; // вернуться если бит=1 (DMA-пересылка активна)

BTST R0 BY 0x10; // проверка канала № 6 на передачу TCB

IF NOT SZ JUMP wait; // вернуться если бит=1 (загрузка TCB)

// далее можно работать с полученным буфером

....................


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: