基於uClinux的Web Server的實現

2021-04-13 22:57:44 字數 3853 閱讀 2962

隨著個人電腦和網際網路的迅速發展,嵌入式系統的開發也變的越來越流行,而基於linux的嵌入式作業系統的開發已經越來越受到人們的關注。uclinux是一款專門用於微型控制領域的嵌入式linux作業系統。它已經被成功地移植到了很多平台上。

這裡主要以uclinux嵌入式作業系統為例來介紹嵌入式作業系統的有關知識,並討論如何在華恆公司的開發套件hhdrez328—r2上基於uclinux實現web server。基於uclinux實現web server的主要技術難點是:如何利用嵌入式系統本身有限的資源對資訊進行http、**tp、pop3、tcp、udp、icmp、ip及ppp等協議的處理,使之變成可以在網際網路上傳輸的ip資料報,以及可以在內建web頁上瀏覽的資料。

嵌入式作業系統uclinux

嵌入式作業系統eos(embedded operating system)負責嵌入系統的全部軟、硬體資源的分配、排程、控制、協調併發活動。它必須體現其所在系統的特徵,能夠通過裝卸某些模組來達到系統所要求的功能。隨著internet技術的發展、資訊家電的普及應用及eos的微型化和專業化,eos開始從單一的弱功能向高專業化的強功能方向發展。

linux是一種非常受歡迎的作業系統,它與unix系統相容,源**開放。它現在廣泛應用於伺服器領域,而更大的影響在於它正逐漸地應用於嵌入式裝置。uclinux正是在這種氛圍下產生的。uclinux是面向無mmu的cpu的嵌入式作業系統。它的核心是由linux 2.0 kernel發展起來的,目前可以支援linux kernel veriosn 2.0.x。由於linux具有很高的可移植性,所以嵌入式linux作業系統可以很容易地提供對特定廠家cpu的支援。該嵌入式linux作業系統使用的是通用linux api介面,即posix標準介面。嵌入式linux作業系統kernel小於512kb, kernel及tools(fs) 小於900kb。

該嵌入式linux作業系統具有強大的網路功能,支援ppp、enternet等多種網路連線方式,包括完整的tcp/ip協議棧及大量的其他協議。目前,有很多的網路協議正在開發中。另外,由於linux的開放性,任何新的網路協議可以很容易地加入到核心中。

該嵌入式linux作業系統支援豐富的外部裝置。目前在核心級已經實現了對多種外部裝置的支援,包括:lcd、觸控螢幕、鍵盤、多路串列埠、modem、irda、pwm音訊輸出等等。同時,它還支援大量的檔案系統:rom-disk、ram-disk、nfs、ext2、fat16/32等。

基於uclinux應用程式設計

總的來說,在uclinux上的開發與標準linux是很類似的。通常有兩種情形:

1.基於乙太網的開發環境,這種開發方式比較適合團隊開發。我們可以把目標機和硬體偵錯程式掛接在區域網上,開發小組可以通過pc機(執行windows作業系統),以超級終端的形式通過fterm登陸到執行linux的主機上。這樣每個小組成員都可以編譯除錯自己的應用程式。在編譯通過後,可以通過fterm以telnet的方式登陸到目標機上,然後通過目標機提供的nfs,mount到 linux主機,然後就可以除錯或執行程式了。採用這種方式比較適合組團開發。

2.如果所設計的程式和硬體的關聯不大。可以先在標準linux上編譯和除錯通過。然後移植到uclinux。將x86上的gcc編譯好的應用程式用交叉編譯工具來編譯。交叉編譯通過後,通過網路(nf**ount)執行交叉編譯成功的應用程式;如果程式不能正常執行,需修改程式重新編譯。檢查的重點放在與uclinux的記憶體特性有關的那部分**。

如果編譯時發現錯誤,那麼很可能存在以下問題:

(1)交叉編譯器或庫檔案的路徑不正確。最徹底的解決辦法是重新裝一次編譯器。

(2)遇到庫不支援的函式。此時需要自己把函式的實現做成另外乙個庫**用程式使用。如果是uclinux本身不支援的呼叫,那麼就需要改寫**了。

(3)c++的一些寫法不太標準,需要修改。

(4)注意fork的問題。uclinux下只有vfork,沒有fork。

開發平台選擇

硬體系統

華恆公司的hhdrez328—r2是基於龍珠ez328的開發套件。龍珠ez328整合處理器具有豐富的介面資源、低廉的**、省電低功耗等等個性鮮明的特點,成為motorola在國內銷售最廣的處理器。因此,hhdrez328—r2開發板成為低端手持裝置、pda、顯示終端等裝置開發商的首選開發平台。其硬體結構如圖1所示。

圖1 硬體結構圖

