Mudanças entre as edições de "Criação de um acesso remoto ao kit MERCURIO IV"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
(Criou página com '==Cenário utilizado== Para a programação remota de um kit MERCURIO IV, foi criado o seguinte cenário: # Na casa do professor foi disponibilizado o kit MERCURIO conectado a...')
 
 
(47 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 10: Linha 10:
 
# Testar se está funcionando o gravador LOCAL. [[Programando o FPGA através da USB-Blaster]]
 
# Testar se está funcionando o gravador LOCAL. [[Programando o FPGA através da USB-Blaster]]
  
==Usando tunel ssh==
+
==Criando o tunel ssh==
Conectar a jtag através de uma senha a ser compartilhada com os alunos.
+
A proposta aqui é a criação de um tunel ssh reverso.
# /opt/altera/13.0sp1/quartus/bin/jtagd
+
<center>[[Arquivo:ReverseTunel.png| 800px]]</center>
# /opt/altera/13.0sp1/quartus/bin/jtagconfig --enableremote DLP29006
+
FONTE:
Gerar um conjunto de chaves jtagserverkey  jtagserverkey.pub para acesso remoto através de chave privada e a publica, na pasta /home/usuario
+
*https://superuser.com/questions/1194105/ssh-troubleshooting-remote-port-forwarding-failed-for-listen-port-errors
# ssh-keygen -t rsa -b 4096
+
*https://stackoverflow.com/questions/11818131/warning-remote-port-forwarding-failed-for-listen-port-52698
# Renomear a chave publica jtagserverkey.pub para authorized_keys
 
# Compartilhar essa chave com os alunos, que devem coloca-la na pasta /home/usuario/.ssh da sua conta na usuario@nuvem.sj.ifsc.edu.br.
 
  
==Acesso pelo usuário da nuvem==
+
===<span style="color: rgb(0, 255, 0);" data-mce-style="color: #00ff00;">Servidor jTAG (green_host)</span>===
# acessar a nuvem [[Acesso ao IFSC-CLOUD (NUVEM)#Quartus II - Modelsim - QSIM]]
+
Para facilitar os script abaixo foram estabelecidas duas variáveis onde os login devem ser inseridos, evitando redigitar no código que segue.
# desenvolver o sistema realizando todas as fases do projeto
+
export <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">USERBLUE</span>=usuario_bluehost
# configurar o programador do quartus para acessar o jTAG server através da porta 6000
+
export <span style="color: rgb(0, 255, 0);" data-mce-style="color: #00ff00;">USERGREEN</span>=usuario_greenhost
# enviar o arquivo .sof para programar o kit.
+
export JTAGPORT=60000
# observar o funcionamento do hardware pela câmera do celular que está sendo mostrada no G-MEET.
+
export JTAGPASSWORD=password
 +
echo <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">USERBLUE</span> <span style="color: rgb(0, 255, 0);" data-mce-style="color: #00ff00;">USERGREEN</span>
 +
echo <span style="color: rgb(0, 255, 0);" data-mce-style="color: #00ff00;">$USERGREEN</span> <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE</span>
 +
 
 +
Na maquina onde está o kit FPGA conectado, será instalado um server jTAG.
 +
* Conectar o jtag através de uma senha '''password''' a ser compartilhada com os alunos.
 +
/opt/altera/13.0sp1/quartus/bin/jtagd
 +
/opt/altera/13.0sp1/quartus/bin/jtagconfig --enableremote '''$JTAGPASSWORD'''
 +
 
 +
* Gerar um conjunto de chaves '''jtagserverkey'''  '''jtagserverkey.pub''' para acesso remoto através de chave privada e a publica, na pasta /home/<span style="color: rgb(0, 255, 0);" data-mce-style="color: #00ff00;">$USERGREEN</span>
 +
ssh-keygen -t rsa -b 4096
 +
 
 +
Generating public/private rsa key pair.
 +
Enter file in which to save the key (/home/$USERGREEN/.ssh/id_rsa): jtagserverkey
 +
jtagserverkey already exists.
 +
Overwrite (y/n)? y
 +
Enter passphrase (empty for no passphrase):
 +
Enter same passphrase again:
 +
Your identification has been saved in jtagserverkey
 +
Your public key has been saved in jtagserverkey.pub
 +
 
 +
* Mudar o nome da chave publica '''jtagserverkey.pub''' para '''authorized_keys'''. Em seguida mover a chave para a conta do <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE</span> na nuvem do IFSC (Blue). Essa chave permitirá que os usuarios_red acessem o túnel ssh reverso sem senha.
 +
mv jtagserverkey.pub authorized_keys
 +
scp -P 2224 authorized_keys <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE@nuvem.sj.ifsc.edu.br</span>:/home/$USERBLUE/.ssh 
 +
 
 +
* Testar se a chave criptográfica está funcionando
 +
ssh -i jtagserverkey <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE@nuvem.sj.ifsc.edu.br</span> -p 2224
 +
 
 +
* Conferir se a porta 1309 está aberta no green_host.
 +
netstat -lnt --wide |grep '1309\|State'
 +
 
 +
Proto Recv-Q Send-Q Local Address          Foreign Address        State     
 +
tcp        0      0 0.0.0.0:1309            0.0.0.0:*              LISTEN
 +
 
 +
* Criar o tunel ssh
 +
ssh -oStrictHostKeyChecking=no -i jtagserverkey -R 60000:localhost:1309 <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE@nuvem.sj.ifsc.edu.br</span> -p 2224 -N -f
 +
 
 +
====Script para reconfigurar o tunel ====
 +
 
 +
*Crie o arquivo '''jtagserver.sh''' com o conteúdo:
 +
export USERBLUE=
 +
export USERGREEN=
 +
export JTAGPORT=60000
 +
export JTAGPASSWORD=
 +
/opt/altera/13.0sp1/quartus/bin/jtagd
 +
/opt/altera/13.0sp1/quartus/bin/jtagconfig --enableremote $JTAGPASSWORD
 +
netstat -lnt --wide |grep '1309\|State'
 +
ssh -oStrictHostKeyChecking=no -i jtagserverkey -R $JTAGPORT:localhost:1309 $USERBLUE@nuvem.sj.ifsc.edu.br -p 2224 -N -f -v
 +
 
 +
* Execute
 +
chmod +x jtagserver.sh
 +
./jtagserver.sh
 +
 
 +
===<span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">Na nuvem (blue_host)</span>===
 +
 
 +
* Acessar a nuvem com usuario_blue e senha e verificar se existe a pasta '''.ssh'''.
 +
ssh <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE@nuvem.sj.ifsc.edu.br</span> -p 2224
 +
ls .ssh
 +
 
 +
* Se não tiver a pasta '''.ssh''' criar uma:
 +
mkdir .ssh
 +
exit ou [CTRL D]
 +
 
 +
* Fazer o passo de cópia da chave publica para esta pasta (ver procedimento no blue_host).
 +
 
 +
* Conferir se chave publica está aqui.
 +
ls -la .ssh/authorized_keys
 +
-rw-r--r--  1 <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE</span> Domain Users  741 May 27 22:38 authorized_keys
 +
 
 +
* Se OK, fazer logoff e logon com a chave privada. 
 +
ssh -i jtagserverkey <span style="color: rgb(51, 102, 255);" data-mce-style="color: #3366ff;">$USERBLUE@nuvem.sj.ifsc.edu.br</span> -p 2224
 +
 
 +
* Conferir se o túnel reverso ssh está aberto.  É possível conferir verificando se a '''porta 60000''' está aberta no blue_host.
 +
netstat -lnt --wide |grep '60000\|State'
 +
 
 +
Proto Recv-Q Send-Q Local Address          Foreign Address        State     
 +
tcp        0      0 127.0.0.1:60000        0.0.0.0:*              LISTEN
 +
 
 +
* Se tudo OK, fazer logoff.
 +
 
 +
===<span style="color: rgb(255, 0, 0);" data-mce-style="color: #ff0000;">Na nuvem (alunos) (red_host)</span>===
 +
 
 +
* Acessar a nuvem com <span style="color: rgb(255, 0, 0);" data-mce-style="color: #ff0000;">USERBRED</span> através de ssh ou pelo x2go com seu login e senha.
 +
* Conferir se o túnel reverso está estabelecido na porta 60000.
 +
netstat -lnt --wide |grep '60000\|State'<br  />Proto Recv-Q Send-Q Local Address          Foreign Address        State      <br  />tcp        0      0 127.0.0.1:60000        0.0.0.0:*              LISTEN
 +
 
 +
* Executar o Quartus II e abrir o programador.  Configurar as '''JTAG Setting''', com Server: '''127.0.0.1:60000''' e senha '''********''' (pergunte a senha ao professor que estiver disponível, pois pode ter mais de um kit disponível).<br  />
 +
'''[[Arquivo:Screenshot from 2020-05-28 20-27-46.png|600px|center|middle|thumb|Configuração da jTAG]]'''
 +
* Se a conexão estiver OK, selecione a''' USB-Blaster '''indicada'''.'''
 +
'''[[Arquivo:Screenshot from 2020-05-28 20-20-55.png|600px|center|middle|thumb|Conexão com exito ao jTAG server remoto]]'''
 +
* Se tiver algum problema depois de configurado as''' JTAG Setting '''o Connection Status indicará o problema.
 +
[[Arquivo:Screenshot from 2020-05-28 19-00-53.png|600px|center|middle|thumb|Erro na configuração]]
 +
 
 +
==Uso do Laboratório Remoto pelo usuário da nuvem do IFSC==
 +
 
 +
# Acessar a nuvem [[Acesso ao IFSC-CLOUD (NUVEM)#Quartus II - Modelsim - QSIM]]
 +
# Desenvolver o sistema realizando todas as fases do projeto
 +
# Configurar o programador do quartus para acessar o jTAG server. Ver acima o procedimento de configuração do <span style="color: rgb(255, 0, 0);" data-mce-style="color: #ff0000;">usuario_red</span>.
 +
# Enviar o arquivo .sof para programar o kit.
 +
# Observar o funcionamento do hardware pela câmera do celular que está sendo mostrada no G-MEET.
 +
# Assista o abaixo o vídeo amador de como acessar o kit FPGA.
 +
 
 +
<center> {{#ev:youtube|AgxmpFXcU9Y }} </center>
 +
 
 +
===Programação via comandos de linha===
 +
:'''PASSO 1 -''' Obter a senha de acesso e a porta onde está o kit com o professor.  Note que podem estar disponíveis mais de um kits remotos. 
 +
export JTAGPORT=60000
 +
export JTAGPASSWORD=<password>
 +
export FILENAME=timer00_99
 +
 
 +
:'''PASSO 2 -''' Adicionar o jtag server, e testar se está OK?
 +
jtagconfig  --addserver 127.0.0.1:$JTAGPORT $JTAGPASSWORD
 +
jtagconfig
 +
 
 +
<i>
 +
1) USB-Blaster on 127.0.0.1:60000 [2-1.2]
 +
    020F40DD  EP3C40/EP4CE(30|40)
 +
</i>
 +
 
 +
::FONTE: jtagconfig --help
 +
 
 +
:'''PASSO 3 -''' Programar o FPGA usando o tunel e o jtag server:
 +
/opt/altera/13.0sp1/quartus/bin/quartus_pgm -m jtag -c "USB-Blaster on 127.0.0.1:$JTAGPORT" -o "p;$FILENAME.sof"
 +
 
 +
<i>
 +
    Info: *******************************************************************
 +
    Info: Running Quartus II 32-bit Programmer
 +
    Info: Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Full Version
 +
    Info: Copyright (C) 1991-2013 Altera Corporation. All rights reserved.
 +
    Info: Your use of Altera Corporation's design tools, logic functions
 +
    Info: and other software and tools, and its AMPP partner logic
 +
    Info: functions, and any output files from any of the foregoing
 +
    Info: (including device programming or simulation files), and any
 +
    Info: associated documentation or information are expressly subject
 +
    Info: to the terms and conditions of the Altera Program License
 +
    Info: Subscription Agreement, Altera MegaCore Function License
 +
    Info: Agreement, or other applicable license agreement, including,
 +
    Info: without limitation, that your use is for the sole purpose of
 +
    Info: programming logic devices manufactured by Altera and sold by
 +
    Info: Altera or its authorized distributors.  Please refer to the
 +
    Info: applicable agreement for further details.
 +
    Info: Processing started: Tue Jun  2 14:46:36 2020
 +
    Info: Command: quartus_pgm -m jtag -c "USB-Blaster on 127.0.0.1:60000" -o p;timer00_99.sof
 +
    Info (213046): Using programming cable "USB-Blaster on 127.0.0.1:60000 [2-1.2]"
 +
    Info (213011): Using programming file timer00_99.sof with checksum 0x00207160 for device EP4CE30F23@1
 +
    Info (209060): Started Programmer operation at Tue Jun  2 14:46:37 2020
 +
    Info (209016): Configuring device index 1
 +
    Info (209017): Device 1 contains JTAG ID code 0x020F40DD
 +
    Info (209007): Configuration succeeded -- 1 device(s) configured
 +
    Info (209011): Successfully performed operation(s)
 +
    Info (209061): Ended Programmer operation at Tue Jun  2 14:46:39 2020
 +
    Info: Quartus II 32-bit Programmer was successful. 0 errors, 0 warnings
 +
    Info: Peak virtual memory: 127 megabytes
 +
    Info: Processing ended: Tue Jun  2 14:46:39 2020
 +
    Info: Elapsed time: 00:00:03
 +
    Info: Total CPU time (on all processors): 00:00:01
 +
</i>
 +
 
 +
::FONTE: [https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/tclscriptrefmnl.pdf Quartus II Scripting Reference Manual]
 +
 
 +
==Outras possibilidades estudadas==
 +
Antes de implementar a solução acima com túnel reverso, foi tentado realizar a criação do laboratório remoto usando um '''jtag server''' em uma maquina Windows 10, mas devido a existência do GCNAT na rede da NET-CLARO, não houve sucesso.  Nestas configurações fui auxiliado pelo prof. [[Roberto de Matos]] e pelo servidor da DTIC [[Humberto José de Sousa]].  Todas as configurações foram feitas e testadas, mas esbarramos ao final no GCNAT. Na tentativa de obter um IP público não tivemos sucesso por enquanto pois a NET não está atendendo trabalhos não prioritários.
 +
 
 +
==Agradecimentos==
 +
Agradeço ao aluno [[João Pedro Menegali Salvan Bittencourt]], pois sem a sua ajuda remota, explicando as configurações e funcionamento do túnel ssh reverso e uso de chaves criptográficas, este laboratório remoto não seria possível em um tempo tão curto. Agradeço ainda ao professor [[Ederson Torresini]] que se resolveu o problema da derrubada do tunel pelo serviço de acesso. Agradeço também ao [[Humberto José de Sousa]] pela ajuda e orientação na tentativa de fazer funcionar o laboratório remoto com acesso direto ao '''jtag server'''.  [[Usuário:Moecke|Marcos Moecke]] ([[Usuário Discussão:Moecke|discussão]]) 11h55min de 2 de junho de 2020 (-03)
 +
 
 +
 
 +
==Referências==
 +
*https://patrickmn.com/aside/how-to-keep-alive-ssh-sessions/

Edição atual tal como às 12h12min de 2 de junho de 2020

Cenário utilizado

Para a programação remota de um kit MERCURIO IV, foi criado o seguinte cenário:

  1. Na casa do professor foi disponibilizado o kit MERCURIO conectado a um notebook com UBUNTU 20.04 e com o software Quartus II.
  2. Uma câmera de smartphone será usada para mostrar o funcionamento da placa.
  3. Os alunos utilizaram os serviços da nuvem.sj.ifsc.edu.br porta 2224 para fazer a programação

Preparando o servidor

  1. Instalar a versão 13.0sp1 no notebook.
  2. Fazer as configurações necessárias para acessar a JTAG. Configuração da USB para programação do FPGA via JTAG
  3. Testar se está funcionando o gravador LOCAL. Programando o FPGA através da USB-Blaster

Criando o tunel ssh

A proposta aqui é a criação de um tunel ssh reverso.

ReverseTunel.png

FONTE:

Servidor jTAG (green_host)

Para facilitar os script abaixo foram estabelecidas duas variáveis onde os login devem ser inseridos, evitando redigitar no código que segue.

export USERBLUE=usuario_bluehost
export USERGREEN=usuario_greenhost
export JTAGPORT=60000
export JTAGPASSWORD=password
echo USERBLUE USERGREEN
echo $USERGREEN $USERBLUE

Na maquina onde está o kit FPGA conectado, será instalado um server jTAG.

  • Conectar o jtag através de uma senha password a ser compartilhada com os alunos.
/opt/altera/13.0sp1/quartus/bin/jtagd
/opt/altera/13.0sp1/quartus/bin/jtagconfig --enableremote $JTAGPASSWORD
  • Gerar um conjunto de chaves jtagserverkey jtagserverkey.pub para acesso remoto através de chave privada e a publica, na pasta /home/$USERGREEN
ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/$USERGREEN/.ssh/id_rsa): jtagserverkey
jtagserverkey already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in jtagserverkey
Your public key has been saved in jtagserverkey.pub
  • Mudar o nome da chave publica jtagserverkey.pub para authorized_keys. Em seguida mover a chave para a conta do $USERBLUE na nuvem do IFSC (Blue). Essa chave permitirá que os usuarios_red acessem o túnel ssh reverso sem senha.
mv jtagserverkey.pub authorized_keys
scp -P 2224 authorized_keys $USERBLUE@nuvem.sj.ifsc.edu.br:/home/$USERBLUE/.ssh  
  • Testar se a chave criptográfica está funcionando
ssh -i jtagserverkey $USERBLUE@nuvem.sj.ifsc.edu.br -p 2224
  • Conferir se a porta 1309 está aberta no green_host.
netstat -lnt --wide |grep '1309\|State'
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:1309            0.0.0.0:*               LISTEN
  • Criar o tunel ssh
ssh -oStrictHostKeyChecking=no -i jtagserverkey -R 60000:localhost:1309 $USERBLUE@nuvem.sj.ifsc.edu.br -p 2224 -N -f

Script para reconfigurar o tunel

  • Crie o arquivo jtagserver.sh com o conteúdo:
export USERBLUE=
export USERGREEN=
export JTAGPORT=60000
export JTAGPASSWORD=
/opt/altera/13.0sp1/quartus/bin/jtagd
/opt/altera/13.0sp1/quartus/bin/jtagconfig --enableremote $JTAGPASSWORD
netstat -lnt --wide |grep '1309\|State'
ssh -oStrictHostKeyChecking=no -i jtagserverkey -R $JTAGPORT:localhost:1309 $USERBLUE@nuvem.sj.ifsc.edu.br -p 2224 -N -f -v
  • Execute
chmod +x jtagserver.sh
./jtagserver.sh

Na nuvem (blue_host)

  • Acessar a nuvem com usuario_blue e senha e verificar se existe a pasta .ssh.
ssh $USERBLUE@nuvem.sj.ifsc.edu.br -p 2224
ls .ssh
  • Se não tiver a pasta .ssh criar uma:
mkdir .ssh
exit ou [CTRL D]
  • Fazer o passo de cópia da chave publica para esta pasta (ver procedimento no blue_host).
  • Conferir se chave publica está aqui.
ls -la .ssh/authorized_keys
-rw-r--r--  1 $USERBLUE Domain Users  741 May 27 22:38 authorized_keys
  • Se OK, fazer logoff e logon com a chave privada.
ssh -i jtagserverkey $USERBLUE@nuvem.sj.ifsc.edu.br -p 2224
  • Conferir se o túnel reverso ssh está aberto. É possível conferir verificando se a porta 60000 está aberta no blue_host.
netstat -lnt --wide |grep '60000\|State'
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:60000         0.0.0.0:*               LISTEN 
  • Se tudo OK, fazer logoff.

Na nuvem (alunos) (red_host)

  • Acessar a nuvem com USERBRED através de ssh ou pelo x2go com seu login e senha.
  • Conferir se o túnel reverso está estabelecido na porta 60000.
netstat -lnt --wide |grep '60000\|State'
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:60000 0.0.0.0:* LISTEN
  • Executar o Quartus II e abrir o programador. Configurar as JTAG Setting, com Server: 127.0.0.1:60000 e senha ******** (pergunte a senha ao professor que estiver disponível, pois pode ter mais de um kit disponível).
Configuração da jTAG
  • Se a conexão estiver OK, selecione a USB-Blaster indicada.
Conexão com exito ao jTAG server remoto
  • Se tiver algum problema depois de configurado as JTAG Setting o Connection Status indicará o problema.
Erro na configuração

Uso do Laboratório Remoto pelo usuário da nuvem do IFSC

  1. Acessar a nuvem Acesso ao IFSC-CLOUD (NUVEM)#Quartus II - Modelsim - QSIM
  2. Desenvolver o sistema realizando todas as fases do projeto
  3. Configurar o programador do quartus para acessar o jTAG server. Ver acima o procedimento de configuração do usuario_red.
  4. Enviar o arquivo .sof para programar o kit.
  5. Observar o funcionamento do hardware pela câmera do celular que está sendo mostrada no G-MEET.
  6. Assista o abaixo o vídeo amador de como acessar o kit FPGA.

Programação via comandos de linha

PASSO 1 - Obter a senha de acesso e a porta onde está o kit com o professor. Note que podem estar disponíveis mais de um kits remotos.
export JTAGPORT=60000
export JTAGPASSWORD=<password>
export FILENAME=timer00_99
PASSO 2 - Adicionar o jtag server, e testar se está OK?
jtagconfig  --addserver 127.0.0.1:$JTAGPORT $JTAGPASSWORD
jtagconfig 

1) USB-Blaster on 127.0.0.1:60000 [2-1.2]
   020F40DD   EP3C40/EP4CE(30|40)

