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