mikrocontroller.net

Forum: PC-Programmierung ICH4AC97-Controller via Assembler ansteuern


Autor: Franziskus Karsunke (fertas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Franziskus Karsunke (fertas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Franziskus Karsunke (fertas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Franziskus Karsunke (fertas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Lötprofi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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).

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der 'Primarycodec' ist Herstellerspezifisch, Realtek, Sigmatel, Via etc. 
Die brauchen einen extraschubser, den AC97 Teil anzuwerfen reicht nicht.
Besorg dir ein Datenblatt zum Codec.

Autor: Franziskus Karsunke (fertas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Franziskus Karsunke (fertas)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.