Programmation d'un FPGA distant à travers un tunnel SSH avec Altera Quartus II

On peut programmer facilement un dispositif local avec Altera Quartus II à l'aide d'un USB Blaster. Dans le cas d'un accès distant, on a la possibilité de faire tourner jtagd et jtagconfig sur des hôtes serveur et client séparés et faire la programmation à travers un tunnel SSH, sur le réseau. Dans la pratique, c'est une alternative simple et pas chère de l'Ethernet Blaster.

Dans cet exemple le programmeur Altera USB Blaster est connecté à la machine SRV, tandis que l'environnement de développement Quartus II tourne sur la machine CLNT. Toutes les deux machine tourne le système d'exploitation Linux.

 -------------------                                      -----------------------
| FPGA <-> hôte SRV | <<== SSH tunnel sur le réseau ==>> | hôte CLNT: Quartus II |
 -------------------                                      -----------------------

Lancer sur la machine SRV le jtagd et mettre en place d'un mot de passe. Préparer l'environnement de développement avec la commande <altera_home>/nios2eds/nios2-command-shell.

SRV:$ <altera_home>/nios2eds/nios2-command-shell
SRV:$ jtagd
SRV:$ jtagconfig --enableremote <mot de passe>

Maintenant le jtagd écoute sur le port TCP/1309.

Il est important de lancer jtagd de la manière écrit ci-dessus. Quand c'est le Quartus II, qui le lance, l'accès devient impossible.

Enregistrer les suviants sur la machine CLNT dans le fichier $HOME/.jtagd.conf.

Remote1 {
        Host = "127.0.0.1:1320";
        Password = "<mot de passe>";
}

Creer le tunnel SSH vers la machine SRV par exemple à l'aide de la commande suivante.

CLNT:$ ssh -l <utilisateur> -L 1320:localhost:1309 -N -f SRV

On établi le tunnel avec l'option -L. Le jtagd se tourne sur le hôte CLNT et occuper le port TCP/1309, donc on doit utiliser un autre port libre. L'option -N n'établi pas de shell; l'option -f mettre en arrière le processus ssh après une connection réussie. Pour le tunnel, les options -N -f sont parfaits ensemble.

Enfin, on liste les instruments accessibles avec la commande jtagconfig. Préparer l'environnement de développement avec la commande <altera_home>/nios2eds/nios2-command-shell.

SRV:$ <altera_home>/nios2eds/nios2-command-shell
SRV:$ jtagd
SRV:$ jtagconfig --enableremote <mot de passe>

Maintenant le jtagd écoute sur le port TCP/1309.

CLNT:$ <altera_home>/nios2eds/nios2-command-shell
CLNT:$ jtagconfig
1) USB-Blaster on 127.0.0.1:1320 [2-2]
 01234567   EPXXXX

On peut utiliser le nouveau, distant, Ethernet Blaster sur le hôte CLNT dans le Programmer du Quartus II.