dsp56k(4) interfaz con el dispositivo DSP56001

SINOPSIS


#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);

CONFIGURACIÓN

El dispositivo dsp56k es un dispositivo de caracteres con número mayor 55 y número menor 0.

DESCRIPCIÓN

El Motorola DSP56001 es un procesador de señales digitales de 24 bits totalmente programable que se encuentra en computadores compatibles con Atari Falcon030. El fichero especial dsp56k se utiliza para controlar el DSP56001, y para enviar y recibir datos usando el puerto de host bidireccional mediante la técnica de handshaking.

Para enviar un flujo de datos al procesador de señales, utilice write() con el dispositivo, y read() para recibir datos procesados. Los datos pueden ser enviados o recibidos en cantidades de 8, 16, 24, o 32 bits por parte del host, pero siempre serán interpretados como cantidades de 24 bits por el DSP56001.

Las siguientes llamadas ioctl(2) pueden utilizarse para controlar el dispositivo dsp56k:

DSP56K_UPLOAD
reinicia el DSP56001 y carga un programa. El tercer argumento a ioctl() debe ser un puntero a una estructura dsp56k_binary donde el miembro bin apuntará a un programa binario DSP56001, y len contendrá la longitud del programa en palabras de 24 bits.
DSP56K_SET_TX_WSIZE
establece el tamaño de la palabra de transmisión. Los valores permitidos están en el intervalo de 1 a 4, y definen el número de bytes que serán enviados al mismo tiempo al DSP56001. Estas cantidades de datos serán o bien rellenadas con bytes cero, o truncadas para que se ajusten al formato nativo de 24 bits del DSP56001.
DSP56K_SET_RX_WSIZE
establece el tamaño de la palabra de recepción. Los valores permitidos están en el intervalo de 1 a 4, y definen el número de bytes que serán recibidos al mismo tiempo del DSP56001. Estas cantidades de datos serán o bien rellenadas con bytes cero, o truncadas para que se ajusten al formato nativo de 24 bits del DSP56001.
DSP56K_HOST_FLAGS
lee y escribe las banderas (flags) del host. Las banderas del host son cuatro bits de propósito general que pueden ser leídos tanto por la máquina anfitriona como por el DSP56001. Los bits 0 y 1 pueden ser escritos por el host, y los bits 2 y 3 pueden ser escritos por el DSP56001.

Para acceder a estas banderas del host, el tercer argumento a ioctl() debe ser un puntero a una estructura dsp56k_host_flags. Si el bit 0 o el bit 1 están activos en el miembro dir, el bit correspondiente en out será escrito en las banderas del host. El estado de todas las banderas será devuelto en los cuatro bits de orden inferior del miembro status.

DSP56K_HOST_CMD
envía una orden de anfitrión. Los valores permitidos están en el intervalo de 0 a 31, y especifican una orden definida por el usuario que es manejado por el programa que se ejecuta en el DSP56001.

FICHEROS

/dev/dsp56k

AUTORES

Fredrik Noring <[email protected]>, lars brinkhoff <[email protected]>, Tomas Berndtsson <[email protected]>.