FONTE: jtagconfig --help
PASSO 3 - Programar o FPGA usando o tunel e o jtag server:
/opt/altera/13.0sp1/quartus/bin/quartus_pgm -m jtag -c "USB-Blaster on 127.0.0.1:$JTAGPORT" -o "p;$FILENAME.sof"

   Info: *******************************************************************
   Info: Running Quartus II 32-bit Programmer
   Info: Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Full Version
   Info: Copyright (C) 1991-2013 Altera Corporation. All rights reserved.
   Info: Your use of Altera Corporation's design tools, logic functions 
   Info: and other software and tools, and its AMPP partner logic 
   Info: functions, and any output files from any of the foregoing 
   Info: (including device programming or simulation files), and any 
   Info: associated documentation or information are expressly subject 
   Info: to the terms and conditions of the Altera Program License 
   Info: Subscription Agreement, Altera MegaCore Function License 
   Info: Agreement, or other applicable license agreement, including, 
   Info: without limitation, that your use is for the sole purpose of 
   Info: programming logic devices manufactured by Altera and sold by 
   Info: Altera or its authorized distributors.  Please refer to the 
   Info: applicable agreement for further details.
   Info: Processing started: Tue Jun  2 14:46:36 2020
   Info: Command: quartus_pgm -m jtag -c "USB-Blaster on 127.0.0.1:60000" -o p;timer00_99.sof
   Info (213046): Using programming cable "USB-Blaster on 127.0.0.1:60000 [2-1.2]"
   Info (213011): Using programming file timer00_99.sof with checksum 0x00207160 for device EP4CE30F23@1
   Info (209060): Started Programmer operation at Tue Jun  2 14:46:37 2020
   Info (209016): Configuring device index 1
   Info (209017): Device 1 contains JTAG ID code 0x020F40DD
   Info (209007): Configuration succeeded -- 1 device(s) configured
   Info (209011): Successfully performed operation(s)
   Info (209061): Ended Programmer operation at Tue Jun  2 14:46:39 2020
   Info: Quartus II 32-bit Programmer was successful. 0 errors, 0 warnings
   Info: Peak virtual memory: 127 megabytes
   Info: Processing ended: Tue Jun  2 14:46:39 2020
   Info: Elapsed time: 00:00:03
   Info: Total CPU time (on all processors): 00:00:01

