Távoli FPGA JTAG programozása SSH tunnel-en Altera Quartus II-vel

Az Altera Quartus II-ben kényelmesen programozhatjuk helyi eszközünket az USB Blaster segítségével. Távoli, hálózati elérés esetére lehetőségünk van a jtagd és jtagconfig külön kiszolgáló és ügyfél gépen futtatására és SSH alagúton (tunnel), a hálózaton keresztül végezni a programozást. Gyakorlatilag egyszerű, olcsó Ethernet Blaster alternatíva.

Jelen példában az SRV géphez kapcsolódik az Altera USB Blaster programozó, míg a CLNT gépen fut a Quartus II fejlesztői környezet. Mindkét számítógépen Linux az operációs rendszer.

 ------------------                                    ----------------------
| FPGA <-> SRV gép | <<== SSH tunnel a hálózaton ==>> | CLNT gép: Quartus II |
 ------------------                                    ----------------------

Az SRV gépen indítsuk el a jtagd-t és állítsunk be egy jelszót. Az <altera_home>/nios2eds/nios2-command-shell parancssal a fejlesztői környezetet készítjük elő.

SRV:$ <altera_home>/nios2eds/nios2-command-shell
SRV:$ jtagd
SRV:$ jtagconfig --enableremote <jelszó>

Mostmár hallgatózik a jtagd az TCP/1309-es porton.

Fontos, hogy a jtagd-t a fent leírt módon indítsuk. Amikor a Quartus II indítja, úgy az elérés sikertelen lesz.

A CLNT gépen a $HOME/.jtagd.conf állományba vigyük fel az alábbiakat.

Remote1 {
        Host = "127.0.0.1:1320";
        Password = "<jelszó>";
}

Hozzuk létre az SSH alagutat az SRV géphez például az alábbi paranccsal.

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

Az -L kapcsolóval létrehozzuk az alagutat. A CLNT gépen is fut a jtagd, így lefoglalja a TCP/1309-es portot, tehát másik szabadon választott port-ot használunk. Az -N kapcsoló nem hoz létre shell-t, míg az -f a háttérbe küldi az ssh-t sikeres kapcsolódás után - alagúthoz tökéletes együtt az -N -f kapcsoló.

Végül a jtagconfig paranccsal kilistázzuk az elérhető eszközöket. Az <altera_home>/nios2eds/nios2-command-shell parancssal a fejlesztői környezetet készítjük elő.

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

Az így létrehozott távoli, hálózati, házi Ethernet Blaster a megszokott módon látszódik a CLNT gépen a Quartus II-ben, a Programmer-ben.