IMA4 2019/2020 EC2
Sommaire
Objectif
Vous allez travailler sur une carte de développement ATXMEGAC3-XPLD. L'idée est d'implanter micro-python sur cette carte.
Vous aurez donc à écrire un programme pour le micro-contrôleur ATXmega384C3 avec la LUFA.
Cherchez l'embryon de portage de micro-python sur AVR, récupérez le répertoire avr8-dummy et intégrez-le à une version récente de micro-python. Fusionnez ce logiciel avec l'exemple VirtualSerial de la LUFA pour avoir une console USB/série avec un interpréteur micro-python sur l'ATXMEGAC3-XPLD.
Matériel reçu
Cahier des charges
Durant cette épreuve, je vais écrire un programme pour le micro-contrôleur ATXmega384C3 avec la LUFA. L'objectif est d'implanter micro-python sur l'ATXMEGAC3-XPLD. Afin de réaliser cet objectif, il faudra procéder en plusieurs étapes :
- Comprendre et prendre en main la démo Virtual Serial de la bibliothèque LUFA
- Récupérer le répertoire avr8-dummy et l'intégrer à une version récente de micropython. Une fois ceci réalisé, comprendre et compiler une première fois le main.c du répertoire avr8-dummy
- Comprendre les deux makefiles utilisés
- Réaliser la fusion de la démo Virtual Serial de la Lufa avec micropython
Travail réalisé
Micro-python n'implante pas le port série pour les atxmega. Il faut donc le faire avec l'exemple VirtualSerial de la Lufa.
Virtual Serial
Le premier objectif de cette épreuve complémentaire a été de se familiariser avec la bibliothèque Lufa et plus particulièrement avec la demo Virtual Serial.
Le téléchargement de la bibliothèque Lufa s'effectue de la façon suivante :
git clone https://github.com/abcminiuser/lufa
Tout d'abord il a fallu modifier le fichier Descriptor.c avec les valeurs d'ID Vendor et d'ID Product de ma carte.
Ces valeurs sont accessible en utilisant la commande suivante :
dmesg -s 1024
La première chose à faire a été de modifier le Makefile :
Les 3 premières lignes correspondent au micro-contrôleur sur la carte. Puis il a fallu changer la fréquence. Ce changement de fréquence a été très important pour résoudre certain problème, lors du lancement du .hex sur l'atmega384c3, lorsque j'utilisais des fréquences trop faible. Puis j'ai créé un point upload dans le makefile afin de lancer les 3 commandes suivantes :
dfu-programmer atxmega384c3 erase dfu-programmer atxmega384c3 flash VirtualSerial.hex dfu-programmer atxmega384c3 reset
De manière automatique en utilisant la commande suivante :
make upload
Ensuite, une fois la carte débranché et rebranché, il faut vérifier la présence d'un nouveau port série ACM0 grâce à la commande
ls -l /dev/tty*
Puis j'ai créé une petite fonction Bonton() afin de tester la carte dans minicom
Une fois la fonction créé et le make upload lancé, j'ai lancé minicom afin de voir le résultat
Lors de l'appui d'un bouton, nous pouvons voir l'affichage "Bouton n" en fonction du bouton appuyé
Avr8-dummy
Tout d'abord, il a fallu télécharger les répertoires micropython et avr8-dummy
git clone https://github.com/micropython/micropython git clone https://github.com/slavaza/micropython-avr8/tree/master/ports/avr8-dummy
Puis il a fallu déplacer le répertoire avr8-dummy dans ports à l'intérieur du répertoire micropython
La fonction main dans le répertoire avr8-dummy permet de générer un REPL avec un prompt en micropython
Comme précisé précédemment, Micro-python n'implante pas le port série pour les atxmega. C'est pourquoi nous allons utiliser la demo VirtualSerial de la bibliothèque Lufa utilisé juste avant, afin d'implanter le port série pour l'atxmega.