FONTE: Quartus II Scripting Reference Manual

Outras possibilidades estudadas

Antes de implementar a solução acima com túnel reverso, foi tentado realizar a criação do laboratório remoto usando um jtag server em uma maquina Windows 10, mas devido a existência do GCNAT na rede da NET-CLARO, não houve sucesso. Nestas configurações fui auxiliado pelo prof. Roberto de Matos e pelo servidor da DTIC Humberto José de Sousa. Todas as configurações foram feitas e testadas, mas esbarramos ao final no GCNAT. Na tentativa de obter um IP público não tivemos sucesso por enquanto pois a NET não está atendendo trabalhos não prioritários.

Agradecimentos

Agradeço ao aluno João Pedro Menegali Salvan Bittencourt, pois sem a sua ajuda remota, explicando as configurações e funcionamento do túnel ssh reverso e uso de chaves criptográficas, este laboratório remoto não seria possível em um tempo tão curto. Agradeço ainda ao professor Ederson Torresini que se resolveu o problema da derrubada do tunel pelo serviço de acesso. Agradeço também ao Humberto José de Sousa pela ajuda e orientação na tentativa de fazer funcionar o laboratório remoto com acesso direto ao jtag server. Marcos Moecke (discussão) 11h55min de 2 de junho de 2020 (-03)


Referências