Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаб3_ММССД.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

Int brd_start(brd_Board board, long node);

board — дескриптор БМ, полученный ранее с помощью функции BRD_open()

node — номер узла на БМ. Если БМ содержит один узел, то node=0

Функция запускает ЦПОС на выполнение прикладной программы. Обычно работа ЦПОС начинается с начального адреса.

DWORD BRD_waitSignal(BRD_Board brd, long node, DWORD timeout);

brd — дескриптор БМ, полученный ранее с помощью функции BRD_open()

node — номер узла на БМ. Если БМ содержит один узел, то node=0

timeout — максимальное время ожидания завершения операции (мс)

Функция ожидает запрос прерывания от ЦПОС. Таймаут указывается в миллисекундах с помощью параметра timeout. Если timeout= BRDtim_FOREVER, то ожидание будет выполняться без учета таймаута.

Void brd_iack(brd_Board brd);

brd — дескриптор БМ, полученный ранее с помощью функции BRD_open()

Сигнал подтверждения на плату с DSP процессором

DWORD DSP_getFIFO_ADP60PCI(BRD_Board brd,void huge *pcAddr, DWORD bytes, ULONG timeout);

brd – дескриптор БМ, полученный ранее с помощью функции BRD_open()

pcAddr - адрес массива в PC

bytes – размер массива в байтах

timeout – максимальное время ожидания завершения операции (мс)

Функция читает массив данных из DSP

DWORD DSP_putFIFO_ADP60PCI(BRD_Board brd,void huge *pcAddr, DWORD bytes, ULONG timeout);

brd – дескриптор БМ, полученный ранее с помощью функции BRD_open()

pcAddr - адрес массива в PC

bytes – размер массива в байтах

timeout – максимальное время ожидания завершения операции (мс)

Функция записывает массив данных в DSP

Приложение б (Список функций модуля спо dsp)

DRV_Handle DRV_open(char *name, UINT32 mode);

name - имя устройства. (для ЭВМ “host”, для платы “adm212x40m” )

mode – режим открытия устройства (зависит от устройства)

Функция ищет в глобальной таблице указанное устройство и в случае успеха вызывает функцию _open() найденного устройства, а затем возвращает указатель (DRV_Handle) на объект устройства, который используется другими функциями DRV. В случае ошибки функция возвращает NULL.

Void drv_close(drv_Handle drv);

drv – указатель на объект устройства, который возвращает функция DRV_open().

Функция осуществляет закрытие устройства.

Int drv_ctrl(drv_Handle drv, int cmd, void *args);

drv – указатель на объект устройства, который возвращает функция DRV_open()

cmd – код команды

args – указатель на аргументы команды (зависит от устройства)

Функция осуществляет управление устройством.

Пример:

DRV_ctrl(hDrv, ADCSTART, NULL); //Старт АЦП

DRV_ctrl(hDrv, INSTARTASYNC, NULL); //Старт асинхронной передачи ПДП

Int drv_read(drv_Handle drv, void **buf, int size);

drv – указатель на объект устройства, который возвращает функция DRV_open();

buf – адрес указателя буфера;

size – размер буфера.

Функция осуществляет чтение данных из устройства.

Для повышения производительности системы используется не копирование данных между буферами, а обмен указателями. Т.е. функция DRV_read() передает драйверу адрес пустого буфера, а драйвер возвращает в прикладную программу адрес заполненного буфера.

В синхронном режиме адреса пустого и заполненного буфера совпадают. В асинхронном режиме – не совпадают.

В асинхронном режиме используется буферизация и устройство непрерывно работает и выдает функции DRV_read() адрес последнего собранного буфера, а полученный пустой буфер делает внутренним (см. Примеры реализации драйверов).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]