嵌入式FTP服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)
![](http://uphotos.eepw.com.cn/fetch/20130729/151811_2_0.jpg)
由于系統(tǒng)中的服務(wù)器和客戶端在同一個(gè)局域網(wǎng)內(nèi),考慮到硬件芯片本身的特點(diǎn),在文件下載時(shí),與存儲(chǔ)陣列的通信只能通過同一套PPI總線,因此,較好的方式是一次只接受一個(gè)用戶的下載請(qǐng)求,于是可構(gòu)建一個(gè)循環(huán)服務(wù)器來滿足需求。
出于安全性考慮,服務(wù)器通常只接受用戶名/密碼的登錄方式。登錄時(shí)所需的用戶名和密碼存放在存儲(chǔ)板中。每次收到用戶請(qǐng)求信息后,先從存儲(chǔ)板處獲得已有的用戶信息并比較,若與其中任何一個(gè)相符合,則發(fā)送接受請(qǐng)求信息,否則,回送拒絕信息。用戶登陸成功后,服務(wù)器會(huì)響應(yīng)它的各種操作。圖3所示是FTP服務(wù)器的操作流程圖。
![](http://uphotos.eepw.com.cn/fetch/20130729/151811_2_1.jpg)
當(dāng)用戶需要下載文件時(shí),需先獲取文件列表。文件列表存放于存儲(chǔ)板中,可先由服務(wù)器向存儲(chǔ)板發(fā)送回送文件列表的請(qǐng)求,在得到響應(yīng)后。再通過網(wǎng)絡(luò)回送給用戶,由用戶從中選擇所需下載文件的文件名,并發(fā)送給服務(wù)器。服務(wù)器收到文件名后,先判斷其所屬的文件夾,再由此向?qū)?yīng)存儲(chǔ)板發(fā)送下載該文件的命令。存儲(chǔ)板通過PPI向管理板回送信息(在此每包數(shù)據(jù)的大小為64KB),管理板每緩存完十包數(shù)據(jù)后,將通過網(wǎng)絡(luò)回送給用戶。需要指出的是,一開始,在實(shí)際的下載過程中,有時(shí)文件會(huì)出現(xiàn)丟幀現(xiàn)象,而且跟網(wǎng)絡(luò)狀況有關(guān)。經(jīng)過分析其原因是網(wǎng)絡(luò)速度與PPI傳輸相比過慢而導(dǎo)致接收緩存溢出,從而引起下載過程中的數(shù)據(jù)丟失。于是,可采取流控的下載方式。事實(shí)上,存儲(chǔ)板并不會(huì)一下將所有數(shù)據(jù)都連續(xù)地發(fā)送過來,而是每發(fā)送完十包以后,再等待控制板的確認(rèn)包??刂瓢逯挥性趯⑺袛?shù)據(jù)都通過網(wǎng)路發(fā)送完畢后,才給存儲(chǔ)板發(fā)送確認(rèn)包,以等待接收下一次的十包數(shù)據(jù)。以此循環(huán),直至下載完成。其命令處理流程圖如圖4所示。
![](http://uphotos.eepw.com.cn/fetch/20130729/151811_2_2.jpg)
3 結(jié)束語
在嵌入式系統(tǒng)中,依靠通信技術(shù)可以創(chuàng)造出很多十分有用的產(chǎn)品,本文重點(diǎn)介紹了一個(gè)以DSP為核心所構(gòu)建的嵌入式FTP服務(wù)器的實(shí)現(xiàn)方法。且經(jīng)實(shí)際檢驗(yàn),運(yùn)行狀況良好。本方法對(duì)其它形式的嵌入式系統(tǒng)的FTP下載功能,也有很強(qiáng)的借鑒意義。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論