tftpput no U-Boot: erro: 'Violação de acesso' (2)

2

Eu habilitei CONFIG_CMD_TFTPPUT no U-Boot, mas não consigo usá-lo.

Eu defini as variáveis de ambiente serverip e ipaddr . Quando eu uso da seguinte forma, o tempo limite:

u-boot# tftpput            
link up on port 0, speed 100, full duplex
Using cpsw device
TFTP to server 192.168.1.3; our IP address is 192.168.1.106
Filename 'uImage'.
Save address: 0x0
Save size:    0x0
Saving: ##T ###T ####  

Se eu definir o nome do arquivo de inicialização como temp , ocorrerá o seguinte erro:

u-boot# tftpput          
link up on port 0, speed 100, full duplex
Using cpsw device
TFTP to server 192.168.1.3; our IP address is 192.168.1.106
Filename 'temp'.
Save address: 0x0
Save size:    0x0
Saving: *
TFTP error: 'Access violation' (2)
Not retrying...

Captura de Wireshark:

Alguma ajuda / ponteiros / sugestão?

    
por AnkurTank 02.07.2014 / 11:30

3 respostas

1

Como "wmill" corretamente comentou em sua resposta que a maioria dos servidores tftp irá escrever para o arquivo somente se ele existir. No meu caso também foi o mesmo problema. O tftpput do u-boot funciona bem. Eu instalei o tftpd-hpa e configurei-o da seguinte forma para criar um arquivo. edite / etc / default / tftpd-hpa da seguinte forma,

# /etc/default/tftpd-hpa

TFTP_USERNAME="root"
TFTP_DIRECTORY="/home/ankur/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-c --secure"

E a configuração do tftp em /etc/xinet.d/tftp deve ser a seguinte,

service tftp
{
        protocol = udp port = 69
        socket_type = dgram
        wait = yes
        user = root
        server = /usr/sbin/in.tftpd
        server_args = -c -s /home/ankur/tftpboot
        disable = no
}

Com a configuração acima quando executei o comando
tftpput 0x80200000 0x500000 192.168.1.3:uImage
Eu sou capaz de enviar arquivos para o PC host.

    
por 08.07.2014 / 06:41
2

Edit: Acabei de notar que o seu endereço de salvamento e tamanho são 0.

Eu não tentei o tftpput no u-boot. A partir do comando help it aparece o endereço e o tamanho deve ser fornecido pela linha de comando. Eu tentaria isso. Eu não sei onde a RAM está em sua plataforma, então não posso dar uma linha de comando de exemplo válida, mas deve ser algo como:

tftpput 80000000 10

---- Resposta antiga, ainda pode ser útil se o acima não ajudar

Se fosse eu, eu usaria o wireshark no servidor tftp para ver o que está acontecendo.

Se você não puder fazer isso, poderá usar um hub (não um switch) no dispositivo e conectar um PC no mesmo hub para executar o wireshark. (hubs são difíceis de encontrar nos dias de hoje. Se você não tiver um dos "velhos tempos", provavelmente não funcionará para você.)

Você não menciona o servidor tftp que está executando. É baseado em Linux? Os mais usados são o dnsmasq e o tftpd-hpa. Eu usei ambos com o u-boot.

Uma possibilidade é que algo está errado com a negociação de opções.

Também pode ser possível que o driver Ethernet do seu dispositivo esteja OK para pacotes pequenos, mas não para pacotes maiores. (No entanto, acho que a maioria das transferências tftp acabam negociando cargas de 512 bytes para que os pacotes não sejam tão grandes assim.)

    
por 02.07.2014 / 12:51
0

Resposta curta: Adicione read direitos de acesso ao arquivo na pasta tftpboot

Resposta detalhada:

Eu tive o mesmo problema.

Alguns dos arquivos estavam sendo acessados, então o tftp estava definitivamente funcionando.

Eu tive que adicionar acesso de leitura aos arquivos que estavam causando o problema e eles foram corrigidos

    
por 19.10.2015 / 13:25