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キャプチャ:
どんな助け/ポインター/アドバイスがありますか?
答え1
編集:保存先の住所とサイズの両方がゼロであることを確認しました。
まだu-bootでtftpputを試していません。コマンドヘルプを見ると、アドレスとサイズがコマンドラインで提供される必要があることがわかります。一度試してみましょう。あなたのプラットフォームでRAMがどこにあるのかわからないので、実際のコマンドラインの例を提供することはできませんが、次のようにする必要があります。
tftpput 80000000 10
----前の答え、上記が役に立たない場合は、まだ役に立つかもしれません。
私は何が起こっているのかを知るためにtftpサーバーでwiresharkを実行します。
そうでない場合は、デバイスのハブ(スイッチの代わりに)を使用し、コンピュータを同じハブに接続してWiresharkを実行できます。 (最近ではハブを見つけるのが難しいです。「昔」のハブがなければ、このハブは適切ではないかもしれません。)
実行中のtftpサーバーについては言及していません。 Linuxベースですか?一般的に使用されるのはdnsmasqとtftpd-hpaです。私はu-bootと一緒に両方を使用しました。
1つの可能性は、オプションの交渉が間違っていることです。
デバイスのイーサネットドライバが小さいパケットにはうまく機能しますが、大きなパケットには機能しない可能性があります。 (しかし、ほとんどのtftp転送は最終的に512バイトのペイロードをネゴシエートするので、パケットは実際にはそれほど大きくはありません。)
答え2
"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にファイルを送信できます。
答え3
短い答え:次へ追加読むtftpbootフォルダ内のファイルへのアクセス権
詳細な答え:
私も同じ問題があります。
一部のファイルにアクセスしているため、tftpが動作している必要があります。
問題を引き起こすファイルに読み取り権限を追加する必要があり、問題が解決されました。