Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - GrandAgent

Seiten: [1]
1
Lowlevel-Coding / Re:Soundkartentreiber ES1370
« am: 19. July 2010, 12:04 »
Habe versch. Samples versucht. Von 0 hochwärts und zurück.
Kann ich aus einer MP3 Datei ein Stück extrahieren?

Wäre mir eine Ehre das Wiki zu erweitern, aber bis jetzt bin ich noch am Ac97 dran.
Sobald der fertig ist, werde ich mich an den ES1730 ranmachen. Aber davor sind noch ein paar Basics zu klären ;)
2
Lowlevel-Coding / Re:Soundkartentreiber ES1370
« am: 18. July 2010, 14:12 »
Jupi, höre etwas. :-)
Aber egal was für Werte  ich für die Sample nehme, es hört sich immer nach einem Klopfen und nicht nach einem Ton an.Bei 7FFF lauter bei FFFF etwas leiser.
3
Lowlevel-Coding / Re:Soundkartentreiber ES1370
« am: 15. July 2010, 13:51 »
Also, für das NAMBAR lese ich das Register 4. Dort steht 0xC401.
Laut der Spec sind die Bits 8-15 die Base-Address. Ist das auch die Adresse des NAMBAR?

EDIT:

int NAMBar=pciBus.readPCI(0, 4, 0, 4)>>8;
int NABMBar=pciBus.readPCI(0, 4, 0, 5)>>6;
4
Lowlevel-Coding / Re:Soundkartentreiber ES1370
« am: 15. July 2010, 12:32 »
Also, das erste, was mir so auffällt, ist, dass du (zumindest in diesem Code) NAMBar und NABMBar nicht initialisierst…

