Suivez précisément les étapes suivantes (au prochain TP, faites seulement les 2 dernières étapes) :
Vous devez lancer les programmes en étant en mode console. Pour passer dans la console 1 il faut taper sous X11 : Control Alt F1.
Le répertoire /root/RTAI contient quelques exemples de programmes temps réel et un Makefile. Ne les modifiez pas sur place s'il vous plait, laissez les pour les suivants.
Pour compiler et lancer un programme (pendant 10 secondes), tapez : make nom_du_programme
En tapant make son vous lancez un programme qui va émettre un sifflement. Si ce n'est pas le cas, il y a un problème, prévenez l'enseignant.
Le moindre bug dans votre programme peut planter la machine et nécessiter de la redémarrer, faites très attention à ce que vous faites. Copiez régulièrement vos fichiers sur votre support de sauvegarde.
On désire faire un piano électrique. La partie temps réel de l'application génerera le son en fonction de ce qu'elle lira dans une FIFO. Un processus unix normal écrira dans la FIFO.
L'application sera dans un module lançant deux threads périodiques :
Pour vous aidez, vous disposez de :
Les FIFO sont accessible via les périphériques /dev/rtf.... Ils sont créés au vol quand le module FIFO de RTAI est chargé.
Le son est généré par une tâche de période 1/8192 secondes.
Le ``haut-parleur'' interne du PC ne peut être que dans 2 états : 0 ou 1 (il ne peut donc générer que des crénaux et pas de jolies sinusoïdes). Si vous le laissez toujours à 0 ou toujours à 1 vous n'entendrez rien car le son est une vibration. Dans la suite les temps sont exprimés en 1/8192èmes de seconde. Soient :
Pour générer la note de période p, on donne au haut-parleur la valeur (2t)/p & 1. Comme on se limite à des valeurs entières, la fréquence la plus élevée est donc de 4096Hz.
Pour simuler la sortie de plusieurs notes simultanées, on fait un ou exclusif entres les différentes valeurs à donner au haut-parleur : ((2t)/p1 & 1)^((2t)/p2 & 1)^...
Le programme son.c génère une fréquence fixe de 4096Hz.