L'interfaccia audio � un device a cui va inviata la forma d'onda da
mandare alle casse. Sotto Linux appare come un file ("/dev/dsp") su cui
scrivere quei dati (read: "campionamento"; write: "output audio"; ioctl:
"volume, frequenza output, ecc."): il kernel, non ha appena ha
abbastanza dati da mandare in output (dovrebbero essere 512 bytes, cio�
256 samples a 16 bit, ossia poco meno di 6 millisecondi di audio a 44.1
KHz) attiva il chip audio e gli manda il blocco dati.
Dato che la periferica ha solo due uscite (perch� � stereo), nel corso
degli anni hanno inventato qualche "daemon" che raccoglie i dati audio,
li mixa e poi li manda al kernel (i vari Enlightenment Sound Daemon,
Pulseaudio, eccetera), con un overhead generalmente trascurabile. A suo
tempo l'ALSA era nato per ovviare ai limiti del vecchio OSS, col
risultato che ALSA � diventato pi� complicato di OSS.
L'unico motivo per usare direttamente "/dev/dsp" � avere un assoluto
fine-control di quello che stai mandando in output (oppure di avere
qualcosa di estremamente semplice da provare; invece, studiarsi le
librerie di pulseaudio, significa dover spendere per forza qualche ora
in pi� sul progetto).
Andare a un livello ancora pi� basso � un'impresa titanica, che magari
qualche professore universitario potrebbe chiedere come tesi di ricerca
per la laurea. La manualistica tecnica degli OMAP � di parecchie
migliaia di pagine (non per modo di dire).
I sorgenti del kernel Linux per la Beagleboard pi� aggiornati li si
trovano sul github di Koen Kooi (
https://github.com/koenkooi/ ) ma non
credo che in pochi giorni di accanito studio si possano cavare chiss�
che informazioni. Il fatto � che il kernel Linux � ormai cos� grosso,
che per studiare "una" periferica hardware occorre destreggiarsi tra
parecchi file sorgenti che spesso apparentemente non c'entranno niente,
faticando parecchio a trovare il bandolo della matassa... Parlo cos�
perch� gi� ai tempi di Linux 1.2.x per scrivere un modulino che usasse
il DMA per uno scanner manuale, fui costretto a sudare sette camicie.