IMA4 2018/2019 EC5 : Différence entre versions

De Wiki d'activités IMA
(Description du projet)
(Description du projet)
Ligne 26 : Ligne 26 :
 
D'un point de vue pratique, vous pouvez lancer <code>minicom -D /dev/ttyACM0</code> dans un terminal pour tester votre programme et <code>nano /mnt/main.py</code> (ou équivalent) dans un autre terminal pour modifier le programme. Tapez simplement CTRL-D dans l'interpréteur micro-python pour recharger le programme <code>main.py</code>. Vous pouvez aussi vous passer du câble mini-USB en connectant les broches <code>PA9</code> et <code>5V</code> sur le connecteur <code>P2</code>
 
D'un point de vue pratique, vous pouvez lancer <code>minicom -D /dev/ttyACM0</code> dans un terminal pour tester votre programme et <code>nano /mnt/main.py</code> (ou équivalent) dans un autre terminal pour modifier le programme. Tapez simplement CTRL-D dans l'interpréteur micro-python pour recharger le programme <code>main.py</code>. Vous pouvez aussi vous passer du câble mini-USB en connectant les broches <code>PA9</code> et <code>5V</code> sur le connecteur <code>P2</code>
  
Il est a priori possible d'implanter SLIP Dans le code <code>main.py</code> vous devrez créer l'objet connexion série/USB avec ces quelques lignes :
+
Il est a priori possible d'implanter SLIP sur la connexion série/USB en créant l'objet connexion série/USB avec ces quelques lignes :
  
 
  import pyb
 
  import pyb
 
  usb=pyb.USB_VCP()
 
  usb=pyb.USB_VCP()
  
Une difficulté pour implanter SLIP en micro-python est d'arriver à détourner l'interruption du CTRL-C. Le plus simple est d'utiliser la méthode <code>setinterrupt</code> de <code>pyb.USB_VCP</code> avec l'argument <code>-1</code>.
+
Cette connexion est cependant difficile à utiliser pour SLIP : il faut détourner l'interruption du CTRL-C avec la méthode <code>setinterrupt</code> et même ainsi l'interpréteur Python a la fâcheuse habitude de reprendre la main sur la connexion série/USB. De plus utiliser cette connexion rend le développement du programme <code>main.py</code> compliqué car il n'est plus possible d'afficher des message de déverminage.
 +
 
 +
Il est conseillé d'utiliser une autre connexion série pour implanter SLIP. Micro-python permet de créer des [http://docs.micropython.org/en/latest/library/pyb.UART.html objets port série] avec le constructeur <code>pyb.UART</code>. Le port série peut être connecté au PC en utilisant un convertisseur USB/Série connecté d'un coté sur les broches <code>TX</code> (fil jaune), <code>RX</code> (fil orange) et <code>GND</code> (fil noir) du port série et de l'autre sur un port USB du PC.
 +
 
 +
Pour tester votre connexion SLIP vous ouvrirez un troisième terminal pour lancer la commande <code>slattach -Ldv -p slip -s 9600 /dev/ttyUSB0</code>. Un quatrième terminal peut permettre de configurer la nouvelle interface réseau <code>sl0</code> par exemple en lançant la commande <code>ip link set sl0 up ; ip address add dev sl0 192.168.0.1 peer 192.168.0.10</code>. Un <code>ping 192.168.0.10</code> va provoquer l'envoi de paquets IPv4 sur l'objet série créé en micro-python. Des tests peuvent être effectué sur l'interpréteur micro-python disponible via l'utilitaire <code>minicom</code> dont il a été question plus haut.
  
 
=== Matériel nécessaire ===
 
=== Matériel nécessaire ===

Version du 22 février 2019 à 11:08

Présentation du projet

Contexte

L'élève continue son semestre S8 à l'école.

Objectif

L'objectif de l'épreuve complémentaire est de programmer un dispositif de type système embarqué en micro-python pour utilisation dans des travaux pratiques en GIS3.

Description du projet

Vous devez utiliser une plateforme stm32f4-discovery. Les tâches à accomplir sur cette plateforme sont :

  • mettre à jour la plateforme pour vérifier que le dispositif ST-LINK intégré permet la programmation via système de fichiers, en cas contraire établir une liste des différentes versions de ST-LINK disponibles sur les différentes plateformes avec leurs fonctionnalités principales ;
  • installer micro-python sur la plateforme ;
  • écrire un programme python main.py pour :
    • implanter SLIP sur la plateforme ;
    • répondre aux paquets ICMP demande d'écho ;
    • gérer les 4 LEDs programmables sur réception de datagrammes UDP ;
    • gérer le bouton programmable et envoyer des datagrammes UDP sur changement d'état de ce bouton.

Comme adresse de destination des paquets de changement d'état des paquets vous utiliserez l'adresse source du dernier datagramme de gestion des LEDs. En cas d'absence de paquets UDP reçus vous pouvez utiliser 255.255.255.255 comme adresse destination.

Vous écrirez le programme Python dans le fichier main.py du périphérique clef USB implanté sur le processeur principal et accessible par le connecteur micro-USB. Trouvez le périphérique bloc correspondant par la commande lsblk. Le nom du périphérique est facile à trouver, c'est le seul d'une taille d'environ 100kB. Vous pouvez monter le périphérique par la commande mount /dev/sdb1 /mnt. Le fichier se trouve alors dans le répertoire /mnt. Avant de déconnecter la plateforme taper la commande umount /mnt.

D'un point de vue pratique, vous pouvez lancer minicom -D /dev/ttyACM0 dans un terminal pour tester votre programme et nano /mnt/main.py (ou équivalent) dans un autre terminal pour modifier le programme. Tapez simplement CTRL-D dans l'interpréteur micro-python pour recharger le programme main.py. Vous pouvez aussi vous passer du câble mini-USB en connectant les broches PA9 et 5V sur le connecteur P2

Il est a priori possible d'implanter SLIP sur la connexion série/USB en créant l'objet connexion série/USB avec ces quelques lignes :

import pyb
usb=pyb.USB_VCP()

Cette connexion est cependant difficile à utiliser pour SLIP : il faut détourner l'interruption du CTRL-C avec la méthode setinterrupt et même ainsi l'interpréteur Python a la fâcheuse habitude de reprendre la main sur la connexion série/USB. De plus utiliser cette connexion rend le développement du programme main.py compliqué car il n'est plus possible d'afficher des message de déverminage.

Il est conseillé d'utiliser une autre connexion série pour implanter SLIP. Micro-python permet de créer des objets port série avec le constructeur pyb.UART. Le port série peut être connecté au PC en utilisant un convertisseur USB/Série connecté d'un coté sur les broches TX (fil jaune), RX (fil orange) et GND (fil noir) du port série et de l'autre sur un port USB du PC.

Pour tester votre connexion SLIP vous ouvrirez un troisième terminal pour lancer la commande slattach -Ldv -p slip -s 9600 /dev/ttyUSB0. Un quatrième terminal peut permettre de configurer la nouvelle interface réseau sl0 par exemple en lançant la commande ip link set sl0 up ; ip address add dev sl0 192.168.0.1 peer 192.168.0.10. Un ping 192.168.0.10 va provoquer l'envoi de paquets IPv4 sur l'objet série créé en micro-python. Des tests peuvent être effectué sur l'interpréteur micro-python disponible via l'utilitaire minicom dont il a été question plus haut.

Matériel nécessaire

Description Fabricant Référence Fabricant Fournisseur Quantité Lien fournisseur

Planning prévisionnel

Travail effectué

Documents