Re: Fragen zu Audioanwendungen.

From: Oliver Fromme <olli(at)secnetix.de>
Date: Sun, 8 Jun 2003 12:38:21 +0200 (CEST)

Sorry für die etwas verspätete Antwort.

Matthias Thiem <mathiem(at)t-online.de> wrote:
> Oliver Fromme schrieb:
> > Ja, sofern das betreffende ATAPI-Gerät den DMA-Modus kor-
> > rekt implementiert. Das ist leider nicht bei allen der
> > Fall (wie ich aus eigener Erfahrung weiß), weshalb es bei
> > FreeBSD per Default ausgeschaltet ist.
>
> Mit meiner Komfiguration funtioniert DMA zumindest unter Win2k und 98.
> Ich gehe also davon aus das es schon funktioniert.

Das muß nicht unbedingt der Fall sein. Windows enthält
zahlreiche Work-arounds für Hardware, die nur marginal oder
überhaupt nicht den Spezifikationen und Standards ent-
spricht, oder die einfach nur »broken« ist.

Der Trugschluß »es läuft unter Windows, also kann es nicht
kaputt sein« wird leider häufig gemacht, beispielsweise bei
RAM. Ein »schwacher« RAM-Baustein, der unter Windows funk-
tioniert, kann unter FreeBSD (und/oder Linux) Fehler wer-
fen, weil die Nutzungscharakteristika unter einem anderen
Betriebssystem völlig unterschiedlich sein können. Mal
ganz davon abgesehen, daß FreeBSD die Hardware effizienter
nutzt und daher leichter über Schachstellen stolpert.

> > Man kann es aber
> > problemlos einschalten -- wie gesagt, vorausgesetzt, daß
> > die eigenen ATAPI-Geräte das auch richtig können.
>
> Macht man das auch mit hdparm oder ist das ein anderer Befehl?

hdparm ist Linux-spezifisch und nicht standardisiert.

Bei mir (FreeBSD 4-stable) habe ich folgende Zeile in der
Datei /boot/loader.conf stehen:

hw.ata.atapi_dma="1"

Damit wird beim Booten des Kernels DMA für ATAPI-Geräte
(CD-ROM-Laufwerke, Brenner) eingeschaltet.

> > Welche Soundkarte haben Sie denn konkret?
>
> Es handelt sich bei den verwendeten Karten um jeweils einen Onboard
> Chipsatz auf dem Elitegroup K7S5A Mainboard und andererseits (und die
> ist besonders wichtig) um eine RME Digi96/8 PST.
>
> Laut den Hardware Notes auf der FreeBSD Seite wird diese Karte nicht
> unterstuetzt.

Hm. Das Entscheidende wären die Audio-Chips, die da drauf
sind. In den Hardware-Notes stehen keine Kartennamen drin
(oder nur wenige als Beispiele), weil da sonst tausende
drinstehen müßten, und die Pflege und Aktualisierung der
Liste wäre extrem aufwendig.

Aber wenn diese Digi96/8 eine teure Profikarte ist, wird
sie vermutlich einen eigenen Chip haben, der nicht allzu
weit verbreitet ist. Daher vermute ich, daß er tatsächlich
nicht »native« unterstützt wird. Aber wie gesagt: Auf
www.opensound.com findet man eine ganze Reihe von Treibern
für FreeBSD, die erheblich mehr Karten unterstützen. Das
wäre auf jeden Fall einen Versuch wert. Man kann zum
Testen kostenlos einen zeitbeschränkten Treiber herunter-
laden.
 
> Einzige Alternative waehre eine Karte mit Cmedia Chipsatz und zwar mit
> dem bestimmten der Bitgenau S/P-DIF kann (welcher war das nochmal?) und
> ein externer A/D D/A Wandler. Die C-Media Chips koennen zwar nur 44.1
> und 48KHz, aber mehr braucht man sowieso nicht. Die Frage waehre dann
> noch ob das S/P-DIF Interface von Cmedia auch voll unterstuetzt wird.

Kann ich leider nicht beantworten; ich habe am Rechner noch
nie etwas mit S/P-DIF gemacht (für meine Zwecke, d.h. mp3s
abspielen, genügt eine ganz normale Standard-Soundkarte).

