Configuração de Serviços de Rede para Inicialização e Desenvolvimento Embarcado

Pré-requisitos e Instalação de Servidores Hospedeiros

Para realizar o desenvolvimento de drivers Linux e inicializar placas embarcadas remotamente, é fundamental configurar corretamente os serviços de rede no computador hospedeiro (Ubuntu). O primeiro passo consiste em preparar o servidor NFS.

Instale os pacotes necessários executando:

sudo apt-get update
sudo apt-get install nfs-kernel-server rpcbind -y

O Next Step é editar o arquivo de exportação do sistema de arquivos. Abra o diretório onde deseja compartilhar os binários:

sudo nano /etc/exports

Adicione uma linha indicando o caminho compartilhado com permissões adequadas:

/opt/embedded/images *(rw,sync,no_root_squash)

Após salvar as alterações, reinicie o serviço NFS utilizando systemd para garantir que a configuração seja aplicada:

sudo systemctl restart nfs-kernel-server

É recomendável validar a configuração verificando se a porta está ativa.

Habilitando Acesso SSH e SFTP

Para transferência segura de arquivos e acesso remoto à máquina hospedeira, o protocolo SSH deve estar ativo. Instale o servidor OpenSSH através do gerenciador de pacotes:

sudo apt-get install openssh-server -y

Isso permite conexões via terminal e clientes SFTP para gerenciamento de arquivos entre a estação de trabalho e outros dispositivos na rede.

Configuração da Rede no Ambiente U-Boot

A funcionalidade de rede no U-Boot é essencial para debug durante a compilação do kernel Linux e carregamento de imagens. Antes de executar comandos, conecte fisicamente o cabo Ethernet na porta ENET2 da placa de desenvolvimento (conexão incorreta neste slot pode impedir o funcionamento).

No console de moniotração do U-Boot, defina as variáveis de ambiente necessárias para estabelecer o link TCP/IP. Utilize um sub-rede distinta da padrão para evitar conflitos:

# Define o IP da placa
setenv ipaddr 192.168.10.100
# Endereço MAC (ajuste conforme hardware)
setenv ethaddr b8:ae:1d:ff:00:00
# Gateway e Máscara
setenv gatewayip 192.168.10.1
setenv netmask 255.255.255.0
# Endereço do servidor de bootstrap (PC Hospedeiro)
setenv serverip 192.168.10.50

# Salva as configurações na memória persistente
saveenv

Teste a conectividade emitindo um comando ping:

ping 192.168.10.50

Se houver falha de ligação, force a subida da interface de rede manualmente:

ifconfig -a
ifconfig eth0 up

Implementação do Serviço TFTP para Transferência Rápida

Embora o NFS sirva para montar sistemas de raiz, o TFTP é frequentemente preferido para enviar apenas kernels ou módulos para a DRAM devido à sua simplicidade e velocidade em redes locais. O protocolo UDP é utilizado pelo cliente TFTP integrado ao U-Boot.

No hospedeiro, instale o daemon e o cliante:

sudo apt-get install tftp-hpa tftpd-hpa xinetd -y

Crie o diretório raiz para o serviço com permissões completas:

mkdir -p /opt/embedded/tftpboot
chmod -R 777 /opt/embedded/tftpboot

Configure o arquivo de definição do serviço dentro de xinetd. Crie ou edite /etc/xinetd.d/tftp:

{
    disable = no
    socket_type = dgram
    wait = yes
    protocol = udp
    server_args = -s /opt/embedded/tftpboot/
    per_source = 11
    cps = 100 2
    flags = IPv4
    user = root
    server = /usr/sbin/in.tftpd
}

Em seguida, ajuste as configurações específicas do servidor HPA eidtando /etc/default/tftpd-hpa:

TFTP_USERNAME="root"
TFTP_DIRECTORY="/opt/embedded/tftpboot"
TFTP_ADDRESS=":69" 
TFTP_OPTIONS="-l -c -s"

Reinicie o serviço para aplicar as mudanças:

sudo systemctl restart tftpd-hpa

Para testar a transferência, copie o binário zImage para o diretório configurado e atribua permissões de leitura:

cp zImage /opt/embedded/tftpboot/
chmod 644 /opt/embedded/tftpboot/zImage

Dentro do U-Boot, utilize o comando de carregamento especificando o endereço de destino em memória e o nome do arquivo no servidor:

tftpboot 80800000 zImage

Tags: NFS uboot tftp linux-embarcado SSH

Publicado em 9-15 05:45