41 | | == 2. Initialisation du module == |
| 41 | == 2. Initialisation/déinitialisation du module == |
| 42 | |
| 43 | Ajouter le code nécessaire à l'initialisation de votre module. Cela comprend: |
| 44 | 1. L'obtention dynamique d'un nombre majeur (i.e. major number) |
| 45 | 1. L'allocation mémoire (kzalloc) de la structure de donnée du pilote (i.e. variable globale bcm2708_lcd_p). |
| 46 | 1. Initialiser le chardev avec cdev_init |
| 47 | 1. Enregistrer le chardev dans le noyau avec cdev_add |
| 48 | 1. Initialiser l'afficheur LCD |
| 49 | |
| 50 | Ajouter également le code réciproque pour la déinitialisation. Cela comprends: |
| 51 | 1. Déinitialiser l'afficheur LCD |
| 52 | 1. Déenregistrer le chardev du noyau avec cdev_del |
| 53 | 1. Libérer libérer le nombre majeur |
| 54 | 1. Déalloué la mémoire associée à la structure de donnée du pilote (kfree). |
| 55 | |
| 56 | N'oubliez pas de gérer les cas d'erreurs. Une part importante de la notation sera allouée sur ce point. |
| 57 | |
| 58 | Proposer un moyen de tester que l'initialisation et la déinitialisation fonctionnent correctement. |