2009-12-12 5 views
2

Je tente d'écrire un OS très simple en ASM et C. (NASM assembler) Je voudrais accéder à la carte son directement, avec ou sans pilotes. Si je n'ai pas besoin de pilotes, comment accéder et envoyer un exemple de fichier audio à la carte son? (Un exemple serait bien) Si j'ai besoin de pilotes, est-il possible de les interfacer et d'appeler les fonctions depuis les pilotes? Et comment puis-je accéder et envoyer un exemple de fichier audio à la carte son ? (Un autre exemple serait bien)NASM accéder à la carte son directement (No OS)

+0

Quelle carte son? Avez-vous accès à la carte de registre de la carte? –

Répondre

3

Je déteste vous décourager, mais les pilotes de carte son modernes sont extrêmement compliqués, et comme vous le savez probablement, spécifiques à l'OS. C'est l'un des défis les plus difficiles dans le développement des systèmes d'exploitation - le support des pilotes. Ce n'est pas quelque chose qui peut être réalisé avec un simple extrait de code.

Pour charger un fichier, vous avez besoin d'un système de fichiers. L'avez-vous déjà mis en œuvre? Le fait que vous ayez utilisé le drapeau "kernel" suggère que votre système d'exploitation en est encore à ses balbutiements. Je ne suis pas sûr que je voudrais mettre le support de son dans le noyau d'un système d'exploitation. Cela étant dit, il existe un bon émulateur appelé Bochs qui a Sound Blaster 16 emulation. Et certains really old documentation pour la programmation. Cela pourrait être votre meilleur pari. L'accès au matériel sonore était beaucoup plus facile dans la journée.

+0

True. Cependant, beaucoup de cartes son/chipsets embarqués sont compatibles AC97. Il est plus facile de les programmer directement que de programmer le SB16. Avec un peu de chance, l'OP a une de ces puces .. –

+0

Hmm .... Je pensais en fait au SB16. Mais, maintenant que vous le mentionnez, AC97 est quelque chose que je reconnais. Cependant, je n'ai aucune idée sur la façon de programmer pour ce chipset ...: P Ma carte son intégrée, un chipset basé sur Intel HDA, supporte AC97, ce qui est un terrain d'essai parfait pour cela. –

1

Bien sûr, vous avez besoin d'un pilote, et bien sûr il n'y a pas de moyen facile de s'interfacer avec ceux existants (il y avait une proposition pour un "Uniform Driver Interface" unifié OS-agnostique - mais je ne pense pas . Donc, après avoir écrit le code pour lire un fichier sur votre disque dur, vous devrez lancer votre propre pilote audio. Maintenant, je n'ai pas fait cela depuis un moment, donc cela peut être obsolète, mais dans les années 90, vous devez configurer votre carte son avec quelques 'out dx, al' (les détails varient selon les cartes son), et puis configurez DMA pour envoyer des données d'un tampon mémoire à votre carte. La carte (ou était-ce le contrôleur DMA?) Déclencherait une interruption quand elle atteindrait la fin du tampon, que vous emploieriez pour remplir le tampon avec de nouvelles données.

Si votre carte dispose d'un pilote linux fonctionnel, je commencerais par regarder son code. Sinon, vous devrez faire de l'ingénierie inverse sur le pilote Windows, la journalisation bpio de Soft-Ice (pause sur l'accès au port io) était bonne pour cette iirc.

Bonne chance.

+0

Ce type d'interface "90" est ce que je pensais. J'ai entendu des gens dire que les nouvelles cartes son peuvent (probablement) prendre en charge l'interfaçage SoundBlaster. Le problème est - je n'ai aucune idée de comment le faire fonctionner! : P Je cherche à ne soutenir que l'ensemble des pilotes ALSA. Je n'irai pas et ne tenterai pas de démonter ou de connecter les pilotes propriétaires eux-mêmes puisque c'est juste une perte de temps pour un chipset spécifique. Peut-être que je pourrais compiler ALSA pour mon OS ....? (Je prévois d'implémenter la compatibilité ELF.) –

1

Votre meilleur pari est probablement de regarder les pilotes de son Linux ou FreeBSD et voir ce qu'ils font. Il est peu probable que vous obteniez une meilleure documentation d'implémentation pour la carte son la plus simple ...

Ceci est un problème difficile. Soyez averti :-p

+1

Je sais. Dommage que les fabricants de cartes son ne se concentrent pas sur une implémentation, et se contentent de faire leur propre création. : P Je me demande s'il est possible de porter ALSA sur mon noyau ... –

0

Voici un système d'exploitation open-source écrit dans tous les assemblages. C'est une excellente référence pour la programmation du noyau d'assemblage si vous êtes nouveau.

http://www.menuetos.net/index.htm

Questions connexes