U-BootでCONFIG_CMD_TFTPPUT
を有効にしましたが、使用できません。
serverip
およびipaddr
環境変数を設定しました。次のように使用すると、タイムアウトになります。
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 ####
ブートファイル名をtemp
に設定すると、次のエラーが発生します。
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...
Wiresharkのキャプチャ:
ヘルプ/ポインタ/提案はありますか?
「wmill」が彼の回答で正しくコメントしたように、ほとんどのtftpサーバーは存在する場合にのみファイルに書き込みます。私の場合も同じ問題でした。u-bootからのtftpputは正常に機能します。tftpd-hpaをインストールして次のように構成しました。ファイルを作成するには、次のように/ etc/default/tftpd-hpaを編集します。
# /etc/default/tftpd-hpa
TFTP_USERNAME="root"
TFTP_DIRECTORY="/home/ankur/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="-c --secure"
そして、/ etc/xinet.d/tftpのtftp設定は次のようになります。
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
}
コマンドを実行したときに上記の構成でtftpput 0x80200000 0x500000 192.168.1.3:uImage
ホストPCにファイルを送信できます。
編集:保存アドレスとサイズが0であることに気づきました。
私はu-bootでtftpputを試していません。コマンドヘルプから、アドレスとサイズをコマンドラインで指定する必要があるようです。私はそれを試してみます。プラットフォームのどこにRAMがあるのかわからないので、有効なコマンドラインの例を示すことはできませんが、次のようになります。
tftpput 80000000 10
----古い答え、上記が役に立たない場合でも役立つ場合があります
私の場合は、tftpサーバーでwiresharkを実行して、何が起こっているかを確認します。
それができない場合は、デバイスのハブ(スイッチではない)を使用し、PCを同じハブに接続してwiresharkを実行できます。 (最近はハブを見つけるのが難しいです。「昔」のハブがない場合、これはおそらく機能しません。)
実行しているtftpサーバーについては言及していません。 Linuxベースですか?よく使用されるのはdnsmasqとtftpd-hpaです。私は両方をu-bootで使用しました。
1つの可能性は、オプションネゴシエーションで問題が発生していることです。
また、デバイスのイーサネットドライバは小さなパケットでは問題ないが、大きなパケットでは機能しない可能性があります。 (ただし、ほとんどのtftp転送は512バイトのペイロードをネゴシエートするため、パケットはそれほど大きくないと思います。)
短い答え: tftpbootフォルダー内のファイルにreadアクセス権を追加します
詳細な回答:
私も同じ問題を抱えていました。
一部のファイルがアクセスされていたため、tftpは確実に機能していました。
問題の原因となっているファイルへの読み取りアクセスを追加する必要があり、修正されました