Projet tutoré Enseignant responsable : P. CELKA JAEGY Robin CHATIN Baptiste 1 Introduction I. Prise en main avec la carte Armadeus II. Communication série avec l’apf51 III. Configuration TFTP IV. Flash de la carte V. Can bus Linux Driver VI. Les connections physiques de la carte VII.Les scripts shell VIII.Programme en Python IX. Programme en Qt Conclusion JAEGY Robin CHATIN Baptiste 2 Introduction Présentation du Projet Sujet : Mise en œuvre d’une communication CAN sur un système Linux embarqué Armadeus. Problématique : On souhaite pouvoir envoyer des trames CAN via la carte Armadeus apf51_dev et si possible mettre en œuvre une interface tactile sur cette carte pour communiquer avec un véhicule par liaison CAN à l’aide de boutons et d’un afficheur. Étapes du projet : Prendre en main la carte Armadeus Mise en œuvre d’une liaison CAN Faire un programme qui envoie des trames CAN Mise en œuvre d’une interface tactile JAEGY Robin CHATIN Baptiste 3 Système embarqué sous Linux? Il est composé de : Un bootloader qui permet de charger le système d’exploitation Un système d'exploitation = le noyau Linux De nombreux programmes et bibliothèques organisées dans un système de fichiers racines: le rootfs Exemple : QT embedded, Python, SDL… JAEGY Robin CHATIN Baptiste 4 Outils de développements Cartes microprocesseur Cartes développement APF51_Dev APF51 Périphériques et Accessoires LW700 JAEGY Robin CHATIN Baptiste APF_Holder 5 I) Prise en main avec la carte Armadeus Il est nécessaire d’installer des paquets à l’environnement de programmation ainsi qu’a la création du kernel et des rootfs. - Le logiciel Amardeus puis configurer le Buildroot. Buildroot Outil de construction de systèmes GNU/Linux embarqués Utilise le processus de compilation croisée. JAEGY Robin CHATIN Baptiste 6 La configuration du Buildroot : (apf51) Board Support (imx51) CPU name (2) Number of RAM chips (256) Size of a single RAM chip Fichiers de mise à jour : JAEGY Robin CHATIN Baptiste apf51-u-boot.bin apf51-linux.bin apf51-rootfs.arm.jffs2 apf51-rootfs.arm.tar 7 II) Communication série avec l’apf51 Le choix s’est porté sur C-Kermit La communication se fait à travers une liaison série RS232 simulé par un câble USB Configuration JAEGY Robin CHATIN Baptiste 125200 bit/s 8 bits Pas de parité 1 Bit de stop 8 III) Configuration TFPT TFTP (Trivial File Transfer Protocol) Protocole simplifié de transfert de fichiers. Copie des fichiers de sortie de la compilation vers le dossier tftpboot/ avant le flash armadeus/buildroot/output/images/ vers tftpboot/ JAEGY Robin CHATIN Baptiste 9 La configuration du réseau Les variables d'environnement Commande: printenv Côté Carte IP 192.168.0.10 Netmask 255.255.255.0 Serverip 192.168.0.15 Rootpath ’’/tftpboot/apf51-root’’ JAEGY Robin CHATIN Baptiste setenv saveenv Côté PC IP 192.168.0.15 Netmask 255.255.255.0 Passerelle 192.168.0.1 10 IV) Flash de la carte Le bootloader (Chargeur de démarrage) Initialiser le matériel Charger le noyau Linux et le lancer avec les bons paramètres U-Boot Démarre le système d'exploitation Initialise les fonctions vitales après un reset Lance le système Linux Fournit une interface pour reprogrammer la Flash du système JAEGY Robin CHATIN Baptiste 11 V) CAN bus Linux driver SocketCAN Ensemble de driver et de logiciels utiles pour le réseau CAN. Utilisation du Bus Can Charger les drivers JAEGY Robin CHATIN Baptiste modprobe can modprobe can-dev modprobe can-raw modprobe mcp251x 12 Régler le débit de l'interface CAN0 ip link set can0 up type can bitrate (125000 ou 500000) Configurer l’activation du réseau CAN ifconfig can0 up set can0 up Envoyer une trame sur le Bus Can cansend can0 555#10.20.30.40 (ID 555, octet data 10.20.30.40) JAEGY Robin CHATIN Baptiste 13 VI) Connexion physique de la carte Micro USB JAEGY Robin CHATIN Baptiste 14 VII) Les scripts shell Automatisation de la configuration du CAN Si on appuis sur Entrée on exécute l’envoi d’une trame Si on tape exit et Entrée on sort du script JAEGY Robin CHATIN Baptiste 15 Bus CAN de la carte Usb PC JAEGY Robin CHATIN Baptiste 16 VIII) Programme en Python Pour une utilisation plus poussée de la liaison CAN comme par exemple: Envoyer des trames en boucles Mettre une variable dans un octet qui sera envoyé sur le réseau CAN. Nous avons réalisé un programme en python capable d’envoyer des trames CAN. JAEGY Robin CHATIN Baptiste 17 Dans cet exemple notre programme demande d’appuyer soit sur : A pour envoyer la trame avec l’identifiant 555. B pour envoyer la trame avec l’identifiant 666. C pour envoyer la trame avec l’identifiant 777. Q pour quitter le programme, Il faut ensuite confirmé à l’aide la touche entrée. JAEGY Robin CHATIN Baptiste 18 IX) Programme en QT Développé en C++ On utilise QT Embedded sur notre carte Offre pleins de possibilités d’utilisation : Interface graphique Accès aux données Connexions réseau Gestion des fils d’exécution 1. Ajout de la bibliothèque pour le touchscreen Pour utiliser les application QT nous avons besoin de l’écran tactile il faut donc ajouter le paquet nécessaire. On fait un make menuconfig dans le dossier armadeus puis on sélectionne : JAEGY Robin CHATIN Baptiste 19 IX) Programme en QT 2. Script Shell d’automatisation Nous avons créé un script pour éxecuter automatiquement les commandes utiles à : Calibrage de l’écran Exporter les données du tactiles pour QT Lancer le programme QT Calibrer l’écran Exporter les données Lancer le programme QT JAEGY Robin CHATIN Baptiste 20 IX) Programme en QT 3. Programme de l’interface graphique en QT On a prévu deux boutons simple effet qui à leur appuie envoie une trame Un curseur avec une plage de 0 à 250 et son afficheur permettrait de fixer cette valeur au compteur en appuyer sur le bouton Un bouton qui permet de quitter le programme JAEGY Robin CHATIN Baptiste 21 Ce projet nous a permis d’approfondir nos connaissances et nous a montré les possibilités d’utiliser un système embarqué linux pour communiquer avec un véhicule par liaison CAN. Un projet passionnant qui nous a donné la motivation nécessaire pour le mener à bien. Néanmoins il dommage de ne pas avoir pu finaliser l’interface graphique qui était pour nous la partie la plus intéressante cause d’un manque de temps du à un problème en début de projet. Merci de votre attention. Baptiste CHATIN Robin JAEGY 22