Vielen dank XanClic für deine Zeit und Mühe.
Natürlich hast du recht, aber dennoch ein Problem für mich:
Das Gerät habe ich gefunden. Danach lese ich das Command-Register aus, "odere" es mit fünf und schreib es zurück. Wie komm ich nun an NAMBar und NABMBar? Also an welcher Adresse?
5
Lowlevel-Coding / der Code
« am: 15. July 2010, 11:57 »
Hab gestern Nacht noch ein wenig herumprobiert, aber da geht nix :-(

package kernel;

public class ac97 {
static int commandStatusBegin;
static int NAMBar;
static int NABMBar;
static int volume;

        // Die benoetigten Port-Konstanten

static int PORT_NAM_RESET=0x0000;
static int PORT_NAM_MASTER_VOLUME=0x0002;
static int PORT_NAM_MONO_VOLUME=0x0006;
static int PORT_NAM_PC_BEEP=0x000A;
static int PORT_NAM_PCM_VOLUME=0x0018;
static int PORT_NAM_EXT_AUDIO_ID=0x0028;
static int PORT_NAM_EXT_AUDIO_STC=0x002A;
static int PORT_NAM_FRONT_SPLRATE=0x002C;
static int PORT_NAM_LR_SPLRATE=0x0032;
static int PORT_NABM_POBDBAR=0x0010;
static int PORT_NABM_POLVI=0x0015;
static int PORT_NABM_POCONTROL=0x001B;
static int  PORT_NABM_GLB_CTRL_STAT=0x0060;

public static void initAc97(){
ScreenOperations.print("initialsiere Soundkarte");
// Auslesen des Comand-Registers und setzen der Flags:
// 0: I/O Raum vom Gerät verwenden
// 2: Bus-Master
commandStatusBegin=pciBus.readPCI(0, 4, 0, 1)|5;

// ScreenOperations.printHex(commandStatusBegin);

// Neuer Comand schreiben

pciBus.writePCI(0, 4, 0, 1, commandStatusBegin);

//Bus-Master gestartet
//Gerät resetten,
//die Lautstärke und die Samplerrate eingestellen

MAGIC.wIOs16(NAMBar+PORT_NAM_RESET, (short) 42);
MAGIC.wIOs8(NABMBar+PORT_NABM_GLB_CTRL_STAT, (byte)0x02);
int temp1=Interrupts.flag+40;
int temp=0;

// Warten, wird noch schicker gemacht

ScreenOperations.print("Hallo");
while(Interrupts.flag!=temp1){
temp=0;
}
ScreenOperations.print("Ende");

// Lautstaerke setzen
volume=0;
MAGIC.wIOs16(NAMBar+PORT_NAM_MASTER_VOLUME, (short) (volume<<8|volume));
MAGIC.wIOs16(NAMBar+PORT_NAM_MONO_VOLUME,(short) volume);
MAGIC.wIOs16(NAMBar+PORT_NAM_PCM_VOLUME, (short) (volume<<8|volume));

//wieder warten
ScreenOperations.print("Hallo");
int temp2=Interrupts.flag+40;
while(Interrupts.flag!=temp2){
temp=0;
}
ScreenOperations.print("Ende");

//Allgemeine Samplerate
//Stereo Samplerate

MAGIC.wIOs16(NAMBar+PORT_NAM_FRONT_SPLRATE,(short) 44100);
MAGIC.wIOs16(NAMBar+PORT_NAM_LR_SPLRATE, (short)44100);
// und wieder warten...
int temp3=Interrupts.flag+40;
while(Interrupts.flag!=temp3){
temp=0;
}
ScreenOperations.print("Ende");


}



public static void createSpaceSound(){

// Speichern des aktuellen Zeigers ab wann Speicher frei
// danach folgt Speicherbelegung von 4MB
// Zeiger zeigt somit auf den ersten Sample

int beginOfTable=MemoryOperations.First_free_position;
MemoryOperations.alloc(0x400000);

//Zeiger fuer Buffer Descriptor Tabelle
// Hab nur einen Zeiger, 4 Byte der auf den ersten Sample Zeigt
// und die Einstellungen dass es nur diesen Buffer gibt

int beginOfDescriptor=MemoryOperations.First_free_position;
MemoryOperations.alloc(8);
MAGIC.wMem32(beginOfDescriptor, beginOfTable);
MAGIC.wMem16(beginOfDescriptor+4, (short)0xFFFD);

// Schreibe Sample
MAGIC.wMem16(beginOfTable, (short)0xFFFF);
MAGIC.wMem16(beginOfTable+2, (short)0xFFFF);
MAGIC.wMem16(beginOfTable+4, (short)0xFFFF);
MAGIC.wMem16(beginOfTable+6, (short)0xFFFF);

MAGIC.wMem16(beginOfTable+8, (short)0x7FFF);
MAGIC.wMem16(beginOfTable+10, (short)0x7FFF);
MAGIC.wMem16(beginOfTable+12, (short)0x7FFF);
MAGIC.wMem16(beginOfTable+14, (short)0x7FFF);

MAGIC.wMem16(beginOfTable+16, (short)0xAFFE);
MAGIC.wMem16(beginOfTable+18, (short)0xAFFE);
MAGIC.wMem16(beginOfTable+20, (short)0x1234);
MAGIC.wMem16(beginOfTable+22, (short)0x1234);


ScreenOperations.print("Sounds erzeugt");

MAGIC.wIOs32(NABMBar+PORT_NABM_POBDBAR, beginOfDescriptor);
MAGIC.wIOs8(NABMBar+PORT_NABM_POLVI, (byte)1);
MAGIC.wIOs8(NABMBar+PORT_NABM_POCONTROL,(byte)0x15);


}

}


Benutze ebenfalls Qemu. Ich kann in der Spec keine Infos über den Port 0x10 (POBDBAR), 0x15(POLVI) und 0x1B(POCONTROL) finden.

Mir würde zu Beginn erreichen, wenn ein nur ein Piepsen bekomme. Normalerweise wird bei PORT-NABM_POCONTROL mit 0x15 ein Interrupt ausgelöst, das brauche ich ebenfalls nicht, aber ich finde diesen in der Spec nicht :-(
6
Lowlevel-Coding / Re:Soundkartentreiber ES1370
« am: 14. July 2010, 22:57 »
Danke erstmal für deine Antwort. Die Spec hatte ich bereits, aber mir ist dennoch die Vorgehensweise nicht klar.
Im Wiki habt ihr ein super AC97 Tut und ich bin auf der Suche nach dem gleichen aber für den ES1370.

Soweit ich das verstanden habe, muss ich erstmal im Controll-Register die Bits für DMA setzen.
Aber wie geht es nun weiter???

Nebenbei hab ich versucht den AC97 nachzuschreiben. Aber leider funktioniert das nicht :-(
Hab die Karte initialisiert aber erhalte keine Ausgabe. Gibt es eine einfachere Möglichkeit die Sample an die Soundkarte zu geben? Also ohne Buffer Descriptor Tablle?

Oder besser: Wie ein Sample aussieht.
7
Lowlevel-Coding / Soundkartentreiber ES1370
« am: 14. July 2010, 16:14 »
Hallo,

erstmal tolles Forum. Bisher bin ich sehr weit damit gekommen. Auch das Wiki ist wirklich Klasse.
Dennoch steh ich auf dem Schlauch. Ich versuche gerade für ein Project ein Treiber für den ES1370 zu schrieben.

Leider finde ich darüber keine Tuts oder andere Informationen.
Könnt ihr mir weiterhelfen? Vlt. ein paar Ansätze?!
Es handelt sich hierbei um ein Java basiertes OS.
Danke im voraus.
Seiten: [1]

Einloggen