Estou seguindo o guia da Altera para executar Linux na placa DE1-SoC, especificamente a seção 5.3 - Instalando o driver.
As instruções fornecidas no guia são para um host Windows, e estou em um host Linux (atualmente não tenho nenhum host Windows disponível para uso permanente). Estou seguindo as instruções, mas não consigo fazer ssh no dispositivo, e esgotei todos os meus esforços tentando solucionar o problema.
$ uname -r
5.15.0-124-generic
Para formar uma linha de base, na inicialização do host, antes mesmo de conectar a placa via USB:
$ ls -al /lib/modules/"$(uname -r)"/kernel/drivers/usb/serial/usbserial.ko
-rw-r--r-- 1 root root 116161 Sep 27 2024 /lib/modules/5.15.0-124-generic/kernel/drivers/usb/serial/usbserial.ko
$ ls -al /lib/modules/"$(uname -r)"/kernel/drivers/usb/serial/cp210x.ko
-rw-r--r-- 1 root root 79865 Sep 27 2024 /lib/modules/5.15.0-124-generic/kernel/drivers/usb/serial/cp210x.ko
$ lsmod | grep cp210x
$ sudo modprobe usbserial
$ sudo modprobe cp210x
$ lsmod | grep cp210x
cp210x 40960 0
usbserial 57344 1 cp210x
Significa que carreguei o driver com sucesso.
$ dmesg | grep -i usb
...
[ 30.186227] usb 2-3: current rate 16000 is different from the runtime rate 48000
[ 124.301044] usbcore: registered new interface driver usbserial_generic
[ 124.301067] usbserial: USB Serial support registered for generic
[ 128.825043] usbcore: registered new interface driver cp210x
[ 128.825069] usbserial: USB Serial support registered for cp210x
Correspondente às cargas de cima.
$ dmesg | grep -i tty
[ 0.006788] ACPI: SSDT 0x0000000074487000 002357 (v02 ALASKA TbtTypeC 00000000 INTL 20200717)
[ 0.117362] printk: console [tty0] enabled
[ 0.401844] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
$ lsusb
...
$ ls /dev/tty*
...
$ lsusb
traz um monte de dispositivos e $ ls /dev/tty*
lista um monte de terminais. A placa não está aparecendo, é claro, ela está desconectada, pois estou formando a linha de base.
Agora conecto a placa e a ligo.
$ dmesg | grep -i usb
...
[ 128.825069] usbserial: USB Serial support registered for cp210x
[ 244.712211] usb 1-1: new high-speed USB device number 5 using xhci_hcd
[ 244.860515] usb 1-1: New USB device found, idVendor=09fb, idProduct=6810, bcdDevice= 0.01
[ 244.860527] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
idVendor e idProduct estão identificados corretamente.
$ dmesg | grep -i tty[ 0.006788] ACPI: SSDT 0x0000000074487000 002357 (v02 ALASKA TbtTypeC 00000000 INTL 20200717)
[ 0.117362] printk: console [tty0] enabled
[ 0.401844] 00:01: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
Nada mudou.
$ lsusb
...
Bus 001 Device 005: ID 09fb:6810 Altera
Esta linha é adicionada.
$ ls /dev/tty*
Exibe exatamente a mesma lista - nada mudou.
Como mencionado acima, estou sem ideias. Agradeceria qualquer tipo de ajuda, para que eu possa fazer ssh para a placa e começar a comunicação entre o núcleo ARM e o FPGA.
Um PuTTY moderno não é apenas um cliente SSH, ele também pode funcionar como um emulador de terminal de porta serial - e as instruções que você está seguindo exigem que ele seja usado especificamente no modo de porta serial.
Ao contrário do PuTTY, o OpenSSH não tem um modo de acesso de porta serial, então você não pode usá-lo para fazer o equivalente Linux do capítulo 5.3 do guia Altera que você vinculou : é impossível fazer com o OpenSSH. No entanto, você pode usar uma versão Linux do PuTTY, ou qualquer outra ferramenta de emulador de terminal serial disponível no Linux, como
minicom
,picocom
, ou mesmo o old-schoolcu
.Mas primeiro, você precisará usar o driver correto. A maioria dos designs de chip adaptador USB para serial (ou em outras palavras, USB UART) usam protocolos específicos do fornecedor, e
cp210x
o módulo de driver é para designs de chip adaptador USB para serial da Silicon Labs . O documento que você vinculou indica que o chip adaptador (ou um design de adaptador incorporado dentro de um chip maior) usado na placa DE1-SoC é da Future Technology Devices International (= ftdichip.com, ou FTDI para abreviar). O módulo para adaptadores USB para serial feito pela FTDI éftdi_sio
.No entanto, a maioria dos chips adaptadores USB para serial/designs incorporados permitem fácil personalização dos IDs de fornecedor e produto USB. No seu caso, o
lsusb
resultado indica que o adaptador foi personalizado para usar o ID de fornecedor09fb
e um ID de produto da Altera6810
.Se você executar,
sudo modinfo ftdi_sio | grep -i 09fb
obterá uma série de linhas como esta:Ele indica que o
ftdi_sio
driver está programado para reconhecer alguns IDs de produto sob o ID do fornecedor da Altera: av09FB
parte é o ID do fornecedor da Altera, e a próximap????
parte é o ID do produto, respectivamente. No entanto, o ID do produto6810
não está listado lá (ainda?), e então o módulo não será carregado automaticamente ao conectar o DE1-SoC... a menos que demos uma ajudinha ao sistema.No seu host Linux, crie um arquivo chamado
/etc/modprobe.d/DE1-SoC.conf
(ou qualquer nome de arquivo que você quiser, desde que esteja no diretório correto e o nome termine com*.conf
) e escreva nele as seguintes linhas:A primeira linha ensinará o kernel a carregar automaticamente o
ftdi_sio
driver quando ele vir um dispositivo USB com a combinação de ID de fornecedor:produto09fb:6810
, e a segunda linha instruirá oftdi_sio
módulo a assumir o controle de qualquer dispositivo com essas IDs de fornecedor e produto, partindo do princípio de que o protocolo USB para serial do FTDI também deve funcionar com esses dispositivos.Após criar o arquivo, reinicie o sistema ou execute:
e desconecte e reconecte a conexão USB à placa DE1-SoC.
Agora o sistema deve mostrar automaticamente um
/dev/ttyUSB0
dispositivo assim que o DE1-SoC for conectado e ligado. Agora você está pronto para iniciar seu programa emulador de terminal.Se você usa uma versão Linux do PuTTY, as instruções no guia Altera que você vinculou são aplicáveis quase como estão. A única diferença é que, após selecionar
Serial
nosConnection Type
botões de opção, você deve digitar/dev/ttyUSB0
noSerial line
campo, em vez deCOM3
.Se você é mais do tipo de pessoa que usa linha de comando, talvez queira usar
picocom
:Pressionar Control+ Xsairá de
picocom
.Outra alternativa de linha de comando seria
cu
:Para sair
cu
, pause por um segundo e digite~.
(til, depois ponto final).minicom
é algo entre PuTTY epicocom
/cu
em complexidade: um programa em modo texto, mas com uma interface de menu e mais recursos do quepicocom
oucu
. Para instruções sobre como usarminicom
, veja estes links:https://wiki.emacinc.com/wiki/Getting_Started_With_Minicom
https://www.cyberciti.biz/tips/connect-soekris-single-board-computer-using-minicom.html