Auf dem Falcon stehen die folgenden Routinen zur Programmierung des digitalen Signalprozessors DSP-56001 zur Verfügung:
• Dsp_Available | Freien Speicher ermitteln. |
• Dsp_BlkBytes | Byteweiser Datentransfer. |
• Dsp_BlkHandShake | Datentransfer mit Handshake. |
• Dsp_BlkUnpacked | Transfer von DSP-Worten (max. 4 Byte Länge). |
• Dsp_BlkWords | Wortweiser Datentransfer. |
• Dsp_DoBlock | Datentransfer zum DSP. |
• Dsp_ExecBoot | Bootprogramm für DSP laden. |
• Dsp_ExecProg | DSP-Programm starten. |
• Dsp_FlushSubroutines | Unterprogramme löschen. |
• Dsp_GetProgAbility | Identifikation erfragen. |
• Dsp_GetWordSize | Länge von DSP-Worten ermitteln. |
• Dsp_Hf0 | Bit 3 des HSR setzen bzw. löschen. |
• Dsp_Hf1 | Bit 4 des HSR setzen bzw. löschen. |
• Dsp_Hf2 | Bit 3 des HCR ermitteln. |
• Dsp_Hf3 | Bit 4 des HCR ermitteln. |
• Dsp_HStat | Wert des ISR-Registers ermitteln. |
• Dsp_InqSubrAbility | Unterprogrammkennung ermitteln. |
• Dsp_InStream | Datentransfer zum DSP via Interrupt. |
• Dsp_IOStream | Datentransfer vom und zum DSP via Interrupt. |
• Dsp_LoadProg | DSP-Programm laden und starten. |
• Dsp_LoadSubroutine | Unterprogramm installieren. |
• Dsp_Lock | Verfügbarkeit des DSP ermitteln. |
• Dsp_LodToBinary | LOD- in Binärformat konvertieren. |
• Dsp_MultBlocks | Datentransfer vom und zum DSP. |
• Dsp_OutStream | Datentransfer vom DSP via Interrupt. |
• Dsp_RemoveInterrupts | Übertragungsroutinen entfernen. |
• Dsp_RequestUniqueAbility | Identifikation erteilen. |
• Dsp_Reserve | Speicher reservieren. |
• Dsp_RunSubroutine | Unterprogramm ausführen. |
• Dsp_SetVectors | Eigene Übertragungsroutinen installieren. |
• Dsp_TriggerHC | Host Command ausführen. |
• Dsp_Unlock | DSP freigeben. |
Querverweis: Schnittstellenprogrammierung
Name: | »Dsp_Available« - Ermitteln des freien x und y Speichers
|
Xbiosnummer: | 106
|
Deklaration: | void Dsp_Available( int32_t *xavailable, int32_t *yavailable );
|
Beschreibung: | Die Funktion Dsp_Available ermittelt den freien X- und
Y-Speicher. Freier Speicher beginnt stets an der physikalischen
Adresse 0. Die unteren 64 Worte sind für Interrupt-Vektoren
reserviert.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Reserve Dsp_LoadProg
Dsp_ExecProg Dsp_ExecBoot
|
C: | #include <tos.h>
void Dsp_Available( int32_t *xavailable, int32_t *yavailable ); |
Assembler: |
pea yavailable ; Offset 6 pea xavailable ; Offset 2 move.w #106,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »Dsp_BlkBytes« - byteweiser Datentransfer zum DSP
|
Xbiosnummer: | 124
|
Deklaration: | void Dsp_BlkBytes( void *data_in, int32_t size_in, void
*data_out, int32_t size_out );
|
Beschreibung: | Die Funktion kopiert size_in vorzeichenlose Bytes aus
dem Puffer data_in zum DSP. Nachdem alle Daten übertragen
wurden, wartet die Prozedur bis die Daten verarbeitet wurden. Dann
werden size_out 8-Bit-DSP-Worte in den Puffer data_out
zurückkopiert, unabhängig davon, wie viel Daten wirklich vorliegen.
Sollen keine Daten gesendet werden, muß man size_in auf Null
setzen. Gleiches gilt für das Empfangen, in diesem Fall wird
size_out Null zugewiesen. size_in und size_out
sind auf 64 KByte begrenzt. Daten werden nur ausgetauscht, wenn der
DSP-Prozeß dazu bereit ist.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkWords Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_BlkBytes( void *data_in, int32_t size_in, void *data_out, int32_t size_out ); |
Assembler: |
move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #124,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »DspBlkHandShake« - Datentransfer zum DSP mit Handshake
|
Xbiosnummer: | 97
|
Deklaration: | void Dsp_BlkHandShake( int8_t *data_in, int32_t size_in, int8_t
*data_out, int32_t size_out );
|
Beschreibung: | Die Funktion kopiert size_in DSP-Worte aus dem Puffer
data_in zum DSP. Nachdem alle Daten übertragen wurden, wartet
die Funktion bis die Daten verarbeitet wurden. Dann werden
size_out DSP-Worte in den Puffer data_out
zurückkopiert, unabhängig davon, wieviel Daten wirklich vorliegen.
Sollen keine Daten gesendet werden, muß man size_in auf Null
setzen. Gleiches gilt für das Empfangen, in diesem Fall wird
size_out Null zugewiesen. size_in und size_out
sind auf 64 KByte begrenzt. Daten werden nur ausgetauscht, wenn der
DSP-Prozeß dazu bereit ist.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkWords
Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_BlkHandShake( int8_t *data_in, int32_t size_in, int8_t *data_out, int32_t size_out ); |
Assembler: |
move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #97,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_BlkUnpacked« - Datentransfer von maximal 4 Bytes langen
DSP-Worten
|
Xbiosnummer: | 98
|
Deklaration: | void Dsp_BlkUnpacked( int32_t *data_in, int32_t size_in,
int32_t *data_out, int32_t size_out );
|
Beschreibung: | Diese Funktion arbeitet nur mit DSP-Worten, die höchstens 4
Byte lang sind. Die Länge der DSP-Worte kann mit Dsp_GetWordSize
bestimmt werden. data_in und data_out sind
LONG-Felder. size_in und size_out beziehen sich auf
die Größe der Felder in Langworten. Je nach DSP-Wortlänge werden
nur die unteren Bytes LONGs übertragen. Die Funktion kopiert
size_in DSP-Worte aus dem Puffer data_in zum DSP.
Nachdem alle Daten übertragen wurden, wartet die Funktion bis die
Daten verarbeitet wurden. Dann werden size_out DSP-Worte in
den Puffer data_out zurückkopiert, unabhängig davon, wieviel Daten
wirklich vorliegen. Sollen keine Daten gesendet werden, muß man
size_in auf Null setzen. Gleiches gilt für das Empfangen, in
diesem Fall wird size_out Null zugewiesen. size_in und
size_out sind auf 64 KByte begrenzt.
Es wird nicht garantiert, daß die höherwertigen Bytes der empfangenen LONGs Null sind, wenn die DSP-Wortlänge kleiner als 4 ist. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkHandShake Dsp_BlkWords
Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_BlkUnpacked( int32_t *data_in, int32_t size_in, int32_t *data_out, int32_t size_out ); |
Assembler: |
move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #98,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_BlkWords« - wortweiser Datentransfer zum DSP
|
Xbiosnummer: | 123
|
Deklaration: | void Dsp_BlkWords( void *data_in, int32_t size_in, void
*data_out, int32_T size_out );
|
Beschreibung: | Die Funktion kopiert size_in vorzeichenbehaftete
16-Bit-Worte aus dem Puffer data_in zum DSP. Die Worte werden
vor der Übertragung vorzeichenrichtig auf DSP-Wortbreite erweitert.
Nachdem alle Daten übertragen wurden, wartet die Funktion bis die
Daten verarbeitet wurden. Dann werden size_out
16-Bit-DSP-Worte in den Puffer data_out zurückkopiert,
unabhängig davon, wieviel Daten wirklich vorliegen. Sollen keine
Daten gesendet werden, muß man size_in auf Null setzen.
Gleiches gilt für das Empfangen, in diesem Fall wird size_out
Null zugewiesen. size_in und size_out sind auf 64
KByte begrenzt. Daten werden nur ausgetauscht, wenn der DSP-Prozeß
dazu bereit ist.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_BlkWords( void *data_in, int32_t size_in, void *data_out, int32_T size_out ); |
Assembler: |
move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #123,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_DoBlock« - Datentransfer zum DSP
|
Xbiosnummer: | 96
|
Deklaration: | void Dsp_DoBlock( int8_t *data_in, int32_t size_in, int8_t
*data_out, int32_t size_out );
|
Beschreibung: | Die Funktion kopiert size_in DSP-Worte aus dem Puffer
data_in zum DSP. Nachdem alle Daten übertragen wurden, wartet
die Funktion bis die Daten verarbeitet wurden. Dann werden
size_out DSP-Worte in den Puffer data_out
zurückkopiert, unabhängig davon, wieviel Daten wirklich vorliegen.
Sollen keine Daten gesendet werden, muß man size_in auf Null
setzen. Gleiches gilt für das Empfangen, in diesem Fall wird
size_out Null zugewiesen. size_in und size_out
sind auf 64 KByte begrenzt.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_BlkHandShake Dsp_BlkUnpacked Dsp_BlkWords
Dsp_BlkBytes Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_DoBlock( int8_t *data_in, int32_t size_in, int8_t *data_out, int32_t size_out ); |
Assembler: |
move.l size_out,-(sp) ; Offset 14 pea data_out ; Offset 10 move.l size_in,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #96,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_ExecBoot« - Bootprogramm für DSP laden
|
Xbiosnummer: | 110
|
Deklaration: | void Dsp_ExecBoot( int8_t *codeptr, int32_t codesize, int16_t
ability );
|
Beschreibung: | Die Funktion Dsp_ExecBoot lädt ein Boot-Programm in die 512
Worte des internen DSP-Speichers. Vor dem Laden wird ein Reset auf dem
DSP ausgeführt. Das DSP-Programm muß im Binär-Format vorliegen. Der
Parameter codeptr zeigt auf den Programmstart. Die Länge des
Programms wird durch den Parameter codesize bestimmt.
ability identifiziert das Programm.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve
Dsp_LoadProg Dsp_ExecProg Dsp_LodToBinary
|
C: | #include <tos.h>
void Dsp_ExecBoot( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Assembler: |
move.w ability,-(sp) ; Offset 10 move.l codesize,-(sp) ; Offset 6 pea codeptr ; Offset 2 move.w #110,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_ExecProg« - DSP Programm starten
|
Xbiosnummer: | 109
|
Deklaration: | void Dsp_ExecProg( int8_t *codeptr, int32_t codesize, int16_t
ability );
|
Beschreibung: | Die Funktion Dsp_ExecProg startet das im Binär-Format an der
Stelle codeptr vorliegende DSP-Programm der Länge codesize.
Seine Größe darf den durch Dsp_Reserve reservierten Speicher nicht
überschreiten. Der Parameter ability identifiziert das
Programm.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve
Dsp_LoadProg Dsp_ExecBoot Dsp_LodToBinary
|
C: | #include <tos.h>
void Dsp_ExecProg( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Assembler: |
move.w ability,-(sp) ; Offset 10 move.l codesize,-(sp) ; Offset 6 pea codeptr ; Offset 2 move.w #109,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_FlushSubroutines« - Unterprogramme aus dem Speicher des
DSP entfernen
|
Xbiosnummer: | 115
|
Deklaration: | void Dsp_FlushSubroutines( void );
|
Beschreibung: | Die Funktion Dsp_FlushSubroutines entfernt alle Unterprogramme
aus dem DSP-Speicher und erhöht somit den verfügbaren freien
Speicher.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_LoadSubroutine Dsp_InqSubrAbility
Dsp_RunSubroutine
|
C: | #include <tos.h>
void Dsp_FlushSubroutines( void ); |
Assembler: |
move.w #115,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_GetProgAbility« - Identifikation eines Prozesses
ermitteln
|
Xbiosnummer: | 114
|
Deklaration: | int16_t Dsp_GetProgAbility( void );
|
Beschreibung: | Die Funktion Dsp_GetProgAbility erteilt einem DSP-Prozeß eine
Identifikation, mittels derer man feststellen kann, ob der zum Prozeß
gehörige Code bereits im DSP vorhanden ist.
|
Ergebnis: | Die Funktion liefert die für den Prozess gültige Kennung
zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_RequestUniqueAbility
|
C: | #include <tos.h>
int16_t Dsp_GetProgAbility( void ); |
Assembler: |
move.w #114,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_GetWordSize« - Länge eines DSP Wortes ermitteln
|
Xbiosnummer: | 103
|
Deklaration: | int16_t Dsp_GetWordSize( void );
|
Beschreibung: | Die Funktion Dsp_GetWordSize ermittelt die Größe in Byte, die
ein DSP-Wort lang ist. Diese Funktion ist notwendig, um die Puffer
für die Datenübertragung ausreichend zu dimensionieren.
|
Ergebnis: | Die Funktion liefert die Größe eines DSP-Wortes zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_IOStream
Dsp_OutStream Dsp_MultBlocks
|
C: | #include <tos.h>
int16_t Dsp_GetWordSize( void ); |
Assembler: |
move.w #103,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_Hf0« - Bit 3 des HSR setzen bzw. löschen
| ||||||||
Xbiosnummer: | 119
| ||||||||
Deklaration: | int16_t Dsp_Hf0( int16_t flag );
| ||||||||
Beschreibung: | Die Funktion Dsp_Hf0 ermittelt bzw. setzt den Wert des Bits 3
des HSR. Der Parameter flag hat die folgende Bedeutung:
| ||||||||
Ergebnis: | Die Funktion liefert den Wert von Bit-3 des HSR zurück.
| ||||||||
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
| ||||||||
Gruppe: | DSP-Programmierung
| ||||||||
Querverweis: | Binding Dsp_Hf1 Dsp_Hf2 Dsp_Hf3 Dsp_HStat
|
C: | #include <tos.h>
int16_t Dsp_Hf0( int16_t flag ); |
Assembler: |
move.w flag,-(sp) ; Offset 2 move.w #119,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_Hf1« - Bit 4 des HSR setzen bzw. löschen
| ||||||||
Xbiosnummer: | 120
| ||||||||
Deklaration: | int16_t Dsp_Hf1( int16_t flag );
| ||||||||
Beschreibung: | Die Funktion Dsp_Hf1 ermittelt bzw. setzt den Wert des Bits 4
des HSR. Der Parameter flag hat die folgende Bedeutung:
| ||||||||
Ergebnis: | Die Funktion liefert den Wert von Bit-4 des HSR zurück.
| ||||||||
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
| ||||||||
Gruppe: | DSP-Programmierung
| ||||||||
Querverweis: | Binding Dsp_Hf0 Dsp_Hf2 Dsp_Hf3 Dsp_HStat
|
C: | #include <tos.h>
int16_t Dsp_Hf1( int16_t flag ); |
Assembler: |
move.w flag,-(sp) ; Offset 2 move.w #120,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_Hf2« - Bit 3 des HCR ermitteln
|
Xbiosnummer: | 121
|
Deklaration: | int16_t Dsp_Hf2( void );
|
Beschreibung: | Die Funktion Dsp_Hf2 ermittelt den Wert des Bits 3 des HCR.
|
Ergebnis: | Die Funktion liefert den Wert von Bit-3 des HCR zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Hf0 Dsp_Hf1 Dsp_Hf3 Dsp_HStat
|
C: | #include <tos.h>
int16_t Dsp_Hf2( void ); |
Assembler: |
move.w #121,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_Hf3« - Bit 4 des HCR ermitteln
|
Xbiosnummer: | 122
|
Deklaration: | int16_t Dsp_Hf3( void );
|
Beschreibung: | Die Funktion Dsp_Hf3 ermittelt den Wert des Bits 4 des HCR.
|
Ergebnis: | Die Funktion liefert den Wert von Bit-4 des HCR zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Hf0 Dsp_Hf1 Dsp_Hf2 Dsp_HStat
|
C: | #include <tos.h>
int16_t Dsp_Hf3( void ); |
Assembler: |
move.w #122,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_HStat« - Wert des ISR Registers ermitteln
|
Xbiosnummer: | 125
|
Deklaration: | int8_t Dsp_HStat( void );
|
Beschreibung: | Die Funktion Dsp_HStat ermittelt den Wert des ISR-Registers.
Somit kann man feststellen, ob Daten empfangen oder gesendet werden
können.
|
Ergebnis: | Die Funktion liefert den Wert des ISR-Registers zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Hf0 Dsp_Hf1 Dsp_Hf2 Dsp_Hf3
|
C: | #include <tos.h>
int8_t Dsp_HStat( void ); |
Assembler: |
move.w #125,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_InqSubrAbility« - Ermitteln der Kennung eines
Unterprogramms
|
Xbiosnummer: | 117
|
Deklaration: | int16_t Dsp_InqSubrAbility( int16_t ability );
|
Beschreibung: | Die Funktion Dsp_InqSubrAbility bestimmt die Kennung des
Unterprogramms mit der Funktionalität abilitiy.
|
Ergebnis: | Die Funktion liefert die Kennung des Unterprogramms zurück.
Ein Rückgabewert von Null bedeutet, daß sich das entsprechende
Unterprogramm nicht im DSP-Speicher befindet; in diesem Fall muß das
Unterprogramm über Dsp_LoadSubroutine installiert werden.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_RunSubroutine Dsp_FlushSubroutines
Dsp_LoadSubroutine
|
C: | #include <tos.h>
int16_t Dsp_InqSubrAbility( int16_t ability ); |
Assembler: |
move.w ability,-(sp) ; Offset 2 move.w #117,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_InStream« - Datentransfer zum DSP via Interrupt
|
Xbiosnummer: | 99
|
Deklaration: | void Dsp_InStream( int8_t *data_in, int32_t block_size, int32_t
num_blocks, int32_t *blocks_done );
|
Beschreibung: | Die Funktion kopiert mittels DSP-Interruptbehandlung
num_blocks Datenblöcke mit einer Größe von
block_size DSP-Worten aus dem Puffer data_in zum DSP.
Bei jedem Interrupt wird ein Block übertragen, unabhängig davon, ob
der DSP empfangsbereit ist. Gleichzeitig wird der Zähler
blocks_done, der die Anzahl der übertragenen Blöcke
wiedergibt, inkrementiert. Da die Daten per Interrupt übertragen
werden, muß die Prozedur nicht warten. Über blocks_done kann
das Programm im weiteren Verlauf feststellen, ob die Übertragung
beendet ist.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkWords Dsp_BlkBytes Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_SetVectors Dsp_RemoveInterrupts
Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_InStream( int8_t *data_in, int32_t block_size, int32_t num_blocks, int32_t *blocks_done ); |
Assembler: |
pea blocks_done ; Offset 14 move.l num_blocks,-(sp) ; Offset 10 move.l block_size,-(sp) ; Offset 6 pea data_in ; Offset 2 move.w #99,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_IOStream« - Datentransfer vom und zum DSP via Interrupt
|
Xbiosnummer: | 101
|
Deklaration: | void Dsp_IOStream( int8_t *data_in, int8_t *data_out, int32_t
block_insize, int32_t block_outsize, int32_t num_blocks, int32_t
*blocks_done );
|
Beschreibung: | Die Funktion sendet und empfängt gleichzeitig mittels
DSP-Interruptbehandlung num_blocks Datenblöcke mit einer
Größe von block_insize bzw. block_outsize DSP-Worten
vom DSP. Die gesendeten Daten werden dem Puffer data_in
entnommen, die empfangenen Daten werden im Puffer data_out
abgelegt. Bei jedem Interrupt wird ein Block gesendet und einer
empfangen (eine Ausnahme bilden der erste und der letzte Interrupt).
Gleichzeitig wird der Zähler blocks_done, der die Anzahl der
übertragenen Blöcke wiedergibt, inkrementiert. Da die Daten per
Interrupt übertragen werden, muß die Funktion nicht warten. Über
blocks_done kann das Programm im weiteren Verlauf feststellen,
ob die Übertragung beendet ist.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_OutStream
Dsp_GetWordSize Dsp_SetVectors Dsp_RemoveInterrupts
Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_IOStream( int8_t *data_in, int8_t *data_out, int32_t block_insize, int32_t block_outsize, int32_t num_blocks, int32_t *blocks_done ); |
Assembler: |
pea blocks_done ; Offset 22 move.l num_blocks,-(sp) ; Offset 18 move.l block_outsize,-(sp) ; Offset 14 move.l block_insize,-(sp) ; Offset 10 pea data_out ; Offset 6 pea data_in ; Offset 2 move.w #101,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $1A(sp),sp ; Stack korrigieren |
Name: | »Dsp_LoadProg« - DSP Programm laden und starten
|
Xbiosnummer: | 108
|
Deklaration: | int16_t Dsp_LoadProg( int8_t *file, int16_t ability, int8_t
*buffer );
|
Beschreibung: | Die Funktion Dsp_LoadProg lädt das DSP-Programm mit dem Namen
file. Das Programm muß im .LOD-Format vorliegen und darf den
durch Dsp_Reserve reservierten Speicher nicht überschreiten. Der
Parameter ability identifiziert das Programm. buffer
zeigt auf einen Speicherbereich, in dem das generierte Programm
zwischengespeichert werden kann. Die Größe des Speicherbereichs
berechnet sich nach der Formel
DSP-Wortgröße * ( Anzahl der Programm- und Datenworte in der .LOD-Datei + ( DSP-Wortgröße * Anzahl der Blöcke in der .LOD-Datei )) Danach wird das Programm ausgeführt. |
Ergebnis: | Die Funktion liefert im positiven Fall den Wert 0, und im
Fehlerfall den Wert -1 zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve
Dsp_ExecProg Dsp_ExecBoot Dsp_LodToBinary
|
C: | #include <tos.h>
int16_t Dsp_LoadProg( int8_t *file, int16_t ability, int8_t *buffer ); |
Assembler: |
pea buffer ; Offset 8 move.w ability,-(sp) ; Offset 6 pea file ; Offset 2 move.w #108,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_LoadSubroutine« - Unterprogramm im Speicher des DSP
installieren
|
Xbiosnummer: | 116
|
Deklaration: | int16_t Dsp_LoadSubroutine( int8_t *codeptr, int32_t codesize,
int16_t ability );
|
Beschreibung: | Die Funktion Dsp_LoadSubroutine installiert das
DSP-Unterprogramm aus dem Puffer codeptr im DSP-Speicher. Das
Unterprogramm ist codesize DSP-Worte lang und hat die
Identifikation ability. Das Unterprogramm bleibt solange
resident im DSP-Speicher bis kein Platz mehr für neue Unterprogramme
ist und es verdrängt wird oder die Funktion Dsp_FlushSubroutines aufgerufen wird.
|
Ergebnis: | Die Funktion liefert im Fehlerfall den Wert 0 zurück. Ein
positiver Wert kennzeichnet das Unterprogramm, das per
Dsp_RunSubroutine aufgerufen werden kann.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_RunSubroutine Dsp_FlushSubroutines
Dsp_InqSubrAbility
|
C: | #include <tos.h>
int16_t Dsp_LoadSubroutine( int8_t *codeptr, int32_t codesize, int16_t ability ); |
Assembler: |
move.w ability,-(sp) ; Offset 10 move.l codesize,-(sp) ; Offset 6 pea codeptr ; Offset 2 move.w #116,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $C(sp),sp ; Stack korrigieren |
Name: | »Dsp_Lock« - Verfügbarkeit des DSP ermitteln
|
Xbiosnummer: | 104
|
Deklaration: | int16_t Dsp_Lock( void );
|
Beschreibung: | Die Funktion Dsp_Lock ermittelt, ob der DSP für Anwendungen
verfügbar ist und nicht durch jemand anders blockiert wird.
|
Ergebnis: | Die Funktion liefert den Wert -1, wenn der DSP bereits durch
einen anderen Prozess benutzt wird. Ein Rückgabewert von Null
kennzeichnet hingegen die Verfügbarkeit des DSP und blockiert diesen
gleichzeitig für andere, bis ein Aufruf von Dsp_Unlock erfolgt.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Unlock Dsp_Available Dsp_Reserve
Dsp_LoadProg Dsp_ExecProg Dsp_ExecBoot
|
C: | #include <tos.h>
int16_t Dsp_Lock( void ); |
Assembler: |
move.w #104,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_LodToBinary« - Konvertierung einer Datei vom LOD in das
Binärformat
|
Xbiosnummer: | 111
|
Deklaration: | int32_t Dsp_LodToBinary( int8_t *file, int8_t *codeptr );
|
Beschreibung: | Die Funktion Dsp_LodToBinary konvertiert den Inhalt der
.LOD-Datei mit dem Namen file ins Binärformat. Das so
erzeugte DSP-Programm wird an der Adresse codeptr abgelegt. Dieser
Speicherbereich muß ausreichend groß dimensioniert sein. Danach kann
das Programm mit Dsp_ExecProg oder Dsp_ExecBoot ausgeführt werden.
|
Ergebnis: | Die Funktion liefert im positiven Fall die Länge des Programms
in DSP-Worten, oder im Fehlerfall einen negativen Wert zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_Reserve
Dsp_LoadProg Dsp_ExecBoot Dsp_ExecProg
|
C: | #include <tos.h>
int32_t Dsp_LodToBinary( int8_t *file, int8_t *codeptr ); |
Assembler: |
pea codeptr ; Offset 6 pea file ; Offset 2 move.w #111,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »Dsp_MultBlocks« - Datentransfer vom und zum DSP
|
Xbiosnummer: | 127
|
Deklaration: | void Dsp_MultBlocks( int32_t numsend, int32_t numreceive,
DSPBLOCK *sendblocks, DSPBLOCK *receiveblocks );
|
Beschreibung: | Die Funktion Dsp_MultBlocks sendet und empfängt Daten vom DSP.
numsend ist die Anzahl der zu sendenden und numreceive
die Anzahl der zu empfangenden Blöcke. sendblocks und
receiveblocks sind Zeiger auf Strukturen, die die Puffer und
Blöcke beschreiben.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkWords Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_GetWordSize Dsp_BlkBytes
|
C: | #include <tos.h>
void Dsp_MultBlocks( int32_t numsend, int32_t numreceive, DSPBLOCK *sendblocks, DSPBLOCK *receiveblocks ); |
Assembler: |
pea receiveblocks ; Offset 14 pea sendblocks ; Offset 10 move.l numreceive,-(sp) ; Offset 6 move.l numsend,-(sp) ; Offset 2 move.w #127,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_OutStream« - Datentransfer vom DSP via Interrupt
|
Xbiosnummer: | 100
|
Deklaration: | void Dsp_OutStream( int8_t *data_out, int32_t block_size,
int32_t num_blocks, int32_t *blocks_done );
|
Beschreibung: | Die Funktion kopiert mittels DSP-Interruptbehandlung
num_blocks Datenblöcke mit einer Größe von
block_size DSP-Worten vom DSP in dem Puffer data_out.
Bei jedem Interrupt wird ein Block übertragen. Gleichzeitig wird der
Zähler blocks_done, der die Anzahl der übertragenen Blöcke
wiedergibt, inkrementiert. Da die Daten per Interrupt übertragen
werden, muß die Funktion nicht warten. Über blocks_done kann
das Programm im weiteren Verlauf feststellen, ob die Übertragung
beendet ist.
Hinweis: Die Funktion ist nur auf Computern mit dem Signalprozessor DSP56001 verfügbar. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_DoBlock Dsp_BlkUnpacked Dsp_BlkHandShake
Dsp_BlkWords Dsp_BlkBytes Dsp_InStream Dsp_IOStream
Dsp_GetWordSize Dsp_SetVectors Dsp_RemoveInterrupts
Dsp_MultBlocks
|
C: | #include <tos.h>
void Dsp_OutStream( int8_t *data_out, int32_t block_size, int32_t num_blocks, int32_t *blocks_done ); |
Assembler: |
pea blocks_done ; Offset 14 move.l num_blocks,-(sp) ; Offset 10 move.l block_size,-(sp) ; Offset 6 pea data_out ; Offset 2 move.w #100,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $12(sp),sp ; Stack korrigieren |
Name: | »Dsp_RemoveInterrupts« - Generierung von DSP Interrupts
unterbinden
| ||||||||
Xbiosnummer: | 102
| ||||||||
Deklaration: | void Dsp_RemoveInterrupts( int16_t mask );
| ||||||||
Beschreibung: | Die Funktion Dsp_RemoveInterrupts unterbindet die Generierung
von DSP-Interrupts. Der Parameter mask bestimmt, welche
Interrupts betroffen sind:
Die Funktion entfernt ebenfalls Routinen, die mit Dsp_SetVectors installiert wurden. | ||||||||
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
| ||||||||
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
| ||||||||
Gruppe: | DSP-Programmierung
| ||||||||
Querverweis: | Binding Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_SetVectors
|
C: | #include <tos.h>
void Dsp_RemoveInterrupts( int16_t mask ); |
Assembler: |
move.w mask,-(sp) ; Offset 2 move.w #102,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_RequestUniqueAbility« - Identifikation für Prozess
erzeugen
|
Xbiosnummer: | 113
|
Deklaration: | int16_t Dsp_RequestUniqueAbility( void );
|
Beschreibung: | Die Funktion Dsp_RequestUniqueAbility erteilt einem DSP-Prozeß
eine für die gesamte Systemlaufzeit eindeutige Identifikation,
mittels derer man feststellen kann, ob der zum Prozeß gehörige Code
resident im DSP vorhanden ist.
|
Ergebnis: | Die Funktion liefert die für den Prozess erzeugte Kennung
zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_GetProgAbility
|
C: | #include <tos.h>
int16_t Dsp_RequestUniqueAbility( void ); |
Assembler: |
move.w #113,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |
Name: | »Dsp_Reserve« - Speicher reservieren
|
Xbiosnummer: | 107
|
Deklaration: | int16_t Dsp_Reserve( int32_t xreserve, int32_t yreserve );
|
Beschreibung: | Die Funktion Dsp_Reserve reserviert xreserve Worte
X-Speicher und yreserve Worte Y-Speicher. Die
Speicheranforderung darf den verfügbaren Speicher auf keinen Fall
übertreffen. Diese Funktion ist notwendig, damit DSP-Prozesse nicht
durch DSP-Unterprogramme überschrieben werden. Die Reservierung
bleibt bis zum nächsten Aufruf von Dsp_Reserve bestehen.
|
Ergebnis: | Die Funktion liefert im positiven Fall den Wert 0, und im
Fehlerfall den Wert -1 zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_Lock Dsp_Unlock Dsp_Available Dsp_LoadProg
Dsp_ExecProg Dsp_ExecBoot
|
C: | #include <tos.h>
int16_t Dsp_Reserve( int32_t xreserve, int32_t yreserve ); |
Assembler: |
move.l yreserve,-(sp) ; Offset 6 move.l xreserve,-(sp) ; Offset 2 move.w #107,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »DspRunSubroutine« - Unterprogramm ausführen
|
Xbiosnummer: | 118
|
Deklaration: | int16_t Dsp_RunSubroutine( int16_t handle );
|
Beschreibung: | Die Funktion Dsp_RunSubroutine führt das Unterprogramm mit der
Kennung handle aus. Die Kennung für ein Unterprogramm findet
man mittels Dsp_InqSubrAbility oder Dsp_LoadSubroutine heraus.
|
Ergebnis: | Die Funktion liefert im positiven Fall den Wert 0, und im
Fehlerfall eine negative Zahl zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_InqSubrAbility Dsp_FlushSubroutines
Dsp_LoadSubroutine
|
C: | #include <tos.h>
int16_t Dsp_RunSubroutine( int16_t handle ); |
Assembler: |
move.w handle,-(sp) ; Offset 2 move.w #118,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_SetVectors« - Installation einer eigenen
Übertragungsroutine
|
Xbiosnummer: | 126
|
Deklaration: | void Dsp_SetVectors( void (*receiver)(), int32_t
(*transmitter)() );
|
Beschreibung: | Die Funktion Dsp_SetVectors installiert Routinen, die
aufgerufen werden, wenn der DSP über einen Interrupt Daten
übertragen will. receiver ist ein Zeiger auf eine Routine,
die aufgerufen wird, nachdem der DSP Daten verschickt hat, und
transmitter ein Zeiger auf eine Routine, die aufgerufen wird,
bevor der DSP Daten empfängt. Die Empfangsroutine receiver
erhält als Parameter auf dem Stack einen LONG, der vom DSP gesendet
wurde. Die Senderoutine transmitter übergibt einen LONG an
den DSP in Register D0. Dieser muß ungleich Null sein, damit er, d.h.
dessen niederwertigen drei Bytes an den DSP übertragen wird. Beide
Routinen werden mit dem Assemblerbefehl RTS abgeschlossen.
Wird für receiver oder transmitter 0 übergeben, so wird der entsprechende Interrupt gesperrt. Um eine Routine wieder zu entfernen, muß man Dsp_RemoveInterrupts aufrufen. |
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding Dsp_InStream Dsp_OutStream Dsp_IOStream
Dsp_RemoveInterrupts
|
C: | #include <tos.h>
void Dsp_SetVectors( void (*receiver)(), int32_t (*transmitter)() ); |
Assembler: |
pea transmitter ; Offset 6 pea receiver ; Offset 2 move.w #126,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen lea $A(sp),sp ; Stack korrigieren |
Name: | »Dsp_TriggerHC« - Host Kommando ausführen
|
Xbiosnummer: | 112
|
Deklaration: | void Dsp_TriggerHC( int16_t vector );
|
Beschreibung: | Die Funktion Dsp_TriggerHC führt Vector vector aus.
Nur die zwei Vektoren $13 und $14 stehen DSP-Programmen zur freien
Verfügung.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Gruppe: | DSP-Programmierung
|
Querverweis: | Binding
|
C: | #include <tos.h>
void Dsp_TriggerHC( int16_t vector ); |
Assembler: |
move.w vector,-(sp) ; Offset 2 move.w #112,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #4,sp ; Stack korrigieren |
Name: | »Dsp_Unlock« - DSP für andere Prozesse freigeben
|
Xbiosnummer: | 105
|
Deklaration: | void Dsp_Unlock( void );
|
Beschreibung: | Die Funktion Dsp_Unlock gibt den DSP für andere Prozesse frei.
|
Ergebnis: | Die Funktion liefert kein Ergebnis zurück.
|
Gruppe: | DSP-Programmierung
|
Verfügbar: | Die Funktion ist nur auf Computern mit dem Signalprozessor
DSP56001 verfügbar.
|
Querverweis: | Binding Dsp_Lock Dsp_Available Dsp_Reserve Dsp_LoadProg
Dsp_ExecProg Dsp_ExecBoot
|
C: | #include <tos.h>
void Dsp_Unlock( void ); |
Assembler: |
move.w #105,-(sp) ; Offset 0 trap #14 ; XBIOS aufrufen addq.l #2,sp ; Stack korrigieren |