Dans l’article précédent, nous avons cablé un ATmega directement aux GPIO du Raspberry Pi. Nous allons maintenant installer la partie logicielle nécessaire pour programmer le micro-contrôleur.
Pour rappel, notre ATmega328P sera ‘configuré’ pour une alimentation en 3.3V, sur son oscillateur interne à 8MHz, et une vitesse d’upload sur l’UART à 57600 baud.
Possibilité 1 – Script d’installation
Il y a pas mal d’étapes, j’ai mis tout cela sous forme de script sur GitHub. Voici donc la procédure (très) simplifiée :
cd /tmp git clone https://github.com/CaptainStouf/raspberry_isp.git cd raspberry_isp/ sudo chmod +x arduino_installer.sh sudo ./arduino_installer.sh
Après un temps plus ou moins long (selon le nombre de mises à jour à faire), le script s’achève et vous pouvez rebooter pour activer le tout. Vous pourrez alors passer à l’article suivant : initialisation et programmation en SPI.
Possibilité 2 – Installation manuelle
Mise à jour du Raspberry
sudo apt-get -y update sudo apt-get -y dist-upgrade
Installation de l’IDE Arduino classique
sudo apt-get -y install arduino
Nous récupérons et copions les deux fichiers de définitions Arduino, qui contiennent les informations sur notre programmeur et notre bootloader spéciaux. Vous devrez ajuster la définition du bootloader dans le fichier boards.txt si vous utilisez un ATmega en 5V et/ou un résonateur externe (comme l’Arduino Uno). Même chose si vous utilisez un autre modèle d’ATmega (ATmega8-16 par exemple).
wget https://raw.githubusercontent.com/CaptainStouf/raspberry_isp/master/boards.txt wget https://raw.githubusercontent.com/CaptainStouf/raspberry_isp/master/programmers.txt sudo cp boards.txt /usr/share/arduino/hardware/arduino sudo cp programmers.txt /usr/share/arduino/hardware/arduino
Installation de avrdude spécial R-Pi, utilisé dans le projet Gertboard (avrdude est le composant de l’IDE Arduino qui permet d’uploader des sketches dans l’ATmega)
cd /tmp wget http://project-downloads.drogon.net/gertboard/avrdude_5.10-4_armhf.deb sudo dpkg -i avrdude_5.10-4_armhf.deb sudo chmod 4755 /usr/bin/avrdude
Nous installons le petit hack qui permet, lors d’un upload de sketch en UART, de forcer un reset de l’ATmega via un GPIO du Raspberry.
Il est possible de modifier le GPIO utilisé en éditant le fichier « autoreset ».
wget https://github.com/CaptainStouf/avrdude-rpi/archive/master.zip sudo unzip master.zip cd /tmp/avrdude-rpi-master/ sudo cp autoreset /usr/bin sudo cp avrdude-autoreset /usr/bin sudo mv /usr/bin/avrdude /usr/bin/avrdude-original sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude sudo chmod 755 /usr/bin/avrdude-autoreset sudo chmod 755 /usr/bin/autoreset
Nous avons besoin du port série du Rapberry Pi, mais par défaut dans Raspbian, il est occupé par une console. Nous allons donc désactiver cette console pour avoir accès au port série :
sudo nano /etc/inittab
Recherchez (CTRL+w) et commentez (rajoutez un #) la ligne suivante :
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
Sauvegardez (CTRL+o) et quittez (CTRL+x)
Quand le Raspi démarre, il envoie toutes ses infos de démarrage sur le port série. Nous devons donc également désactiver cette fonctionnalité.
sudo nano /boot/cmdline.txt
Le contenu du fichier devrait ressembler à :
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Supprimmez toutes les références à ttyAMA0 (c’est le nom du port série). Le fichier devrait maintenant ressembler à ceci :
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
Nous allons enfin créer deux ports série virtuels, ttyS8 et ttyS9, qui seront des liens dynamiques vers les ports physiques, afin que l’IDE Arduino puisse les utiliser.
sudo echo 'KERNEL=="ttyAMA0", SYMLINK+="ttyS8",GROUP="dialout",MODE:=0666' >> /etc/udev/rules.d/99-tty.rules sudo echo 'KERNEL=="ttyACM0", SYMLINK+="ttyS9",GROUP="dialout",MODE:=0666' >> /etc/udev/rules.d/99-tty.rules
Il n’y a plus qu’à rebooter pour activer le tout.
La suite logicielle (de base) permettant d’exploiter notre ATmega est prête. Ouf ! Cependant, notre ATmega n’est pas encore prêt à communiquer avec le Raspberry Pi.
Dans l’article suivant, nous verrons donc comment initialiser et utiliser notre ATmega, en SPI…
9 réflexions au sujet de « Raspberry Pi / ATmega bridge : installation »