Scroll to navigation

DSP56K(4) 특수 파일 DSP56K(4)

이름

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

CONFIGURATION

dsp56k 디바이스는 문자 디바이스로서 메이저 넘버(major number) 55, 마이너 넘버(minor number) 0을 지닌다.

설명

모토롤라 DSP6001은 Atari Falcon030 호환 컴퓨터들로 모두 프로그램 가능한 24비트 디지털 시그널 프로세서이다. dsp56k 특수 파일은 DSP56001을 제어하는데 사용되고, 두개의 방향의 핸드쉐이크된 호스트 포트를 사용하여 데이터를 송수신한다.

데이터 스트림을 시스널 프로세서에 보내려며, 장치에 write()를 사용하고, 처리된 데이터를 수신하는데 read()를 사용한다. 데이터는 호스트 측면에서 8, 16, 24, 또는 32 비트의 양에서 보내지거나 수신될 수 있다. 하지만, DSP56001에서는 24 비트의 양으로 항상 보여진다.

다음의 ioctl(2) 호출은 dsp56k 디바이스를 제어하는데 사용된다.

는 DSP56001을 재설정하고, 프로그램을 업로드한다. 세번째 ioctl() 인수는 a struct dsp56k_binary에 대한 포인터가 되어야 하며, bin는 DSP56001 바이너리 프로그램 의 포인터가, len는 프로그램의 길이로서 설정되고, 24 비트의 단어들로 세어진다.

이는 DSP56001로 한번에 전송된 바이트의 숫자이다. 이러한 데이터 양은 0바이트로 패딩(padding)되거나, 네이티브 24비트 데이터 포맷을 맞추도록 생략될 것이다.

는 수신 단어 크기를 설정한다. 허용된 값들은 1에서 4까지의 범위를 지니고, 이는 DSP56001로 한번에 전송된 바이트의 숫자이다. 이러한 데이터 양은 0바이트로 패딩(padding)되거나, DSP56001의 네이티브 24비트 데이터 포맷을 맞추도록 생략될 것이다.

는 호스트 플래그를 읽고 쓰기한다. 호스트 플래그는 네개의 일반 목적 비트로서 호스트 컴퓨터와 DSP56001에 의해 읽혀질 수 있다. 비트 0과 1은 호스트에 의해 작성될 수 있으며, 비트 2와 3은 DSP56001에 의해 작성될 수 있다.

호스트 플래그에 액세스하려면, 세번째 ioctl() 인수는 struct dsp56k_host_flags의 포인터가 되어야 한다. 만일 비트 0 혹은 1이 dir 멤버내에 설정된다면, out에서 상응하는 비트가 호스트 플래그로 작성될 것이다. 모든 호스트 플래그의 상태는 status의 낮은 네개의 비트로 리턴될 것이다.

는 호스트 명령을 전송한다. 허용된 값은 0에서 31까지 범위를 지니며, DSP56001에서 실행되는 프로그램에 의해 처리되는 사용자 정의 명령이다.

파일

/dev/dsp56k

저자

Fredrik Noring <noring@nocrew.org>, lars brinkhoff <lars@nocrew.org>, Tomas Berndtsson <tomas@nocrew.org>.

관련 항목

linux/include/asm-m68k/dsp56k.h, linux/drivers/char/dsp56k.c, http://dsp56k.nocrew.org/, DSP56000/DSP56001 디지털 시그널 프로세서 사용자 매뉴얼

2000년 3월 1일 리눅스