Hallo, Ich bin gerade dabei einen AC97-Controller über Assembler anzusteuern. Ich will einen einfachen Sound ausgeben. Mein Problem ist, dass Alle 3 Codecs im Globalen Status Register (GLOB_CONT [NABMBAR+0x34) nie den Status ready erreichen. Egal welchen reset ich durchführe, es kommt nie dazu, dass einer der Codecs den status ready erreicht. Wenn einer schon Erfahrung mit AC97-Treibern oder dem Controller hat, wäre ich ihm sehr dankbar für eine Antwort. Mein Testsystem hat einen ICH4-Controller von Intel. Grüße Franziskus Karsunke
Es ist anzunehmen, daß aktuelle Linuxdistributionen eine Treiberunterstützung für Deine Hardware enthalten, in den zugehörigen Sourcen könntest Du nachsehen. Warum will man so etwas in Assembler programmieren?
weil ich ein eigenes betriebssystem habe, welches von CD bootet. es ist komplett in assembler geschrieben. Ausserdem is zwischen C und Assembler ja kein allzugroßer Unterschied mehr ;)
> weil ich ein eigenes betriebssystem habe, welches von CD bootet. > es ist komplett in assembler geschrieben. Das macht es ja mal bannig wartungs- und portierfreundlich. Davon abgesehen trifft meine Aussage weiterhin zu - in den Linux-Treibersourcen wirst Du sicherlich Quellen für die Programmierung der Audiohardware finden.
> Das macht es ja mal bannig wartungs- und portierfreundlich.
Allerdings ;)
In den Treibern machen sie es meiner Meinung nach ja eben genauso wie
ich,
aber irgendwie funktioniert es nich so wie bei den Linux-Treibern.
Die Codecs müssen initialisiert werden. AC97 ist nur ein Teil der Geschichte, da ist noch ein herstellerspezifischer Teil dabei. Den mußt du selber programmieren. Welchen Codec verwendest du?
Das herstellerspezifische teil ist in meinem Fall ja der ICH4-controller. Diesen kann mit Registern "programmieren" und dazu bringen sachen an den Controller zu senden. Als Codec verwende ich den primarycodec oder wie war die Frage gemeint? Meine Frage ist eben wie ich diesen genau initialisiere...
>Ausserdem is zwischen C und Assembler ja kein allzugroßer >Unterschied mehr Also dazwischen liegen recht grosse Unterschiede und damit gehe ich mal davon aus, dass du die Entwicklung nicht selbst durchgeführt hast. Falls der Alc von Intel kommt, so wirst du die Register-Ansteuerung auch dort finden. Viel Spass beim Suchen (und deinen ersten Anfängen mit C oder Assembler).
Der 'Primarycodec' ist Herstellerspezifisch, Realtek, Sigmatel, Via etc. Die brauchen einen extraschubser, den AC97 Teil anzuwerfen reicht nicht. Besorg dir ein Datenblatt zum Codec.
@Lötprofi: ... kein Kommentar @Gast: Das Problem ist doch, dass ich keinen direkten Zugriff auf den Codec habe, sondern eben nur Zugriff über den ICH4-Controller. Und bei diesem habe ich nur die möglichkeit die Codecs zu resetten. Hast du schonmal einen solchen Codec angesteuert? Wenn ja, dann wie? und welchen hast du benutzt? Grüße Franz
Also mein größtes problem ist eigentlich, dass wenn ich versuche den Codec zu resetten (Cold Reset via Controlregister) der Codec aufhört auch nur irgendetwas zu tun (noch nicht mal ein Bit-CLK). Und in meinen Status-Registern ist immer nur der tertiary Codec Ready.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.