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