Après plusieurs mois de lutte, je n'ai toujours pas réussi à débugger mon code. Et comme je n'arrive pas à comprendre pourquoi ça plante, et que c'est franchement démoralisant de bloquer autant, sans aide réelle, ben j'ai du me résigner et passer à autre chose. Le code est dispo (http://cvs.sceen.net/index.cgi/gnumach/) pour ceux que ça intéresse, et j'espère pouvoir reprendre dans quelques temps (vers la fin de mes études en juillet 2007, je vais me plonger dans un autre projet jusque là, donc j'aurai pas beaucoup de temps pour autre chose). Je suis déçu, et je dois pas être le seul, mais je suis certain qu'il y aura de bonnes choses à l'avenir :-).
Weblog
09/11/06: Et le son fut...
Coucou,
Eh oui, GNU/Hurd a produit du son ! C'est pas fou ça ?! :-). Bon, on va pas s'emballer tout de suite : ça plante à la fin de la première écriture, donc y a environ 5-10 secondes de son avec une taille de buffer bien large. Il reste beaucoup de choses à faire pour obtenir un code propre. Mais bon voilà, c'est une étape importante qui montre que je ne me suis pas complètement trompé de direction au départ ;-). Je posterai plus d'infos par la suite quand le mail envoyé à la mailing-list du Hurd sera disponible dans les archives publiques.
08/15/06: Un driver de plus
maestro3: version 0.51 built at 00:54:31 Aug 15 2006
PCI: Enabling bus mastering for device 02:48
PCI: Increasing latency timer of device 02:48 to 64
maestro3: Configuring Allegro found at IO 0x2400 IRQ 11
maestro3: subvendor id: 0x001a31f4
ac97_codec: AC97 codec, vendor id1: 0x0000, id2: 0x0000 (Unknown)
maestro3: 1 channels configured.
maestro3: 1 maestros installed.
J'ai donc maintenant 2 drivers qui ont l'air de s'initialiser correctement, et les fonctions PCI qui vont avec (un certains nombres de macros et de fonctions ont été rajoutées au glue code Linux 2.0 pour qu'il puisse fournir ce que les drivers Linux 2.2 attendaient). La prochaine étape, ça sera de créer le(s) périphérique(s) Mach qui permettront ensuite d'appeler les fonctions device_xxx() pour piloter les cartes son. Comme pas mal de code a été commenté pour que les drivers compilent (en particulier ce qui utilise struct file et struct file_operations, puisque ces structures sont différentes dans Linux 2.2), ça risque de prendre un certain temps. On verra bien la suite :-).
08/06/06: Avancement sur le son
Après deux mois pendant lesquels j'étais un peu coincé, je me suis enfin mis au travail. Après pas mal de recherche, j'ai été obligé d'abandonner l'idée d'utiliser des pilotes récents, donc bye ALSA. Le choix qui semble le plus simple est de backporter des drivers Linux 2.2. Pour le moment, j'ai le driver es1371 qui compile (mais qui n'est pas utilisable), et le code PCI reconnait la carte :
Bus 0, device 8, function 0:
Multimedia audio controller: Ensoniq ES1371 (rev 8).
Slow devsel. IRQ 15. Master Capable. Latency=64. Min Gnt=12.Max Lat=128.
I/O at 0xe800.
La prochaine étape, ça sera de compiler les sources du sound system (puisque là, il n'y a que le pilote), et de voir si le sound system est capable de prober la carte son correctement.
05/24/06: Le son sous GNU/Hurd
Bon voilà, les résultats du Google Summer of Code 2006 sont tombés, et je n'ai pas été sélectionné
. Bref, passons. J'étais candidat pour l'implémentation du son sur le Hurd, et voici une brève description en français de ce que je compte faire :
D'abord, intégrer quelques drivers ALSA de Linux 2.6 dans le noyau GNU Mach. En particulier Ensoniq AudioPCI ES1370/ES1371 (c'est la carte son de ma hurdbox windu) et ESS Allegro/Maestro3 (c'est celle de mon portable solo). Il faudra donc ajouter le glue code nécéssaire à l'intégration de ces drivers. Puis on verra si c'est déjà possible de faire geindre le lappy avec du code de test dans le noyau. Ensuite il faudra coder le support du son dans l'interface des périphériques de GNU Mach (les fonctions device_xxx()). Il y aura beaucoup d'actions à implémenter, mais ça devrait aller relativement vite.
Et ensuite, et c'est là le plus problématique, ça sera l'interface userland. Pour le moment je pense à un translator qui implémenterait une interface ALSA en s'attachant à /dev/snd, mais apparament ça plaît pas aux Hurdistes. Et à moi non plus d'ailleurs. Marco Gerards a proposé que channelio/libchannel (qui n'existe pas encore) soit ce translator. Mais bon j'ai pas le temps d'être au chômage technique et je pense pas avoir bien compris ce que channelio doit être et faire. Thomas Bushnell a également proposé l'implémentation d'une interface spécifique au Hurd, et cette idée me plaît bien, sauf que ça voudrait dire qu'il faut modifier toutes les applications générant du son pour qu'elles sachent utiliser cette nouvelle interface... Donc je suis pas très partant pour ça, et de toute façon, ça rejoint assez la méthode channelio. Donc voilà, pour le moment je garde mon idée d'ALSA, parce qu'au moins on sait que ça marche, ça existe déjà, il suffira de porter alsa-lib pour que toutes les applis sonores puissent fonctionner avec peu ou pas de modifications.
Là je suis pris pendant encore un moment, mais je pense commencer vers le début de juin, et je posterai dès qu'il y aura du nouveau, et si possible du code à tester
.