[導(dǎo)讀]嵌入式FTP服務(wù)器的設(shè)計與實現(xiàn)
0 引言
隨著嵌入式設(shè)備的不斷發(fā)展,其對通信也提出了越來越高的要求。FTP(File Transfer Protocol)作為internet上最早提供的服務(wù)之一,至今仍然被人們廣泛使用,F(xiàn)TP是實現(xiàn)文件傳輸服務(wù)的最主要的規(guī)范。當(dāng)需要考慮到文件傳輸安全、傳輸質(zhì)量、訪問控制等諸多因素時,FTP服務(wù)器就成了解決文件傳輸問題的關(guān)鍵所在。
然而,有時嵌入式系統(tǒng)的開發(fā)環(huán)境并不支持FTP協(xié)議(如ADSP的集成開發(fā)環(huán)境Visual DSP++),在這種情況下,利用已有的LWIP堆棧中的一些基礎(chǔ)函數(shù)來構(gòu)建一個FTP服務(wù)器,正是本文要詳細(xì)探討的話題。
1 文件傳輸過程
FTP協(xié)議與一般的Intemet協(xié)議不同。Intemet協(xié)議通常采用一個TCP連接來傳送信息(如HTTP協(xié)議);而FTP協(xié)議則采用兩個TCP連接來實現(xiàn)文件的傳輸,其中一個用來為文件傳輸下命令,另一個則實現(xiàn)真正的傳輸過程。圖1所示是FTP文件傳輸?shù)脑韴D。
客戶端想要獲取存放在服務(wù)器上的文件時,應(yīng)先通過一個預(yù)定義的端口號21主動與服務(wù)器建立連接,服務(wù)器收到請求后,通過3次握手,就可在進(jìn)行FTP命令處理的用戶協(xié)議解釋器(PI)和服務(wù)器協(xié)議解釋器之間建立一條TCP連接。該連接始終等待用戶和服務(wù)器之間的通信,并傳輸用戶輸入的所有FTP命令和服務(wù)器的應(yīng)答,即FTP傳輸中的命令連接。
當(dāng)客戶通過交互式用戶界面向FTP服務(wù)器發(fā)出要下載服務(wù)器上某一文件的命令時,該命令即被送到用戶協(xié)議解釋器,并由用戶協(xié)議解釋器進(jìn)行處理。FTP將在服務(wù)器端口號20上打開一個數(shù)據(jù)TCP連接。在數(shù)據(jù)連接上傳送完本次請求需傳送的文件之后,它將關(guān)閉數(shù)據(jù)連接,直到再有文件傳送請求時再重新打開。因此,在FTP中,控制連接在整個用戶會話期間一直打開著,而數(shù)據(jù)連接則是一條臨時連接,當(dāng)且僅當(dāng)執(zhí)行文件傳輸過程時才被創(chuàng)建。
FTP服務(wù)器的內(nèi)部結(jié)構(gòu)可根據(jù)不同的需求,選擇不同的服務(wù)器模式。因為服務(wù)器模式?jīng)Q定著設(shè)計結(jié)構(gòu),而不同的設(shè)計結(jié)構(gòu)又很大程度地影響著FTP服務(wù)器的性能。服務(wù)器的模式主要有循環(huán)服務(wù)器和并發(fā)服務(wù)器。
1.1 循環(huán)服務(wù)器
循環(huán)服務(wù)器只適應(yīng)于最簡單的應(yīng)用協(xié)議,它采用客戶輪流等待的工作方式。但它的設(shè)計、編程、調(diào)試和修改都比較簡單,在其響應(yīng)時間可以滿足需求的條件下(這個時間可以在本地或全局網(wǎng)絡(luò)中進(jìn)行測試),可以采用循環(huán)服務(wù)器模式。
1.2 并發(fā)服務(wù)器
如果構(gòu)建一個響應(yīng)需要大量的I/O操作,且各個請求所需要的處理時間差別非常大,或服務(wù)器在一臺多處理器的計算機上運行,則可引入并發(fā)性方法來縮短響應(yīng)時間。大多數(shù)并發(fā)服務(wù)器使用多個進(jìn)程以及多個線程。其線程可分為兩類:主服務(wù)器線程和從服務(wù)器線程。然而,在有些情況下,一些操作系統(tǒng)創(chuàng)建一個線程的開銷很大,服務(wù)器無法承擔(dān)為每個請求或每個連接都創(chuàng)建一個線程的重負(fù)時,可采用單線程的并發(fā)模式。
2 嵌入式FTP服務(wù)器的實現(xiàn)
圖2所示是以ADSP-BF537為核心的嵌入式系統(tǒng)的硬件組成框圖。圖中,基于Blackfin處理器的ADSP--BF537具有接口豐富,性能優(yōu)良,價格低廉等特點,并具有強大的多媒體數(shù)據(jù)處理能力。ADSP的集成開發(fā)環(huán)境Visual DSP++中嵌入了實時操作系統(tǒng)內(nèi)核VDK,適合于多任務(wù)多線程的嵌入式操作。此外,ADI還提供了一個用于Blackfin系列嵌入式處理器的LwIP協(xié)議棧端口,利用它可以快速將一個獨立的嵌入式應(yīng)用聯(lián)網(wǎng)。圖2中的BF537可通過網(wǎng)絡(luò)芯片LAN8187實現(xiàn)與上位機之間的網(wǎng)絡(luò)通信,同時利用自身的PPI口實現(xiàn)與存儲陣列的通信和管理。[!--empirenews.page--]
由于系統(tǒng)中的服務(wù)器和客戶端在同一個局域網(wǎng)內(nèi),考慮到硬件芯片本身的特點,在文件下載時,與存儲陣列的通信只能通過同一套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ò)回送給用戶。需要指出的是,一開始,在實際的下載過程中,有時文件會出現(xiàn)丟幀現(xiàn)象,而且跟網(wǎng)絡(luò)狀況有關(guān)。經(jīng)過分析其原因是網(wǎng)絡(luò)速度與PPI傳輸相比過慢而導(dǎo)致接收緩存溢出,從而引起下載過程中的數(shù)據(jù)丟失。于是,可采取流控的下載方式。事實上,存儲板并不會一下將所有數(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)品,本文重點介紹了一個以DSP為核心所構(gòu)建的嵌入式FTP服務(wù)器的實現(xiàn)方法。且經(jīng)實際檢驗,運行狀況良好。本方法對其它形式的嵌入式系統(tǒng)的FTP下載功能,也有很強的借鑒意義。
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
Lua RTOS 是一個實時操作系統(tǒng),設(shè)計在嵌入式系統(tǒng)上運行,對 FLASH 和 RAM 內(nèi)存的要求最低。目前 Lua RTOS 可用于 ESP32, ESP8266 和 PIC32MZ 平臺,并可以輕松移植到其他32位...
關(guān)鍵字:
Lua RTOS
操作系統(tǒng)
嵌入式系統(tǒng)
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UATR,是一種串行、異步、全雙工的收發(fā)器。全雙工的UART支持同時雙向通信,是嵌入式系統(tǒng)必不可少的d...
關(guān)鍵字:
異步收發(fā)
傳輸器
嵌入式系統(tǒng)
經(jīng)過幾十年發(fā)展,嵌入式技術(shù)已經(jīng)用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強的屬性,讓很多非嵌入式領(lǐng)域的同學(xué)望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來越多領(lǐng)域,包括了家居,商業(yè),工業(yè),農(nóng)業(yè)等領(lǐng)域,不僅吸引...
關(guān)鍵字:
嵌入式
物聯(lián)網(wǎng)
技術(shù)
隨著IT技術(shù)飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)進(jìn)入了“物聯(lián)網(wǎng)”時代。物聯(lián)網(wǎng)中需要的大量設(shè)備不在依賴人與人之間的交互產(chǎn)生聯(lián)系,更多通過協(xié)議、通信、程序設(shè)計等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計算機的智能但并不以通...
關(guān)鍵字:
嵌入式
物聯(lián)網(wǎng)
計算機
法國高端氫動力汽車制造商Hopium發(fā)布全球首款氫動力轎車 -- Hopium Machina Vision。在2022年巴黎汽車周上,Hopium宣布重新開放Hopium Machina Vision訂購,首批交付車輛...
關(guān)鍵字:
汽車制造
PI
CHINA
MAC
阿布扎比和沙特正在權(quán)衡,是否在瑞信(Credit Suisse)股價低迷之際,對該行的投資銀行和其他業(yè)務(wù)進(jìn)行投資。阿聯(lián)酋和沙特在分別探索通過各自的主權(quán)基金,例如阿布扎比穆巴達(dá)拉發(fā)展公司和沙特公共投資基金(PIF)進(jìn)行潛在...
關(guān)鍵字:
MICHAEL
UI
SE
PI
最近看到APP上,給我推送了很多類似的回答,借此機會,也想著重新審視一下自己的學(xué)習(xí)歷程,以及結(jié)合自身和大牛,分享一些學(xué)習(xí)經(jīng)驗,希望對大家有所啟發(fā)和幫助。
關(guān)鍵字:
APP
嵌入式
C語言
萬物智聯(lián)時代,嵌入式技術(shù)及其應(yīng)用的形態(tài)將更加豐富和多元,同時也將日益呈現(xiàn)深度物理融合、混合架構(gòu)共存、群體智能協(xié)同、網(wǎng)絡(luò)安全攸關(guān)等諸多新的計算特性。顯然,經(jīng)典的嵌入式系統(tǒng)體系結(jié)構(gòu)、軟硬件技術(shù)和開發(fā)方法都已很難應(yīng)對新趨勢下的...
關(guān)鍵字:
嵌入式
物聯(lián)網(wǎng)
計算機
物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,是互聯(lián)網(wǎng)與嵌入式系統(tǒng)發(fā)展到高級階段的融合。通用計算機經(jīng)歷了從智慧平臺到互聯(lián)網(wǎng)的獨立發(fā)展道路;嵌入式系統(tǒng)則經(jīng)歷了智慧物聯(lián)到局域智慧物聯(lián)的獨立發(fā)展道路。
關(guān)鍵字:
嵌入式
物聯(lián)網(wǎng)
計算機
Flash Memory 是一種非易失性的存儲器。在嵌入式系統(tǒng)中通常用于存放系統(tǒng)、應(yīng)用和數(shù)據(jù)等。在 PC 系統(tǒng)中,則主要用在固態(tài)硬盤以及主板 BIOS 中。
關(guān)鍵字:
Flash
存儲器
嵌入式系統(tǒng)
北京2022年10月9日 /美通社/ -- 中國國家藥品監(jiān)督管理局(NMPA)正式宣布批準(zhǔn)了赫賽汀®(通用名:曲妥珠單抗注射液(皮下注射)),聯(lián)合化療用于治療早期和轉(zhuǎn)移性HER2陽性乳腺癌患者。作為全球首個抗HE...
關(guān)鍵字:
靜脈
BSP
PI
ST
今天,小編將在這篇文章中為大家?guī)砉た刂靼宓挠嘘P(guān)報道,通過閱讀這篇文章,大家可以對工控主板具備清晰的認(rèn)識,主要內(nèi)容如下。
關(guān)鍵字:
工控主板
嵌入式
主板
隨著工業(yè)4.0、醫(yī)療電子、智能家居、物流管理和電力控制等快速的發(fā)展和推進(jìn),嵌入式系統(tǒng)利用自身的技術(shù)特點,逐漸成為眾多行業(yè)的標(biāo)配產(chǎn)品。嵌入式系統(tǒng)具有可控制、可編程、成本低等,它在未來的工業(yè)和生活中有著廣闊的應(yīng)用前景。在現(xiàn)在...
關(guān)鍵字:
嵌入式
物聯(lián)網(wǎng)
人工智能
長久來看,嵌入式只會越來越火,隨著人工智能時代的發(fā)展,嵌入式必定又將迎來一次浪潮和技術(shù)的巨大變革。人工智能越是想要表達(dá)智能水平,就越要依靠嵌入式技術(shù),嵌入式技術(shù)將朝著自動化控制和人機交互發(fā)展。嵌入式因其體積小、可靠性高、...
關(guān)鍵字:
嵌入式
物聯(lián)網(wǎng)
人工智能
嵌入式軟件技術(shù)到目前為止己經(jīng)在很多領(lǐng)域起到了中流砥柱的作用,例如在電子消費、移動通訊方面,這種技術(shù)為我國的很多行業(yè)提供了更多的可能性。未來,嵌入式軟件技術(shù)會為人類做出更大的貢獻(xiàn)。伴隨著計算機技術(shù)與電子技術(shù)的成熟發(fā)展,電子...
關(guān)鍵字:
嵌入式
軟件
人工智能
霍尼韋爾數(shù)據(jù)中心管理平臺提供創(chuàng)新的用戶體驗,增加業(yè)務(wù)的彈性, 提高工作效率并提供關(guān)鍵的可持續(xù)性KPI指標(biāo)的可見性 亞特蘭大2022年9月28日 /美通社/ -- 全球樓宇互聯(lián)行業(yè)領(lǐng)導(dǎo)者霍尼韋爾(納斯達(dá)克代碼:HON)...
關(guān)鍵字:
數(shù)據(jù)中心
霍尼韋爾
PI
軟件
香港和上海2022年9月27日 /美通社/ -- 中國平安資產(chǎn)管理(香港)有限公司("平安資產(chǎn)管理(香港)")非常榮幸地宣布,公司在中國保險資產(chǎn)管理業(yè)協(xié)會(IAMAC)舉辦的"IAMAC推介...
關(guān)鍵字:
MAC
COM
SE
PI
esim卡的全名為Embedded-SIM,意思就是嵌入式的SIM卡。esim卡的原理簡單來說,就是將手機傳統(tǒng)插入到手機里的SIM卡直接嵌入進(jìn)設(shè)備芯片中,這樣大家就不必再手動物理插入SIM卡,減少了麻煩的同時也降低了si...
關(guān)鍵字:
嵌入式
esim卡
手機
在熟悉任務(wù)調(diào)度、程序分層和模塊化編程關(guān)于軟件架構(gòu)、分層和模塊設(shè)計后,除了函數(shù)調(diào)用設(shè)計中出現(xiàn)的情況外,還會遇到同層模塊之前如何進(jìn)行消息交互,通常是應(yīng)用層之間。
關(guān)鍵字:
嵌入式
軟件架構(gòu)設(shè)計
一直以來,工控主板都是大家的關(guān)注焦點之一。因此針對大家的興趣點所在,小編將為大家?guī)砉た刂靼宓南嚓P(guān)介紹,詳細(xì)內(nèi)容請看下文。
關(guān)鍵字:
嵌入式
工控主板
主板