在前面的視頻中介紹了控制 led 的程序的實(shí)現,需要把編譯好的 led 可執行文件拷貝到文件系統里面,用 make_ext4fs 命令重新制作 system.img 文件系統,然后再燒寫(xiě)到 iTOP- 4412 開(kāi)發(fā)板,然后再運行led 可執行文件。這種方式的缺點(diǎn)是每次修改了應用程序,都需要重新制作文件系統,在重新燒寫(xiě)文件系統,效率很低。 這一章先講解如何通過(guò) TFTP 來(lái)實(shí)現在線(xiàn)傳輸文件,先在虛擬機 Ubuntu 上搭建一個(gè)服務(wù)器,并在虛擬機 Ubuntu 上做客戶(hù)端進(jìn)行測試。 TFTP(Trivial File Transfer Protocol,簡(jiǎn)單文件傳輸協(xié)議),是一個(gè)基于 UDP 協(xié)議實(shí)現的用于在客戶(hù)機和服務(wù)器之間進(jìn)行簡(jiǎn)單文件傳輸的協(xié)議,適合于開(kāi)銷(xiāo)不大、不復雜的應用場(chǎng)合。TFTP 協(xié)議專(zhuān)門(mén)為小文件傳輸而設計,只能從服務(wù)器上獲取文件,或者向服務(wù)器寫(xiě)入文件,不能列出目錄,也不能進(jìn)行認證。 本章配套視頻為:“視頻 08TFTP 服務(wù)器搭建和測試” Linux網(wǎng)絡(luò )部分的學(xué)習方法 這里并不會(huì )費勁的去介紹 TFTP 協(xié)議,那個(gè)意義不大,主要是教大家如何操作,在這個(gè)過(guò)程中進(jìn)步。網(wǎng)絡(luò )協(xié)議非常復雜,完整的網(wǎng)絡(luò )協(xié)議一個(gè)人將資料看一遍,估計這輩子就過(guò)去了。在這個(gè)龐大的網(wǎng)絡(luò )工程中,不同的工程師分別做不同的工作,作為嵌入式 linux 工程師,要做的就是拿別人做好的東西移植,在嵌入式上完善功能。 其實(shí)嵌入式上的所有功能從最開(kāi)始,幾乎都是從 PC 上移植過(guò)來(lái)的,很多代碼以及軟件都是在 PC 機上實(shí)現過(guò),嵌入式 ARM 處理器的發(fā)展相對于滯后(ARM 的流行是 2000 年之后的事情),所以在嵌入式上移植就成了非常重要的一項能力。 19.1 Ubuntu 服務(wù)端的搭建 在虛擬機 Ubuntu 上打開(kāi)終端,如下圖。 ![]() 首先輸入命令“sudo apt-get install xinetd”,安裝 xinetd,如下圖。 ![]() 安裝完 xinetd,如下圖。 ![]() 接下來(lái)輸入命令“sudo apt-get install tftp tftpd”安裝 tftp 和 tftpd,如下圖。 ![]() 安裝完成后,如下圖。 ![]() 然后建立 TFTP 的配置文件,使用命令“vi /etc/xinetd.d/tftp”建立文件,如下圖。 ![]() 寫(xiě)入下面的內容: service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/tftpboot/ disable = no per_source = 11 cps = 100 2 flags= IPv4 } 如下圖。 ![]() 注意:如上圖所示,這個(gè)文件在粘貼內容之后,必須按照上面的格式嚴格對齊。 退出并保存。其中 server_args 設置的/var/tftpboot 目錄是 tftp 服務(wù)器的目錄,TFTP 客戶(hù)端就是從這個(gè)目錄里面獲取服務(wù)器上的文件的。使用命令 mkdir /var/tftpboot 建立 tftp 服務(wù)器的目錄,如下圖。 ![]() 然后設置/var/tftpboot的訪(fǎng)問(wèn)權限為 777,如下圖。 ![]() 輸入:sudo /etc/init.d/xinetd restart 命令重啟xinetd服務(wù),如下圖。 ![]() 服務(wù)器到這一步就搭建好了,后面來(lái)進(jìn)行測試。 服務(wù)器測試 本機測試:在/var/tftpboot下面建立一個(gè)文件test,在里面輸入 hello world,然后保存該文件,如下圖。 ![]() 在啟動(dòng)另外一個(gè)終端,如下圖。 ![]() 然后輸入:tftp 127.0.0.1,如下圖。 ![]() 輸入 get test 獲取 test 文件,如下圖。 ![]() 在上圖看到獲取到 test 的信息 13 字節,然后輸入 q 退出 tftp,如下圖。 ![]() 然后輸入 ls 查看當前目錄下是否有 test 文件了,通過(guò)查看,發(fā)現當前目錄下應經(jīng)有 test 文件了,這就是/var/tftpboot 目錄下的那個(gè) test 文件,如下圖。 ![]() 使用 cat 命令查看一下 test 文件的內容,如下圖。 ![]() 通過(guò)上面的截圖,看到 test 文件里面的內容是 hello world,與/var/tftpboot 目錄的 test 是一樣的,至此的 TFTP 服務(wù)器端的配置和測試就完成了。 ![]() |