Mudanças entre as edições de "Criação de um acesso remoto ao kit MERCURIO IV"
Linha 84: | Linha 84: | ||
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 | 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 ''' | + | * 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]]''' | '''[[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. | * Se tiver algum problema depois de configurado as''' JTAG Setting '''o Connection Status indicará o problema. |
Edição das 20h31min de 28 de maio de 2020
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 um notebook com UBUNTU 20.04 e com o software Quartus II.
- Uma câmera de smartphone será usada para mostrar o funcionamento da placa.
- Os alunos utilizaram os serviços da nuvem.sj.ifsc.edu.br porta 2224 para fazer a programação
Preparando o servidor
- Instalar a versão 13.0sp1 no notebook.
- Fazer as configurações necessárias para acessar a JTAG. Configuração da USB para programação do FPGA via JTAG
- 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.
FONTE:
- https://superuser.com/questions/1194105/ssh-troubleshooting-remote-port-forwarding-failed-for-listen-port-errors
- https://stackoverflow.com/questions/11818131/warning-remote-port-forwarding-failed-for-listen-port-52698
Servidor jTAG (green_host)
Na maquina onde está o kit FPGA conectado, será instalado um server jTAG.
- Conectar o jtag através de uma senha DLP29006 a ser compartilhada com os alunos.
/opt/altera/13.0sp1/quartus/bin/jtagd /opt/altera/13.0sp1/quartus/bin/jtagconfig --enableremote DLP29006
- Gerar um conjunto de chaves jtagserverkey jtagserverkey.pub para acesso remoto através de chave privada e a publica, na pasta /home/usuario_green
ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair. Enter file in which to save the key (/home/usuario_green/.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 usuario_blue 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 usuario_blue@nuvem.sj.ifsc.edu.br:/home/usuario_blue/.ssh
- Testar se a chave criptográfica está funcionando
ssh -i jtagserverkey usuario_blue@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 usuario_blue@nuvem.sj.ifsc.edu.br -p 2224 -N -f
Na nuvem (blue_host)
- Acessar a nuvem com usuario_blue e senha e verificar se existe a pasta .ssh.
ssh usuario_blue@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 usuario_blue Domain Users 741 May 27 22:38 authorized_keys
- Se OK, fazer logoff e logon com a chave privada.
ssh -i jtagserverkey usuario_blue@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 usuario_red 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).
- Se a conexão estiver OK, selecione a USB-Blaster indicada.
- Se tiver algum problema depois de configurado as JTAG Setting o Connection Status indicará o problema.
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 usuario_red.
- 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.
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 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) 19h48min de 28 de maio de 2020 (-03)