dsp56k - устройство интерфейса DSP56001
dsp56k(4)
устройство интерфейса DSP56001
ОБЗОР
#include <asm/dsp56k.h>
ssize_t read(int fd, void *data, size_t length);
ssize_t write(int fd, void *data, size_t length);
int ioctl(int fd, DSP56K_UPLOAD, struct dsp56k_upload *program);
int ioctl(int fd, DSP56K_SET_TX_WSIZE, int wsize);
int ioctl(int fd, DSP56K_SET_RX_WSIZE, int wsize);
int ioctl(int fd, DSP56K_HOST_FLAGS, struct dsp56k_host_flags *flags);
int ioctl(int fd, DSP56K_HOST_CMD, int cmd);
НАСТРОЙКА
Устройство dsp56k является символьным устройством с старшим номером 55 и
младшим номером 0.
ОПИСАНИЕ
Motorola DSP56001 --- это полностью программируемый 24-битный цифровой
сигнальный процессор, используемый в компьютерах Atari Falcon030 и
совместимых с ними. Специальный файл
dsp56k используется для управления
DSP56001 и для посылки и получения данных через выбранный на узле (host)
двунаправленный порт.
Для отправки потока данных сигнальному процессору, используйте write(2),
а для получения обработанных данных --- read(2). Данные могут быть
посылаться и получаться узлом по 8, 16, 24 или 32 бита, а сигнальный
процессор способен обрабатывать только по 24 бита.
Для управления устройством dsp56k используются следующие вызовы
ioctl(2):
DSP56K_UPLOAD
Обнуляет DSP56001 и загружает в него программу. Третьим аргументом
ioctl(2) должен быть указатель на struct dsp56k_binary, в которое поле
bin указывает на двоичную программу DSP56001, а в len задаётся длина
программы (значение должно быть кратно 24-битным словам).
DSP56K_SET_TX_WSIZE
Устанавливает размер передаваемых слов. Допустимое значение находится в
пределах от 1 до 4, и является числом байт, посылаемых за один раз в
DSP56001. Эти частички информации будут заполнены нулевыми байтами или
преобразованы в формат 24-битных данных DSP56001.
DSP56K_SET_RX_WSIZE
Устанавливает размер принимаемых слов. Допустимое значение находится в
диапазоне от 1 до 4, и является числом байт, принимаемых за один раз от
процессора DSP56001. Эти частички информации будут урезаны или дополнены
байтом null ('\0'), чтобы соответствовать 24-битному формату
DSP56001.
DSP56K_HOST_FLAGS
Считывает и записывает флаги узла. Флаги узла --- это четыре бита общего
назначения, они могут быть считаны как узлом, так и процессором
DSP56001. Нулевой и первый биты могут записываться узлом, а второй и третий
пишутся устройством DSP56001.
Для получения доступа к флагам узла третий аргумент ioctl(2) должен быть
указателем на struct dsp56k_host_flags. Если нулевой и первый поля dir
установлены в единичное значение, то соответствующий бит в поле out будет
записан в флаг узла. Состояние всех флагов узла будет возвращено в младших
четырёх битах поля status.
DSP56K_HOST_CMD
Посылает команды узла. Допустимые величины находятся в диапазоне от 0 до 31,
это определяемые пользователем команды, обрабатываемые программой,
выполняющейся на DSP56001.
ФАЙЛЫ
/dev/dsp56k