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