Introduction
Il existe des cas ou l'on veut pouvoir développer des applications utilisant plus d'un pico. J'ai développé moi même une application de contrôle de petits trains électriques utilisant deux pico. LE premier servant à piloter les locomotives, le second pilotant les accessoires et gérant les sécurités du réseau. La question est alors : Comment faire pour relier deux pico en même temps sur un PC Linux ou un Raspberry Pi et développer deux applications distinctes, les charger chacune sur le bon pico et les deboguer ?
La première chose est que la complexité inhérente à une telle architecture impose pratiquement le développement sous Visual Studio Code et l'utilisation d'OpenOCD pour charger et deboguer les programmes sur chaque pico. Cette rubrique s'adresse donc aux utilisateurs développant sous une telle architecture. Pour rappel : Visual Studio Code est quand même nettement plus complet et performant que des éditeurs comme Geany, et OpenOCD vous libère des opérations manuelles sur le Pico et des copies de fichiers exéxcutables vers la cible.
Pour le développement sous Visual Studio Code, voir la rubrique : Premier projet pour Visual Studio Code.
Bien sûr, cela impose l'utilisation d'une sonde DebugProbe pour chaque Pico. Il vous en faut donc deux !
Identification des sondes Debug Probe
Pour identifier vos sondes Debug Probe, utilisez la procédure suivante :
- Brancher une première sonde sur un port USB du PC ou du Raspberry Pi.
- Dans un terminal, entrez la commande :
dmesg | grep tty
Cette commande liste tous les périphériques contenant le terme "tty". Dans la liste retournée par la commande vous devriez trouver un périphérique nommé "ttyACM0". Ca..., c'est votre sonde Debug Probe.
lsusb -v
Cette commande est bavarde. Dans les données retournées vous devriez trouver une rubrique comme celle-çi : "Bus 00x Device 00x: ID 2e8a:000c Raspberry Pi Debug Probe (CMSIS-DAP)". Dans cette rubrique vous trouverez une ligne nommée "iSerial" contenant une valeur héxadécimale comme par exemple : "E6614103E753092F". Relevez cette valeur. Il s'agit du numéro de série de votre Debug Probe.
- Brancher la seconde sonde sur un port USB du PC ou du Raspberry Pi.
- Exécutez les deux même commandes. la seconde sonde sera "ttyACM1" et vous trouverez également son numéro de série. Attention à ne pas confondre vos deux sondes. Vérifez que vous avez bien 2 numéros de série différents.
Création des fichiers de configuration d'interface d'OpenOCD
- Dans un terminal, entrez la commande :cd /usr/local/share/openocd/scripts/interface
- Admettons que nous nommons notre première sonde : "1", et la seconde : "2". Dans le terminal entrez la commande :
sudo nano cmsis-dap-1.cfg
- Dans l'éditeur Nano, entrez les lignes suivantes, ou "xxx" doit être remplacé par le numéro de série de votre premiere sonde Debug Probe :
adapter driver cmsis-dap
adapter serial xxx
- Sauvegardez le fichier (Ctrl+O).
- Répetez la même procédure pour la seconde sone en nommant le fichier "cmsis-dap-2.cfg" et en lui indiquant le numéro de série de la seconde sonde.
Commandes OpenOCD et minicom
- La commande OpenOCD pour charger et déboguer un programme sur la première sonde sera :openocd -f interface/cmsis-dap-1.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "program xxx.elf verify reset exit"
- La commande OpenOCD pour charger et déboguer un programme sur la seconde sonde sera :
openocd -f interface/cmsis-dap-2.cfg -f target/rp2040.cfg -c "adapter speed 5000" -c "program xxx.elf verify reset exit"
- La commande minicom de console de la première sonde sera :
sudo minicom -D /dev/ttyACM0 -b 115200
- La commande minicom de console de la seconde sonde sera :
sudo minicom -D /dev/ttyACM1 -b 115200