最近在用ARM-cotex(AM3517)開發板做一個虹膜識別的程式的最佳化,首先要把opencv2.0移植到開發板的linux系統上,在這裡,我有一個問題,怎麼把檔案從宿主機傳到開發板上。這裡有兩種方式,一個是通過串口傳,一種是通過tftp傳。我宿主機用的是utuntu9.04,沒有裝tftp的伺服器,所以下面就是裝這個伺服器的一些步聚。
參考資料:http://www.linuxdiyf.com/viewarticle.php?id=104034
http://www.myhack58.com/Article/sort099/sort0102/2011/31249.htm
http://xiaoruanjian.iteye.com/blog/1093239
http://www.cnblogs.com/feisky/archive/2010/04/04/1704167.html
ubuntu提供了幾個tftp的軟體:
atftp - advanced TFTP client
atftpd - advanced TFTP server
tftp - Trivial file transfer protocol client
tftpd - Trivial file transfer protocol server
tftp-hpa - HPA's tftp client
tftpd-hpa - HPA's tftp server
我主要按照第一個參考文檔來安裝的。安裝配置如下:
apt-getinstall tftpd (服務端)
apt-get install tftp (用戶端)
apt-get install xinetd
2、建立設定檔
mkdir -p /home/tftp
chmod777 /home/tftp
cd /etc/xinetd.d/
vi tftp
輸入如下內容:
servicetftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/tftp
disable= no
per_source = 11
cps = 100 2
flags = IPv4
}
其中/home/tftp為該伺服器的根目錄。
重新啟動伺服器:/etc/init.d/xinetdrestart
下面進行測試:
在這裡注意下,我用的是VM7.0的虛擬機器,網路聯結方式使用橋接。
我宿主機的ip為192.168.13.177,開發板的ip通過ifconfig eth0 192.168.13.10配置ip為192.168.13.10(與宿主機的ip在同一個網段內)。
在伺服器的根目錄/home/tftp下建一個檔案testfile,然後在宿主機的其它目錄下執行:
tftp127.0.0.1(或者192.168.13.177)
tftp>gettestfile //從tftp的根目錄/home/tftp上下載檔案testfile,下載的檔案放在發當前檔案夾下
tftp>q//退出tftp用戶端
在開發板的系統上已經有tftp的用戶端,通過ping命令確定開發板與宿主機能夠通訊後,再開發板的系統上執行如下命令:
tftp-g -l ./file -r ./testfile 192.168.13.177
-g表示下載(get)檔案-l (locale)表示當地檔案,即下載後該檔案叫啥, -r(remote)表示伺服器端的檔案,後面的IP即是伺服器端的IP。
最好是在/var或者/tmp下執行這個命令,因為這兩個檔案是在記憶體中的,是可寫的,在有些唯讀檔案系統裡,其它目錄是不可寫的。
用put命令即可上傳檔案,不過要有對伺服器的寫入權限才可上傳。
下面是執行的一些,執行圖中的幾個命令後tftp一直是好使的(奇怪的是stop後還是好使的):