> > Sogenannte harte Echtzeitfähigkeit ist mit PC-Hardware
> > prinzipiell nicht möglich, auch wenn einige Softwarefirmen
> > Gegenteiliges behaupten.
>
> Dumme Frage: was ist da genau der Unterschied.
> Echtzeitfaehig ist AFAIK wenn jeder Prozess maximal nur eine bestimmte
> Zeit warten muss.

»Harte Echtzeitverarbeitung« nennt man es, wenn Hard- und
Software so konstruiert sind, daß sie für bestimmte Ereig-
nisse eine maximale Reaktionszeit garantieren. Die Beto-
nung liegt auf »maximale« und »garantieren«.

Daher ist dies bei normaler PC-Hardware schonmal nicht
möglich, da man nicht vorhersagen kann, wie lange ein be-
stimmter Interrupt benötigt, oder wie lange eine Festplatte
benötigt, um einen Sektor zu schreiben oder zu lesen. Es
gibt z.B. Festplatten, die regelmäßige Rekalibrierungszyk-
len durchführen, und dann steht das Teil einfach mal für
ein paar Sekunden. Es gibt auch Festplatten, bei denen der
Hersteller eine separate »AV«-Version herausgebracht hat,
die diese Rekalibrierung nicht durchführt und daher tat-
sächlich einen garantierten Durchsatz im Streaming-Betrieb
bringen kann. Fujitsu macht das beispielsweise. Natürlich
sind die entsprechend teurer (wegen geringerer Nachfrage).

»Weiche Echtzeitverarbeitung« ist da schon deutlich weniger
anspruchsvoll. FreeBSD kennt das Kommando »rtprio«, mit
dem man Programme als »realtime«-Prozesse ausführen kann.
Das bedeutet aber lediglich, daß sie vor allen anderen Pro-
zessen im System mit CPU-Zeit versorgt werden. Wenn die
Festplatte eine Pause macht oder im netzwerk ein Paket ver-
lorgen geht und retransmittet werden muß, dann muß auch
ein »realtime«-Prozeß warten. Das gleiche gilt natürlich,
wenn es einen weiteren »realtime«-Prozeß gibt, der zur
gleichen Zeit ebenfalls gerne CPU-Zeit haben möchte.

> Ich nehme an dasz das notwendig ist damit z.B. kein
> Buffer Underrun beim Brennen auftritt wenn noch etwas anderes laeuft.

Ja, und weil das mit PC-Hardware nicht garantiert werden
kann, wurde »Burn-proof« u.ä. erfunden.

Aber wie gesagt, bei Audio-Anwendungen ist das mit moderner
Hardware ziemlich unkritisch. Ein einzelner Audio-Stream
in CD-Qualität (stereo, 44,1 kHz, 16bit) benötigt exakt
176,4 kbyte/s Durchsatz. Heutige Festplatten schaffen se-
quentielle Transferraten im zweistelligen Mbyte/s-Bereich.
Zusätzlich kann man die Daten ja auch noch durch einen
Puffer-Prozeß abfangen lassen, der sie erstmal im Speicher
zwischenlagert, um die Applikation von der Festplatte zu
entkoppeln, so daß es keine Auswirkung hat, falls die
Platte mal ein kleines Päuschen macht. Auch das Betriebs-
system selbst führt bereits eine gewisse Pufferung durch
(Read-ahead, asynchrones Schreiben).

Mit meinem alten Pentium-166 (ja, 166 MHz, ohne MMX) kann
ich problemlos mit 12x brennen, ohne daß es einen Buffer-
Underrun gibt. Das entspricht dem zwölffachen Durchsatz
einer Audio-CD. Allerdings vermeide ich es, während des
Brennens andere Aktionen zu machen, die möglicherweise die
CPU oder die beteiligten IDE-Channel belasten könnten.
Achja: Jener 12x-Brenner kann nichtmal DMA, sondern läuft
mit PIO4. Allerdings läuft natürlich die Festplatte, von
der die Daten kommen, mit DMA.

Also, ich denke, Du brauchst Dir diesbezüglich keine Sorgen
zu machen.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
Anyone who creates his or her own cryptographic primitive is
either a genius or a fool.  Given the genius/fool ratio for
our species, the odds aren't very good.
       -- Bruce Schneier
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 08 Jun 2003 - 12:38:24 CEST

search this site