軟體系統

宿主機作業系統採用red hat linux 6.2,完全安裝。目標機採用uclinux作業系統。

開發模式

1.系統開發模式,如圖2所示。

2.應用程式開發模式

直接在目標板上進行開發,並將宿主機和目標板通過串列埠相連,在宿主pc 機上執行minicom 作為目標板的顯示終端,實現在目標板上的除錯。下面給出這種target 開發模式下的開發流程,如圖3所示。

圖2 系統開發模式圖

圖3 開發流程圖

嵌入式web server的實現

由於要實現的web server是用在嵌入式系統裡,嵌入式系統的容量和處理速度有很大的限制,因此web伺服器的功能也將受到很大的限制。在這裡我們按照web伺服器的原理,實現了伺服器的基本功能。

工作流程和軟體設計

整個系統的工作流程如圖4所示。當資料報通過相應介面傳送到乙太網控制器和mcu後,系統內部的tcp/ip堆疊進行資料報解析和流向判斷,然後進行解包或者打包的動作,以繼續進行後續工作。顯然,最終的處理結果都要通過web server來進行。

圖4 系統工作流程

網路協議棧的實現

通常,所謂的tcp/ip協議是乙個四層協議系統,包括資料鏈路層、網路層(含ip協議)、傳輸層(含tcp協議)和應用層,每一層負責不同的通訊功能。基於tcp/ip協議可以實現多種功能應用,如:http(超文字傳輸控制協議)、telnet(遠端登入)、ftp(檔案傳輸協議)、(下轉第77頁)(上接第76頁)**tp(簡單郵件傳送協議)、snmp(簡單網路管理協議)等。本文主要討論http,也就是web server在應用層的主要構成協議。

1.tcp/ip協議棧

ip包含編址方案,並提供定址功能;tcp則是在不同主機的對等程序之間提供可靠的程序間通訊。與tcp兩端口所連線的實體中,一端為應用程式程序或使用者,另一端則為底層協議,如ip協議。tcp在建立連線過程中採用三向握手機制,以保證資料的可靠性。當通訊建立以後,就可以在此基礎上進行後續的進一步功能擴充套件,開展例如http、ppp等應用層的協議實現。

http(超文字傳輸協議)伺服器可使html(超文字鏈結標示語言)頁面,如web頁等和其它檔案為客戶端所使用。使用者可以根據自己的需要新增構成web server的所有其它動態或靜態元素(無論是否符合html標準)。限於篇幅,具體示例不再列出。http是www上的協議。當使用者要瀏覽伺服器上的乙個網頁時,乙個http 請求就會從使用者的瀏覽器發到http伺服器。伺服器響應這個請求,把指定的網頁傳送回來,使用者才能夠看到網頁。

e2prom的程式設計

不足之處

在我們的開發板上有2片1mb的快閃儲存器,相當於pc機的硬碟,其中又有一部分來裝uclinux嵌入式作業系統,剩下的我們可使用的空間就很小了。這就大大限制了對應用程式功能的開發。在此次開發中,實現了最基本的web伺服器的功能,可以響應瀏覽器的基本請求,將目錄或檔案的內容返回給瀏覽器。

小結

網路技術正在以驚人的速度滲透到社會的每乙個角落,嵌入式產品也不例外。因此,嵌入式web server的研究意義深遠,而基於uclinux的web server的研究與實現更具有一定的實用價值。這裡給出了基於uclinux構架web server的主要原理和方法,至於採用其它平台或方案的實現步驟及過程大同小異,大家可舉一反三。(t111)

本文**

基於uClinux的NPTL執行緒庫移植

2007 12 25 09 56 29 摘要 在linux2.6中,nptl native posix thread library 已取代linuxthreads成為glibc的首選執行緒庫,但是在嵌入式作業系統中普遍使用的基於posix 標準的執行緒庫仍是linuxthreads。分析了nptl...

uclinux移植遇到的問題

但是遇到了一些問題 重起後,導致了出現 檔案的錯誤,不能用我的使用者名稱進行登入,搜尋網路後發現這個問題經常有人遇到,解決方法是登入到 然後執行 命令。或者 home username 我試了這兩種方法,不知道到底是哪個起作用了,再重啟的時候不再出現 dmrc 的錯誤,但是出現了更嚴重的 持續不到 ...

uCOS和uClinux的比較

摘自 uc os和uclinux作業系統,是當前得到廣泛應用的兩種免費且公開原始碼的嵌入式作業系統。uc os適合小型控制系統,具有執行效率高 占用空間小 實時效能優良和可擴充套件性強等特點,最小核心可編譯至2kb。uclinux則是繼承標準linux的優良特性,針對嵌入式處理器的特點設計的一種作業...