La mise au point et l’optimisation sont des aspects fondamentaux du développement de logiciels industriels. En effet, les contraintes de qualité de fonctionnement y sont bien plus importantes que dans le cas des logiciels généralistes. Alors qu’un outil classique est utilisé au maximum quelques heures par jour, le logiciel embarqué doit fonctionner 24h/24, et le redémarrage du système est peu fréquent. La moindre fuite de mémoire ou écrasement de mémoire alloué, tolérables sur un logiciel généraliste, devient une véritable catastrophe dans le cas d’un logiciel embarqué.
Dans cet article, nous allons présenter quelques techniques de mise au point d’un système cible à partir d’un poste de développement PC/x86 sous Linux utilisant GDB. Nous aborderons tout d’abord le cas simple de la mise au point en espace utilisateur, puis nous verrons enfin l’utilisation de l’émulateur QEMU pour la mise au point du noyau Linux, de modules dynamiques (.ko) ou d’un bootloader comme U-Boot. Enfin, nous verrons comment utiliser l’option KGDB du noyau Linux pour la mise au point en espace noyau sous QEMU.
L’article utilise comme cible un environnement ARM9 émulé par QEMU (carte Versatile PB). Le compilateur utilisé peut être la version ELDK-4.2 de DENX Software ou un compilateur croisé produit par Crosstool-NG, dont le préfixe est du type arm-linux-.
Les exemples évoqués sont disponibles à l’adresse http://pficheux.free.fr/articles/lmf/remote_debug/exemples.tgz.
1. Mise au point à distance avec GDB
En cas de problème de...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première