480 likes | 634 Views
Haute École de la Province de Liège. Catégorie Technique Bachelier en Informatique et Systèmes Finalité Informatique Industrielle. Construction, chargement et mise au point d’images systèmes sous QNX. David Bourlard et Nicolas Dumont. Plan. Situation des activités. QNX.
E N D
Haute École de la Province de Liège Catégorie Technique Bachelier en Informatique et Systèmes Finalité Informatique Industrielle H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Construction, chargement et mise au point d’images systèmes sous QNX David Bourlard et Nicolas Dumont H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Finalité Industrielle • Informaticien • Spécialiste des systèmes informatiques • Supervision • Programmation des interfaçages • Systèmes embarqués • Compétent dans le domaine du contrôle temps réel de dispositifs extérieurs à l’ordinateur. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Objectifs L.I.I. • Systèmes temps réels • Supervision • Systèmes embarqués • Traitements d’images H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Cours de Systèmes Embarqués • 3ème année. • Techniques informatiques vues dans les autres cours Cours spécifique aux systèmes embarqués H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Objectifs du cours • Objectif principal : • Constructions d’images systèmes • Objectif complémentaire : • Mise en œuvre d’un microcontrôleur sans O.S. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Système QNX « Neutrino » (6.3.2) • API POSIX 1003.1-2001 1003.1c (threads), 1003.1b, 1003.1d et 1003.1j (extensions temps réel) • Hard Realtime < 10µs • ARM, MIPS, PowerPC, Hitachi SH-4, x86. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Système QNX « Neutrino » • Module d’exécution de base « procnto » = µnoyau (gestion message-passing et signaux) + process manager (gestion processus, IPC, mémoire et noms de répertoires) ≃ 45Ko • Processus ajoutés au besoin • Débogage standard avec gdb • Compilateur gcc procnto H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Système QNX « Neutrino » • Message-Passing Interface: primitive de communication interprocessus (IPC) fondamentale • Mécanisme synchrone (messages) ou non (événements) H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Système QNX « Neutrino » • support de la MMU (Memory Management Unit): espace mémoire de chaque processus isolé protection protection protection protection protection protection H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Système pré-emptif QNX « Neutrino » • Pré-emption et interruptions supportées jusque dans les appels systèmes PREEMPT PREEMPT PREEMPT PREEMPT PREEMPT PREEMPT
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Création d’une image système H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Composition d’un fichier .bld H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Fichier .bld [virtual=x86,bios +compress] .bootstrap = { [+keeplinked] startup-bios -s 64k -A PATH=/proc/boot LD_LIBRARY_PATH=/proc/boot:/dev/shmem:/usr/lib:/lib procnto } [+script] .script = { procmgr_symlink ../../proc/boot/libc.so /usr/lib/ldqnx.so.2 devc-pty & devc-con -n2 & reopen /dev/con1 [+session] TERM=qansiuesh & } libc.so /lib/libm.so.2 /lib/libsocket.so.2 [code=uip data=copy perms=+r,+x] /x86/usr/bin/gdb ls echo pdebug devc-pty # elem [+raw]/home/testrt/BM/Prog devc-con uesh H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Tailles d’images Simples • Images minimales : • De l’ordre de 200 Ko pour l’image la plus simple. • Images créées au laboratoire: • Jusqu’à 1,3 Mo pour l’image contenant le débugger gdb. • 600Ko ~ 1 Mo pour l’image permettant le débugging via la ligne série ou le réseau. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Debugging local sous QNX Débogage de processus local avec gdb, sur systèmes PC et embarqué: • Programme compilé avec option ‘-g’ (taille passe de 7,5 à 25Ko). H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Debugging distant sous QNX • Informations de débogage et code source restent sur le système hôte. • Exécutable à analyser téléchargé vers le système cible. programme H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Debugging distant sous QNX 1) ligne série 2) réseau ethernet en ligne de commande 3) réseau ethernet dans l’IDE QNX Momentics H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Images système sur mémoire flash • DiskOnChip (EEPROM XIP bootable apparaissant comme disque dur grâce au pilote TrueFFS) • DiskOnModule (EEPROM reconnue nativement comme disque dur IDE/SATA) • Clé USB H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Images système sur mémoire flash Méthode en utilisant l’utilitaire ‘fdisk’: 0) [pour le DiskOnChip, charger le pilote TrueFFS] • Créer une partition QNX • Positionner le ‘boot flag’ • Initialiser la partition • Ecrire le chargeur de démarrage QNX • Monter la partition • Copier l’image système préalablement créée, sous le nom ‘.boot’ H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Démarrage via réseau: BOOTP ‘Bootstrap Protocol‘ : la machine qui démarre découvre • son adresse IP • adresse IP serveur • adresse IP passerelle • nom d'un fichier à charger en mémoire pour exécution. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
BOOTP requests TFTP read reply (image transfer) TFTP read request BOOTP request 0.0.0.0:67 255.255.255.255:68 Client IP:67 255.255.255.255:68 BOOTP reply BOOTP replies ARP requests Client IP + Server IP + Gateway IP + Boot File Name Client IP + Server IP + Gateway IP + Boot File Name Server Client ARP reply ARP request
Démarrage via réseau: bootp • Disquette Etherboot (boot loader open-source palliant à l’absence de ROM PXE de certaines cartes réseau) • BIOS de PC et de système embarqué ->erreur TFTP si image >512Ko 3) pxegrub: petite image pour démarrage sur le réseau H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
pxegrub BOOTP requests BOOTP replies ARP requests Server Client ARP reply TFTP read request TFTP read request TFTP read reply (QNX system image transfer) TFTP read reply (pxegrub transfer)
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Développement croisé • Création d’une image pour une cible ARM depuis l’IDE QNX sur un PC x86. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Caractéristiques désirées • Taille: 100x100 mm • Connectique: • Ethernet 10/100MBit • RS232 • USB • Supporte QNX H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Caractéristiques de la carte • Module Colibri PXA270 de Toradex • Processeur Marvell Xscale PXA2700 312 MHz • 64 Mo de RAM • 32 Mo de mémoire flash • Carte support avec connecteurs souhaités (Série,USB, Ethernet) H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Choix de la carte ARM • Petite carte • BSP disponible sous QNX et gratuit H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Board Support Package • Un BSP (de QNX) pour la carte est téléchargé. • Il contient : • Certains drivers de la carte ARM. • un fichier de build (.bld). • ce qui est nécessaire pour démarrer une image sur la carte. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Création de l’image sous l’IDE • Création de l’image simple et intuitive via l’IDE. • Seules quelques modifications à faire au niveau du fichier directeur. • IDE QNX disponible sous windows/linux également. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Environnement de travail H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Plan • Situation des activités. • QNX. • Construction d’une image système. • Debugging. • Démarrage de la cible sur Flash. • Démarrage sur le réseau. • Développement Croisé. • Conclusions H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
QNX: points forts • Entièrement conforme à POSIX 1003.1-2001 • Processus hors espace noyau, y compris les drivers -> gdb utilisable • Documentation claire et unifiée • Support payant très efficace • QNX gratuit pour enseignement / recherche H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
QNX: points faibles • Indisponibilité de pilotes pour hôtes de développement et de BSP pour les cibles • Interface graphique propriétaire spécifique, mais légère et temps réel. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Pourquoi avoir choisi QNX • RTOS (Real Time Operating System) de type Temps Réel Dur • Système modulaire convenant à la fois pour une machine standard et une utilisation embarquée 1 OS. H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Questions ? H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Aspects techniques • Empreinte mémoire minimale 200ko • XIP (eXecute In Place), exécution de code sans copie préalable en mémoire centrale H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Perspectives • Micro serveur WEB • Ecrans tactiles (QNX / linux) H.E.P.L. - Séminaire Embarqués du 21 avril 2010.
Système embarqué cible PC104 H.E.P.L. - Séminaire Embarqués du 21 avril 2010.