wiki:SujetTP4

TP4 : Ajout du support IOCTL au module Linux

Dans ce TP n°4 nous finalisons notre module Linux en ajoutant le support de l'appel système ioctl. Il va nous servir à contrôler le LCD, par exemple pour placer le curseur à un endroit donné ou à nettoyer l'affichage.

Ce TP fait donc suite au TP n°3 et au terme du TP n°4 vous devez donc avec un module Linux complètement fonctionnel capable d'effectuer les opérations suivantes:

  • Initialiser l'affichage avec les bonnes dimensions d'écran (écran vide)
  • Afficher un message à un position donnée (par défaut le premier caractère en haut à gauche)
  • Nettoyer l'affichage
  • Positionner le curseur à une position donnée pour un affichage personnalisé

1. Ajout de l'appel système côté noyau (support minimal)

On vous demande dans un premier temps de simplement ajouter les fonctions et modifier le module Linux du TP3 pour avoir un support minimal de l'appel système ioctl. Par support minimal, on entend une seule commande nommée BCM2708_LCD_IOCTEST qui ne prends 1 seul argument par valeur et le retourne dans la valeur de retour de la fonction ioctl côté utilisateur.

Questions:

  • Quel est le prototype de la fonction qui implémente l'appel système ioctl côté noyau (i.e. dans le module) ?
  • Quelle structure de données dans le module doit être modifiée ?
  • Quelles sont les étapes clés pour ajouter un support minimal ?

Vérifiez le fonctionnement avec un programme de test.

Question:

  • Que faut-il vérifier pour garantir que le support de l'appel système ioctl fonctionne ?

2. Ajout des commandes ioctl

Maintenant que votre support de l'appel système ioctl fonctionne, il faut ajouter des commandes qui sont utiles au contrôle d'un écran LCD. Proposez une implémentation des commandes suivantes:

  • Configuration de la taille de l'écran
  • Nettoyage de l'écran (CLEAR)
  • Réinitialisation du curseur (HOME)
  • Positionnement du curseur dans les limites de la taille de l'écran

Questions (pour chacune des commandes):

  • Faut-il utiliser le passage par valeur ou par pointeur ?
  • Comment se déroule un appel à ioctl par valeur et par pointeur ?
  • Comment utiliser la commande ioctl côté utilisateur ?

Vérifiez le fonctionnement avec un programme test.

Question:

  • Que faut-il vérifier pour garantir que chacune des commandes fonctionne ?
Last modified 10 years ago Last modified on Feb 17, 2014, 8:10:37 PM