


全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
南京航空航天大學(xué)碩士學(xué)位論文 i 摘摘 要要 隨著信息科技的不斷發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)與無(wú)線通信技術(shù)相結(jié)合產(chǎn)生了 無(wú)線局域網(wǎng)技術(shù)。無(wú)線局域網(wǎng)不依賴于傳統(tǒng)纜線,提供以太網(wǎng)或者令牌網(wǎng)絡(luò)的 功能。它彌補(bǔ)了有線局域網(wǎng)的改線工程量大、線路容易損壞、網(wǎng)中的各節(jié)點(diǎn)不 可移動(dòng)等缺點(diǎn),在一些特殊場(chǎng)合有著廣泛的應(yīng)用。 地鐵交通是現(xiàn)代城市基礎(chǔ)設(shè)施建設(shè)的重要組成部分。地鐵運(yùn)行環(huán)境的特殊 性決定了地鐵上的計(jì)算機(jī)在高速運(yùn)行中只能通過無(wú)線網(wǎng)絡(luò)與管理計(jì)算機(jī)進(jìn)行通 信。地鐵無(wú)線通信作為高速運(yùn)行的地鐵列車與運(yùn)營(yíng)管理機(jī)構(gòu)之間唯一的通信手 段,擔(dān)負(fù)著提高運(yùn)營(yíng)效率、保障行車安全的重要作用。本論文的主要工作是設(shè) 計(jì)并實(shí)現(xiàn)了一套用于地鐵無(wú)線通信系統(tǒng)的嵌入式無(wú)線電臺(tái)的軟件平臺(tái)。 本文首先簡(jiǎn)要地介紹了嵌入式 linux 以及無(wú)線電臺(tái)的項(xiàng)目背景, 其次結(jié)合無(wú) 線電臺(tái)中嵌入式系統(tǒng)的具體實(shí)現(xiàn),給出了其硬件體系結(jié)構(gòu),探討了諸如動(dòng)態(tài)內(nèi) 存分配、軟中斷處理等關(guān)鍵問題。再次,本文給出了無(wú)線電臺(tái)系統(tǒng)軟件和應(yīng)用 軟件的實(shí)現(xiàn),主要工作包括:基于嵌入式 linux 的無(wú)線電臺(tái)軟件平臺(tái)的構(gòu)建,基 于 s3c2410x 的 cs8900a 和 bgw200 網(wǎng)絡(luò)驅(qū)動(dòng)程序移植與調(diào)試,基于嵌入式 linux 的用于移動(dòng)節(jié)點(diǎn)在不同無(wú)線網(wǎng)絡(luò)之間無(wú)縫切換的用戶程序的具體實(shí)現(xiàn)。最 后介紹了無(wú)線電臺(tái)的移動(dòng)通信測(cè)試過程和結(jié)果。測(cè)試結(jié)果表明,無(wú)線電臺(tái)可以 滿足地鐵列車在高速移動(dòng)環(huán)境下的通信功能。 關(guān)鍵詞: 嵌入式系統(tǒng), 無(wú)線局域網(wǎng), 嵌入式 linux, s3c2410x, bgw200, cs8900a 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) ii abstract along with the constant development of information technology, computer network technology and wireless communications technology integrate wireless lan technology. wireless lan is not dependent on traditional cables, providing ethernet or token network functions. it makes up for shortcomings of wired lan, such as big workload of rebuilding project, easily damaged lines, not mobile network nodes, and has been widely applied in a number of special occasions. the subway is an important component of the modern urban infrastructure construction. the uniqueness of the subway operating environment determines that the computers on the train communicate with the management computer only through wireless network. metro wireless communication as the only means of communication between the high-speed train and the business management, charges with improving operational efficiency, the important role of safety protection. the work of this thesis is to design and implement a software platform of wireless station for a wireless communication system in metro. firstly, this paper briefly describes embedded linux and the background of the wireless station. secondly, according to the realization of the embedded system on wireless station, it explains the hardware architecture, and explores such as dynamic memory allocation, soft interrupt handling and other key issues. thirdly, this paper shows the realization of system software and application software on wireless station. the work include: the construction of software platform for wireless station based on embedded linux, the transplantation and debugging of cs8900a and bgw200s network driver based on s3c2410x, the realization of application software based on embedded linux for mobile nodes seamless switching between different wireless networks. finally, this paper describes the process and results of wireless stations mobile communications test. test results showed that the wireless station satisfies the high-speed train in the mobile communication environment. key words: embedded system, wireless lan, embedded linux, s3c2410x, bgw200, cs8900a 南京航空航天大學(xué)碩士學(xué)位論文 v 圖表清單圖表清單 圖 2-1 地鐵無(wú)線通信系統(tǒng)運(yùn)行示意圖.10 圖 2-2 無(wú)線電臺(tái)嵌入式系統(tǒng)硬件圖.12 圖 2-3 無(wú)線電臺(tái)系統(tǒng)啟動(dòng)流程圖.13 圖 2-4 bootloader 啟動(dòng)流程圖.14 圖 2-5 無(wú)線電臺(tái)嵌入式 linux 系統(tǒng)體系結(jié)構(gòu)圖 .15 圖 2-6 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)體系結(jié)構(gòu)圖.16 圖 3-1 進(jìn)程虛擬內(nèi)存空間示意圖.19 圖 3-2 cs8900a 數(shù)據(jù)包發(fā)送流程圖.29 圖 3-3 cs8900a 數(shù)據(jù)包接收流程圖.30 圖 3-4 基于 napi 的數(shù)據(jù)包接收流程圖.32 圖 3-5 bgw200 驅(qū)動(dòng)模塊組成結(jié)構(gòu)圖.34 圖 4-1 地鐵無(wú)線網(wǎng)絡(luò)組網(wǎng)示意圖.44 圖 5-1 網(wǎng)內(nèi)移動(dòng)性測(cè)試環(huán)境示意圖.50 圖 5-2 網(wǎng)內(nèi)移動(dòng)流量測(cè)試吞吐量分布圖.51 圖 5-3 網(wǎng)內(nèi)移動(dòng)流量測(cè)試吞吐量時(shí)刻圖.51 圖 5-4 網(wǎng)間移動(dòng)性測(cè)試環(huán)境示意圖.52 圖 5-5 網(wǎng)間移動(dòng)流量測(cè)試吞吐量分布圖.53 圖 5-6 網(wǎng)間移動(dòng)流量測(cè)試吞吐量時(shí)刻圖.53 表 3-1 下半部機(jī)制演化歷程表.25 承諾書 本人鄭重聲明:所呈交的學(xué)位論文,是本人在導(dǎo)師指導(dǎo)下,獨(dú)立 進(jìn)行研究工作所取得的成果。 盡我所知, 除文中已經(jīng)注明引用的內(nèi)容 外, 本學(xué)位論文的研究成果不包含任何他人享有著作權(quán)的內(nèi)容。 對(duì)本 論文所涉及的研究工作做出貢獻(xiàn)的其他個(gè)人和集體, 均已在文中以明 確方式標(biāo)明。 本人授權(quán)南京航空航天大學(xué)可以有權(quán)保留送交論文的復(fù)印件, 允 許論文被查閱和借閱,可以將學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù) 據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或其他復(fù)制手段保存論文。 作者簽名: 日 期: 南京航空航天大學(xué)碩士學(xué)位論文 1 第一章第一章 緒論緒論 1.1 嵌入式系統(tǒng)概述 嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),并且軟硬件可裁剪, 適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī) 系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)以及用戶的 應(yīng)用程序等四個(gè)部分組成,用于實(shí)現(xiàn)對(duì)其他設(shè)備的控制、監(jiān)視或管理等功能。 其中嵌入式操作系統(tǒng)并不是嵌入式系統(tǒng)工作所必須的。在早期的一些嵌入式系 統(tǒng)(例如單片機(jī)系統(tǒng))中,由于系統(tǒng)性能比較差,系統(tǒng)資源不足以應(yīng)付操作系統(tǒng) 的消耗,而一些前后臺(tái)系統(tǒng)也足以滿足應(yīng)用的需要。所以早期的嵌入式系統(tǒng)中 沒有操作系統(tǒng)的概念,程序員編寫嵌入式程序通常直接面對(duì)裸機(jī)及裸設(shè)備。在 這種情況下,通常把嵌入式程序分成兩部分,即前臺(tái)程序和后臺(tái)程序1。前臺(tái)程 序通過中斷來(lái)處理事件,其結(jié)構(gòu)一般為無(wú)限循環(huán);后臺(tái)程序則掌管整個(gè)嵌入式 系統(tǒng)軟、硬件資源的分配、管理以及任務(wù)的調(diào)度,是一個(gè)系統(tǒng)管理調(diào)度程序。 這就是通常所說(shuō)的前后臺(tái)系統(tǒng)。在程序運(yùn)行時(shí),后臺(tái)程序檢查每個(gè)任務(wù)是否具 備運(yùn)行條件,通過一定的調(diào)度算法來(lái)完成相應(yīng)的操作。對(duì)于實(shí)時(shí)性要求特別嚴(yán) 格的操作通常由中斷來(lái)完成,僅在中斷服務(wù)程序中標(biāo)記事件的發(fā)生,不再做任 何工作就退出中斷,經(jīng)過后臺(tái)程序的調(diào)度,轉(zhuǎn)由前臺(tái)程序完成事件的處理,這 樣就不會(huì)造成在中斷服務(wù)程序中處理費(fèi)時(shí)的事件而影響后續(xù)和其它中斷。由于 這類系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,幾乎不需要 ram/rom 的額外開銷,因而在簡(jiǎn)單的嵌入式 應(yīng)用中被廣泛使用。 隨著計(jì)算機(jī)硬件技術(shù)的不斷發(fā)展,嵌入式系統(tǒng)硬件處理能力逐漸增強(qiáng),嵌 入式操作系統(tǒng)在目前的嵌入式應(yīng)用中用得越來(lái)越廣泛,尤其在功能復(fù)雜、系統(tǒng) 龐大的應(yīng)用中顯得愈來(lái)愈重要。首先,嵌入式實(shí)時(shí)操作系統(tǒng)提高了系統(tǒng)的可靠 性。在控制系統(tǒng)中,出于安全方面的考慮,要求系統(tǒng)不能崩潰,而且還要有自 愈能力。長(zhǎng)期以來(lái)的前后臺(tái)系統(tǒng)軟件設(shè)計(jì)在遇到強(qiáng)干擾時(shí),使得運(yùn)行的程序產(chǎn) 生異常、錯(cuò)誤,造成系統(tǒng)崩潰。而實(shí)時(shí)操作系統(tǒng)管理的系統(tǒng),這種干擾可能只 是引起若干進(jìn)程中的一個(gè)被破壞,可以通過系統(tǒng)運(yùn)行的系統(tǒng)監(jiān)控進(jìn)程對(duì)其進(jìn)行 修復(fù)。通常情況下,這個(gè)系統(tǒng)監(jiān)視進(jìn)程用來(lái)監(jiān)視各進(jìn)程運(yùn)行狀況,遇到異常情 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 2 況時(shí)采取一些利于系統(tǒng)穩(wěn)定可靠的措施,如把有問題的任務(wù)清除掉。其次,提 高了開發(fā)效率,縮短了開發(fā)周期。在嵌入式實(shí)時(shí)操作系統(tǒng)環(huán)境下,開發(fā)一個(gè)復(fù) 雜的應(yīng)用程序,通??梢詫⒄麄€(gè)程序分解為多個(gè)任務(wù)模塊。每個(gè)任務(wù)模塊的調(diào) 試、 修改幾乎不影響其他模塊。 再次, 嵌入式實(shí)時(shí)操作系統(tǒng)充分發(fā)揮了 32 位 cpu 的多任務(wù)潛力。32 位 cpu 比 8、16 位 cpu 快,另外它本來(lái)是為運(yùn)行多用戶、 多任務(wù)操作系統(tǒng)而設(shè)計(jì)的,特別適于運(yùn)行多任務(wù)實(shí)時(shí)系統(tǒng)。32 位 cpu 采用利于 提高系統(tǒng)可靠性和穩(wěn)定性的設(shè)計(jì),使其更容易做到不崩潰。例如,cpu 運(yùn)行狀 態(tài)分為系統(tǒng)態(tài)和用戶態(tài)。將系統(tǒng)堆棧和用戶堆棧分開,以及實(shí)時(shí)地給出 cpu 的 運(yùn)行狀態(tài)等,允許用戶在系統(tǒng)設(shè)計(jì)中從硬件和軟件兩方面對(duì)實(shí)時(shí)內(nèi)核的運(yùn)行實(shí) 施保護(hù)。如果還是采用以前的前后臺(tái)方式,則無(wú)法發(fā)揮 32 位 cpu 的優(yōu)勢(shì)。從某 種意義上說(shuō),沒有操作系統(tǒng)的計(jì)算機(jī)(裸機(jī))是沒有用的。 電子數(shù)字計(jì)算機(jī)誕生于 1946 年,在其后漫長(zhǎng)的歷史進(jìn)程中,計(jì)算機(jī)始終是 供養(yǎng)在特殊的機(jī)房中,實(shí)現(xiàn)數(shù)值計(jì)算的大型昂貴設(shè)備。直到 20 世紀(jì) 70 年代, 微處理器的出現(xiàn),計(jì)算機(jī)才出現(xiàn)了歷史性的變化。以微處理器為核心的微型計(jì) 算機(jī)以其小型、價(jià)廉、高可靠性特點(diǎn),迅速走出機(jī)房;基于高速數(shù)值計(jì)算能力 的微型機(jī),表現(xiàn)出的智能化水平引起了控制專業(yè)人士的興趣,要求將微型機(jī)嵌 入到一個(gè)對(duì)象體系中,實(shí)現(xiàn)對(duì)象體系的智能化控制。例如,將微型計(jì)算機(jī)經(jīng)電 氣加固、機(jī)械加固,并配置各種外圍接口電路,安裝到大型艦船中構(gòu)成自動(dòng)駕 駛儀或輪機(jī)狀態(tài)監(jiān)測(cè)系統(tǒng)。這樣一來(lái),計(jì)算機(jī)便失去了原來(lái)的形態(tài)與通用的計(jì) 算機(jī)功能。為了區(qū)別于原有的通用計(jì)算機(jī)系統(tǒng),把嵌入到對(duì)象體系中,實(shí)現(xiàn)對(duì) 象體系智能化控制的計(jì)算機(jī),稱作嵌入式計(jì)算機(jī)系統(tǒng)。由于嵌入式計(jì)算機(jī)系統(tǒng) 要嵌入到對(duì)象體系中,實(shí)現(xiàn)的是對(duì)象的智能化控制,因此,它有著與通用計(jì)算 機(jī)系統(tǒng)完全不同的技術(shù)要求與技術(shù)發(fā)展方向。 現(xiàn)在嵌入式系統(tǒng)帶來(lái)的全球工業(yè)年產(chǎn)值已經(jīng)超過了 1 萬(wàn)億美元,1997 年來(lái) 自美國(guó)嵌入式系統(tǒng)大會(huì)(embedded system conference)的報(bào)告指出,未來(lái) 5 年僅 基于嵌入式計(jì)算機(jī)系統(tǒng)的全數(shù)字電視產(chǎn)品,就將在美國(guó)產(chǎn)生一個(gè)每年 1500 億美 元的新市場(chǎng)2。嵌入式產(chǎn)品應(yīng)用的需求日益增長(zhǎng),2003 年我國(guó)嵌入式系統(tǒng)應(yīng)用 產(chǎn)品經(jīng)濟(jì)總量達(dá) 1000 億元,其中嵌入式處理器芯片約為 100 億。 南京航空航天大學(xué)碩士學(xué)位論文 3 1.2 常用嵌入式操作系統(tǒng) 1cos cos 是一個(gè)微型的實(shí)時(shí)開源操作系統(tǒng),包括了一個(gè)操作系統(tǒng)最基本的一 些特性,如任務(wù)調(diào)度、任務(wù)通信、內(nèi)存管理、中斷管理等。自從 92 年發(fā)布以來(lái), 在世界各地都獲得了廣泛的應(yīng)用。它是一種專門為嵌入式設(shè)備設(shè)計(jì)的基于優(yōu)先 級(jí)的可搶先的硬實(shí)時(shí)內(nèi)核, 目前已經(jīng)被移植到 40 多種不同結(jié)構(gòu)的 cpu 上, 運(yùn)行 在從 8 位到 64 位的各種系統(tǒng)之上。該系統(tǒng)自從 2.51 版本之后,就通過了美國(guó) faa 認(rèn)證,可以運(yùn)行在諸如航天器等對(duì)安全要求極為苛刻的系統(tǒng)之上。 2嵌入式 linux linux 是一套免費(fèi)使用和自由傳播的類 unix 操作系統(tǒng),開始于芬蘭赫爾辛 基大學(xué)的 linus torvalds 編寫的一個(gè)類 unix 操作系統(tǒng)內(nèi)核。它以高效性和靈活 性著稱,具有多任務(wù)、多用戶的能力。在 linux 進(jìn)入嵌入式系統(tǒng)之后,由于其開 放源代碼、免費(fèi)使用、運(yùn)行穩(wěn)定和功能強(qiáng)大等原因占領(lǐng)了大批市場(chǎng)份額。而且 在嵌入式 linux 開源社區(qū)中有大量的免費(fèi)解決方案和他人成功實(shí)踐經(jīng)驗(yàn)可以共 享,這也大大促進(jìn)了 linux 在實(shí)際嵌入式系統(tǒng)開發(fā)中的使用。 3wince wince(windows ce)是微軟公司為各種嵌入式系統(tǒng)和產(chǎn)品設(shè)計(jì)的一種緊密 的、高效的、可升級(jí)的操作系統(tǒng)。初始設(shè)備開發(fā)商(oem)或者嵌入式系統(tǒng)開發(fā)商 可以從適合目標(biāo)平臺(tái)的操作系統(tǒng)中自行選擇系統(tǒng)模塊和組件。選擇的系統(tǒng)模塊 和組件的多少?zèng)Q定了所需內(nèi)存的大小。它可以工作在 12 種不同的處理器體系結(jié) 構(gòu)、180 余種 cpu 上;同時(shí),wince 是一個(gè)實(shí)時(shí)操作系統(tǒng),可以滿足應(yīng)用程序 所需要的實(shí)時(shí)性要求。 4vxworks vxworks 操作系統(tǒng)是美國(guó)風(fēng)河(windriver)公司于 1983 年設(shè)計(jì)開發(fā)的一種嵌 入式實(shí)時(shí)操作系統(tǒng)(rtos),是嵌入式開發(fā)環(huán)境的關(guān)鍵組成部分。良好的持續(xù)發(fā) 展能力、高性能的內(nèi)核以及友好的用戶開發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域 占據(jù)一席之地。它以其良好的可靠性和卓越的實(shí)時(shí)性被廣泛地應(yīng)用在通信、軍 事、航空、航天等高精尖技術(shù)及實(shí)時(shí)性要求極高的領(lǐng)域中。 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 4 1.3 基于linux的嵌入式操作系統(tǒng) 1linux 操作系統(tǒng)的起源和發(fā)展 linux 是一個(gè)誕生于網(wǎng)絡(luò)、成長(zhǎng)于網(wǎng)絡(luò)且成熟于網(wǎng)絡(luò)的操作系統(tǒng)。1991 年, 芬蘭大學(xué)生 linus torvalds 萌發(fā)了開發(fā)一個(gè)自由的 unix 操作系統(tǒng)的想法,linus 將自已的作品 linux 通過 internet 發(fā)布。從此一大批電腦黑客、編程人員加入到 開發(fā)過程中來(lái),linux 逐漸成長(zhǎng)起來(lái)。linux 一開始是要求所有的源碼必須公開, 并且任何人均不得從 linux 交易中獲利。然而這種純粹的自由軟件的理想對(duì)于 linux 的普及和發(fā)展是不利的,于是 linux 開始轉(zhuǎn)向 gpl(gnu general public license),成為 gnu(gnus not unix)陣營(yíng)中的主要一員?,F(xiàn)在,linux 憑借優(yōu) 秀的設(shè)計(jì),不凡的性能,加上 ibm、intel、ca、core、oracle 等國(guó)際知 名企業(yè)的大力支持,市場(chǎng)份額逐步擴(kuò)大,逐漸成為主流操作系統(tǒng)之一。 2嵌入式 linux 的主要特點(diǎn) 嵌入式 linux 幾乎繼承了桌面 linux 的所有特點(diǎn), 為嵌入式應(yīng)用程序提供了 強(qiáng)大的系統(tǒng)調(diào)用功能支持。 1) 符合 posix 1003.1 標(biāo)準(zhǔn) posix 1003.1 標(biāo)準(zhǔn)定義了一個(gè)最小的 unix 操作系統(tǒng)接口,任何操作系統(tǒng)只 有符合這一標(biāo)準(zhǔn),才有可能運(yùn)行 unix 程序。linux 不是 unix,它是按照 posix 1003.1 標(biāo)準(zhǔn)對(duì) unix 的重新實(shí)現(xiàn)。所以 linux 是一個(gè)完善的 unix 程序開發(fā)系統(tǒng), 可以兼容通用的 unix 應(yīng)用程序。 2) 支持多用戶訪問和多任務(wù)編程 嵌入式 linux 是一個(gè)多用戶操作系統(tǒng), 它允許多個(gè)用戶同時(shí)訪問系統(tǒng)而不會(huì) 造成用戶之間的相互干擾。另外,嵌入式 linux 還支持真正的多用戶編程,一個(gè) 用戶可以創(chuàng)建多個(gè)進(jìn)程,并使各個(gè)進(jìn)程協(xié)同工作來(lái)完成用戶的需求。 3) 采用頁(yè)式存儲(chǔ)管理 頁(yè)式存儲(chǔ)管理使嵌入式 linux 能更有效地利用物理存儲(chǔ)空間, 頁(yè)面的換入換 出為用戶提供了更大的存儲(chǔ)空間。linux 弱化了段式存儲(chǔ)管理,采用三級(jí)頁(yè)表機(jī) 制管理內(nèi)存。而且根據(jù)不同的體系結(jié)構(gòu) linux 有自己的優(yōu)化方案。比如 linux 在 x86 體系結(jié)構(gòu)上取消了第二級(jí)的頁(yè)表映射。 4) 支持動(dòng)態(tài)鏈接 用戶程序的執(zhí)行往往離不開標(biāo)準(zhǔn)庫(kù)的支持,一般的系統(tǒng)往往采用靜態(tài)鏈接 南京航空航天大學(xué)碩士學(xué)位論文 5 方式,即在裝配階段就將用戶程序和標(biāo)準(zhǔn)庫(kù)鏈接好,這樣,當(dāng)多個(gè)進(jìn)程運(yùn)行時(shí), 可能會(huì)出現(xiàn)庫(kù)代碼在內(nèi)存中有多個(gè)副本而浪費(fèi)存儲(chǔ)空間的情況。嵌入式 linux 支持動(dòng)態(tài)鏈接方式,運(yùn)行時(shí)才進(jìn)行庫(kù)鏈接,如果所需要的庫(kù)己被其它進(jìn)程裝入 內(nèi)存,則不必再裝入,否則才從硬盤中將庫(kù)調(diào)入。這樣能保證內(nèi)存中的庫(kù)程序 代碼是唯一的。 5) 支持多種文件系統(tǒng) 嵌入式 linux 能支持多種文件系統(tǒng)。目前支持的文件系統(tǒng)有:ext2、ext、 hpfs、msdos、umsdos、proc、nfs、minix、smb、ufs 和 vfat 等。 6) 支持 tcp/ip、slip 和 ppp 在嵌入式 linux 中,用戶可以使用所有的網(wǎng)絡(luò)服務(wù),如網(wǎng)絡(luò)文件系統(tǒng)、遠(yuǎn)程 登錄等。slip 和 ppp 能支持串行線上的 tcp/ip 協(xié)議的使用。 除了上述基本特征外,嵌入式 linux 還具有其獨(dú)有的特色: 1) 嵌入式 linux 上的大部分程序是自由軟件。這些軟件是在自由軟件基金 會(huì)的 gnu 計(jì)劃下開發(fā)的。盡管如此,來(lái)自世界各地的黑客、程序員,甚至商業(yè) 公司也加入了 linux 軟件開發(fā)的行列。 2) gnu 軟件的支持。 linux 支持大部分 gnu 計(jì)劃下的自由軟件, 包括 gnu c 和 gcc 編譯器、gawk、groff 和其他軟件。 3) 嵌入式 linux 支持多種硬件平臺(tái)。支持市場(chǎng)上絕大多數(shù)的處理器,很多 生產(chǎn)商都向用戶提供支持它們處理器的 linux 版本。 嵌入式 linux 系統(tǒng)網(wǎng)絡(luò)功能 強(qiáng)大。 不僅僅因?yàn)?linux 系統(tǒng)內(nèi)核中緊密地集成了網(wǎng)絡(luò)功能和有大量的網(wǎng)絡(luò)應(yīng)用 程序,更因?yàn)榍度胧?linux 系統(tǒng)在超強(qiáng)網(wǎng)絡(luò)需求下表現(xiàn)出的令人驚奇的健壯性。 由于嵌入式 linux 具有的以上特點(diǎn),適合我們有針對(duì)性的進(jìn)行裁剪和重構(gòu),使之 具有微小內(nèi)核、強(qiáng)實(shí)時(shí)性等特點(diǎn)。2 1.4 嵌入式linux操作系統(tǒng)分析 1.4.1 嵌入式 linux 內(nèi)核特點(diǎn) 嵌入式 linux 是一個(gè)類 unix 系統(tǒng),它具有很多 unix 操作系統(tǒng)的特點(diǎn): 與它早期模仿的微內(nèi)核操作系統(tǒng) minix 不同, 嵌入式 linux 采用的是宏內(nèi)核 結(jié)構(gòu)。傳統(tǒng)意義下的操作系統(tǒng),其內(nèi)核應(yīng)具備多方面的功能,諸如進(jìn)程管理、 進(jìn)程通信、設(shè)備驅(qū)動(dòng)和文件系統(tǒng)等等。內(nèi)核中提供的這些服務(wù)與使用這些服務(wù) 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 6 的進(jìn)程之間實(shí)際上就形成一種典型的“client/server”的關(guān)系。但是,這些服務(wù)提 供者并不一定要在內(nèi)核中實(shí)現(xiàn),它們也可以被設(shè)計(jì)并實(shí)現(xiàn)在某些“服務(wù)進(jìn)程” 中,其中必須要留在內(nèi)核中的成分其實(shí)只有進(jìn)程間通信。如果把這些服務(wù)提供 者從內(nèi)核轉(zhuǎn)移到進(jìn)程的層次上,那么內(nèi)核將會(huì)被大大簡(jiǎn)化。而各個(gè)服務(wù)進(jìn)程則 可以被單獨(dú)的設(shè)計(jì)和實(shí)現(xiàn)。微內(nèi)核結(jié)構(gòu)雖然可以簡(jiǎn)化內(nèi)核,但將這些服務(wù)都放 在進(jìn)程的層次上,在通過進(jìn)程間通信提供服務(wù),會(huì)增加系統(tǒng)的開銷,降低系統(tǒng) 的執(zhí)行效率。 嵌入式 linux 作為一個(gè)通用的系統(tǒng)由于所需的服務(wù)面廣而量大, 所以在其內(nèi) 核中實(shí)現(xiàn)了大量的內(nèi)核服務(wù)函數(shù), 它們和各種驅(qū)動(dòng)函數(shù)一起被 linux 的系統(tǒng)調(diào)用 進(jìn)行封裝, 再提供給用戶進(jìn)程使用。 linux 的系統(tǒng)調(diào)用是通過中斷指令“int 0 x80” 實(shí)現(xiàn)的。當(dāng)用戶進(jìn)程使用系統(tǒng)調(diào)用時(shí),進(jìn)程轉(zhuǎn)而執(zhí)行系統(tǒng)調(diào)用所封裝的內(nèi)核服 務(wù)程序,進(jìn)程運(yùn)行狀態(tài)也由用戶態(tài)改為內(nèi)核態(tài)。當(dāng) cpu 執(zhí)行到中斷指令“int 0 x80”時(shí),硬件就做出一系列響應(yīng),其動(dòng)作與上述的中斷響應(yīng)相同。cpu 穿過 陷阱門3,從用戶空間進(jìn)入系統(tǒng)空間。相應(yīng)地,進(jìn)程的上下文從用戶堆棧切換到 系統(tǒng)堆棧。 接著運(yùn)行內(nèi)核函數(shù) system_call()。 首先, 進(jìn)一步保存各寄存器的內(nèi)容; 接 著 調(diào) 用 syscall_trace() , 以 系 統(tǒng) 調(diào) 用 號(hào) 為 下 標(biāo) 檢 索 系 統(tǒng) 調(diào) 用 入 口 表 sys_call_table,從中找到相應(yīng)的函數(shù);然后轉(zhuǎn)去執(zhí)行該函數(shù),完成具體的服務(wù)。 每個(gè)系統(tǒng)調(diào)用都有惟一的號(hào)碼,稱作系統(tǒng)調(diào)用號(hào)。所有的系統(tǒng)調(diào)用都集中在系 統(tǒng)調(diào)用入口表中統(tǒng)一管理。系統(tǒng)調(diào)用入口表是一個(gè)函數(shù)指針數(shù)組,以系統(tǒng)調(diào)用 號(hào)為下標(biāo)在該數(shù)組中找到相應(yīng)的函數(shù)指針,進(jìn)而就能確定用戶使用的是哪一個(gè) 系統(tǒng)調(diào)用。不同系統(tǒng)中系統(tǒng)調(diào)用的個(gè)數(shù)是不同的,目前 linux 系統(tǒng)中共定義了 221 個(gè)系統(tǒng)調(diào)用。另外,系統(tǒng)調(diào)用表中還留有一些余項(xiàng),可供用戶自行添加。 傳統(tǒng)的 unix 內(nèi)核是“全封閉”的。如果要往內(nèi)核中添加一個(gè)設(shè)備驅(qū)動(dòng),則 需要編寫相應(yīng)的設(shè)備驅(qū)動(dòng)程序,并變動(dòng)內(nèi)核源代碼中的某些數(shù)據(jù)結(jié)構(gòu),再重新 編譯內(nèi)核,并重新引導(dǎo)系統(tǒng)。這樣做可以保證系統(tǒng)的安全性,畢竟一個(gè)運(yùn)行在 系統(tǒng)內(nèi)核態(tài)的驅(qū)動(dòng)程序如果出現(xiàn)錯(cuò)誤的話將會(huì)導(dǎo)致整個(gè)操作系統(tǒng)的崩潰。但這 也妨礙了用戶方便的添加和使用各種外部設(shè)備。 而 linux 既允許把設(shè)備驅(qū)動(dòng)程序 在編譯時(shí)靜態(tài)地鏈接在內(nèi)核中,也允許在內(nèi)核啟動(dòng)完成后使用 insmod 命令動(dòng)態(tài) 地加載驅(qū)動(dòng)程序模塊,還允許在運(yùn)行狀態(tài)下當(dāng)需要用到某一模塊時(shí)由系統(tǒng)自動(dòng) 安裝。這樣的模塊仍然在內(nèi)核中運(yùn)行,而不是像在微內(nèi)核中那樣作為單獨(dú)的進(jìn) 程運(yùn)行,所以運(yùn)行效率得到了保證。隨著 linux 功能愈加強(qiáng)大,所需要支持的驅(qū) 南京航空航天大學(xué)碩士學(xué)位論文 7 動(dòng)程序越來(lái)越多,linux 內(nèi)核機(jī)構(gòu)也越來(lái)越復(fù)雜。為了使內(nèi)核的功能可裁減,驅(qū) 動(dòng)程序的可動(dòng)態(tài)加載,linux 采用了將內(nèi)核結(jié)構(gòu)模塊化的方法。模塊(module)是 經(jīng)過編譯但尚未鏈接的目標(biāo)代碼(.o)文件。它可以在 linux 內(nèi)核編譯時(shí)被選擇進(jìn) 而編譯到內(nèi)核鏡像中,也可以在系統(tǒng)運(yùn)行時(shí)動(dòng)態(tài)地插入到內(nèi)核中。 1.4.2 嵌入式 linux 內(nèi)核源代碼結(jié)構(gòu) linux 內(nèi)核源代碼版本使用數(shù)字來(lái)表示。linux 內(nèi)核分為穩(wěn)定版本和試驗(yàn)版 本。任何偶數(shù)內(nèi)核(如 2.4.18)是一個(gè)穩(wěn)定的版本,而奇數(shù)內(nèi)核(如 2.1.42)是正在 發(fā)展中的試驗(yàn)內(nèi)核。linux 內(nèi)核源代碼的組成如下: arch 這個(gè)子目錄包含了此核心源代碼所支持的硬件體系結(jié)構(gòu)相關(guān)的核心代 碼。其中的每一個(gè)子目錄都對(duì)應(yīng)著一種 linux 所支持的體系結(jié)構(gòu),例如 i386 和 arm。 include 這個(gè)目錄包括了核心的大多數(shù) include 文件。 另外對(duì)于每種支持的體 系結(jié)構(gòu)分別有一個(gè)子目錄。 init 此目錄包含核心啟動(dòng)代碼。 mm 此目錄包含了所有的內(nèi)存管理代碼。與具體硬件體系結(jié)構(gòu)相關(guān)的內(nèi)存 管理代碼位于 arch/*/mm 目錄下,如對(duì)應(yīng)于 x86 的就是 arch/i386/mm/fault.c。 drivers 系統(tǒng)中所有的設(shè)備驅(qū)動(dòng)都位于此目錄中。它又進(jìn)一步劃分成幾類設(shè) 備驅(qū)動(dòng),每一種也有對(duì)應(yīng)的子目錄,如聲卡的驅(qū)動(dòng)對(duì)應(yīng)于 drivers/sound。 ipc 此目錄包含了核心的進(jìn)程間通信代碼。 modules 此目錄包含已建好可動(dòng)態(tài)加載的模塊。 fs linux 支持的文件系統(tǒng)代碼。不同的文件系統(tǒng)有不同的子目錄對(duì)應(yīng),如 ext2 文件系統(tǒng)對(duì)應(yīng)的就是 ext2 子目錄。 kernel 主要核心代碼。 同時(shí)與處理器結(jié)構(gòu)相關(guān)代碼都放在 arch/*/kernel 目錄 下。 net 核心的網(wǎng)絡(luò)部分代碼。里面的每個(gè)子目錄對(duì)應(yīng)于網(wǎng)絡(luò)的一個(gè)方面。 lib 此目錄包含了核心的庫(kù)代碼。 與處理器結(jié)構(gòu)相關(guān)庫(kù)代碼被放在 arch/*/lib/ 目錄下。 scripts 此目錄包含用于配置核心的腳本文件。 documentation 此目錄是一些文檔,起參考作用。 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 8 1.5 linux 設(shè)備驅(qū)動(dòng)程序簡(jiǎn)介 操作系統(tǒng)的作用之一就是向用戶掩蓋系統(tǒng)硬件的特殊性。linux 管理物理設(shè) 備的代碼不是放在每一個(gè)應(yīng)用程序里面,而是放在 linux 核心。這些處理或者管 理軟件叫做設(shè)備驅(qū)動(dòng)程序。linux 支持三類硬件設(shè)備驅(qū)動(dòng)類型:字符設(shè)備、塊設(shè) 備和網(wǎng)絡(luò)設(shè)備。字符設(shè)備直接讀寫,沒有緩沖區(qū),例如系統(tǒng)的串行端口。塊設(shè) 備只能按照一個(gè)塊(一般是 512 字節(jié)或者 1024 字節(jié))的倍數(shù)進(jìn)行讀寫。塊設(shè)備 通過緩沖區(qū)訪問,可以隨機(jī)存取,就是說(shuō),任何塊都可以讀寫而不必考慮它在 設(shè)備的什么地方。 linux 所有種類的設(shè)備驅(qū)動(dòng)程序都有以下一些特性: kernel code設(shè)備驅(qū)動(dòng)程序和核心中的其它代碼相似,是內(nèi)核的一部分, 如果發(fā)生錯(cuò)誤,可能嚴(yán)重?fù)p害系統(tǒng)。一個(gè)寫錯(cuò)的驅(qū)動(dòng)程序甚至可能摧毀系統(tǒng), 可能破壞文件系統(tǒng),丟失數(shù)據(jù)。 kernel interface設(shè)備驅(qū)動(dòng)程序必須向 linux 核心或者它所在的子系統(tǒng)提 供一個(gè)標(biāo)準(zhǔn)的接口。 例如, 終端驅(qū)動(dòng)程序向 linux 核心提供了一個(gè)文件 i/o 接口, 而 scsi 設(shè)備驅(qū)動(dòng)程序向 scsi 子系統(tǒng)提供了 scsi 設(shè)備接口, 接著向核心提供了 文件 i/o 和 buffer cache 的接口。 kernel mechanisms和services設(shè)備驅(qū)動(dòng)程序使用標(biāo)準(zhǔn)的核心服務(wù)例如內(nèi) 存分配、中斷轉(zhuǎn)發(fā)和等待列隊(duì)來(lái)完成工作。 loadble linux大多數(shù)的設(shè)備驅(qū)動(dòng)程序可以在需要的時(shí)候作為核心模塊 加載,在不需要的時(shí)候卸載。這使得核心對(duì)于系統(tǒng)資源非常具有適應(yīng)性和效率。 configurable linux設(shè)備驅(qū)動(dòng)程序可以建立在核心。 哪些設(shè)備建立到核心 在核心編譯的時(shí)候是可以配置的。 dynamic在系統(tǒng)啟動(dòng),每一個(gè)設(shè)備啟動(dòng)程序初始化的時(shí)候它查找它管理 的硬件設(shè)備。如果一個(gè)設(shè)備驅(qū)動(dòng)程序所控制的設(shè)備不存在并沒有關(guān)系。這時(shí)這 個(gè)設(shè)備驅(qū)動(dòng)程序是多余的,占用很少的系統(tǒng)內(nèi)存,而不會(huì)產(chǎn)生危害。 1.6 課題研究對(duì)象和背景 地鐵交通是現(xiàn)代城市基礎(chǔ)設(shè)施建設(shè)的重要組成部分,被人們稱為都市大動(dòng) 脈,是城市運(yùn)輸大量乘客的地下隧道或地上高架的電氣化鐵路系統(tǒng)。地鐵無(wú)線 南京航空航天大學(xué)碩士學(xué)位論文 9 通信系統(tǒng)是二十世紀(jì)運(yùn)輸與通信高度結(jié)合的產(chǎn)物。它已成為地鐵運(yùn)營(yíng)中不可缺 少的重要組成部分,是提高運(yùn)輸效率、保證行車安全的重要手段。本課題的研 究對(duì)象是為南京地鐵無(wú)線通信系統(tǒng)設(shè)計(jì)的無(wú)線電臺(tái)軟件平臺(tái)。無(wú)線電臺(tái)在地鐵 無(wú)線通信系統(tǒng)中起到橋梁的作用,將列車上的有線網(wǎng)絡(luò)和列車下的有線網(wǎng)絡(luò)連 接在一起。 本課題以第 14 研究所委托的預(yù)研項(xiàng)目“基于 ieee802.11b 標(biāo)準(zhǔn)的無(wú)線電臺(tái) 軟件平臺(tái)”為背景,研究了如何使用嵌入式 linux 搭建無(wú)線通信平臺(tái),重點(diǎn)探討 了網(wǎng)卡驅(qū)動(dòng)程序移植、數(shù)據(jù)包轉(zhuǎn)發(fā)機(jī)制以及上層的通信協(xié)議,實(shí)現(xiàn)了一個(gè)完善 的基于嵌入式 linux 的無(wú)線通信平臺(tái), 同時(shí)也提出了一些改進(jìn)系統(tǒng)網(wǎng)絡(luò)通信性能 的想法并加以試驗(yàn)。該系統(tǒng)使用的嵌入式 linux 的內(nèi)核版本是 2.4.18。 第一章 緒論。介紹了嵌入式系統(tǒng)、嵌入式 linux 和 linux 設(shè)備驅(qū)動(dòng)程序。 并介紹了本課題的研究對(duì)象和背景。 第二章 基于 s3c2410x 的無(wú)線電臺(tái)軟硬件體系結(jié)構(gòu)。介紹了無(wú)線電臺(tái)的軟 硬件體系結(jié)構(gòu)及其工作原理。同時(shí)闡述了網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊的工作原理和程序 結(jié)構(gòu)。 第三章 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊設(shè)計(jì)與實(shí)現(xiàn)。本章主要討論了網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊 中如何使用內(nèi)核提供的服務(wù)函數(shù)以及有線和無(wú)線網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊的具體實(shí) 現(xiàn)。 第四章 無(wú)線站點(diǎn)自動(dòng)切換實(shí)現(xiàn)。這一章介紹了地鐵無(wú)線網(wǎng)絡(luò)的組網(wǎng)形式并 闡述了地鐵列車高速移動(dòng)中無(wú)線網(wǎng)絡(luò)的切換實(shí)現(xiàn)。 第五章 無(wú)線站點(diǎn)和無(wú)線接入點(diǎn)通信測(cè)試。這一章分別在網(wǎng)內(nèi)切換和網(wǎng)間切 換的情況下對(duì)網(wǎng)絡(luò)通信性能進(jìn)行了測(cè)試,并得出測(cè)試結(jié)論。 第六章 結(jié)束語(yǔ)。對(duì)目前本課題所做工作的總結(jié)和提出下一步需要做的工 作。 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 10 第二章第二章 基于基于 s3c2410x 的無(wú)線電臺(tái)軟硬件體系結(jié)構(gòu)的無(wú)線電臺(tái)軟硬件體系結(jié)構(gòu) 2.1 無(wú)線電臺(tái)工作原理 隨著經(jīng)濟(jì)的不斷發(fā)展,城市化進(jìn)程的加快,地鐵交通規(guī)模不斷拓展,已成 為現(xiàn)代城市基礎(chǔ)設(shè)施建設(shè)的重要基礎(chǔ)工程,被人們稱為都市大動(dòng)脈。地鐵無(wú)線 通信系統(tǒng)是二十世紀(jì)運(yùn)輸與通信高度結(jié)合的產(chǎn)物。地鐵無(wú)線通信作為高速運(yùn)行 的地鐵列車與車下運(yùn)營(yíng)管理機(jī)構(gòu)之間唯一的通信手段,擔(dān)負(fù)著提高運(yùn)營(yíng)效率、 保障行車安全的重要作用,是地鐵運(yùn)營(yíng)中不可缺少的組成部分。課題所研究的 無(wú)線電臺(tái)是地鐵無(wú)線通信系統(tǒng)中的重要組成部分。 無(wú)線電臺(tái)分別連接著有線局域網(wǎng)和無(wú)線局域網(wǎng),起到了轉(zhuǎn)發(fā)數(shù)據(jù)包的作用。 由于有線局域網(wǎng)和無(wú)線局域網(wǎng)使用不同的局域網(wǎng)協(xié)議,分別是 802.3 和 802.11, 所以無(wú)線電臺(tái)在接受數(shù)據(jù)包的數(shù)據(jù)鏈路層處理中,需要將接收到的局域網(wǎng)數(shù)據(jù) 包進(jìn)行解包再按目的計(jì)算機(jī)所在局域網(wǎng)類型重新打包并路由后轉(zhuǎn)發(fā)。嵌入式 linux 在其內(nèi)核模塊中提供了一套比較完整的轉(zhuǎn)發(fā)機(jī)制。 無(wú)線電臺(tái)在地鐵無(wú)線通信系統(tǒng)中的運(yùn)行環(huán)境如下圖所示: 圖 2-1 地鐵無(wú)線通信系統(tǒng)運(yùn)行示意圖 南京航空航天大學(xué)碩士學(xué)位論文 11 無(wú)線電臺(tái)的用途有兩種。一種布置在地鐵隧道或者高架兩側(cè),即圖中所示 無(wú)線接入點(diǎn)ap,擔(dān)負(fù)著連接無(wú)線局域網(wǎng)和外部網(wǎng)絡(luò)的功能。另一種稱為無(wú)線站 點(diǎn)sta,被布置在地鐵列車上,與隧道或者高架旁的ap構(gòu)成無(wú)線網(wǎng)絡(luò)。 sta在高速行進(jìn)中不斷探測(cè)能接收到信號(hào)的各個(gè)ap的信號(hào)強(qiáng)度,并根據(jù)設(shè) 定的閾值連接滿足條件的ap,進(jìn)行通信。地鐵列車上的sta在運(yùn)行中將不斷切 換ap。ap和sta所組成的無(wú)線網(wǎng)絡(luò)將sta所在的地鐵上的有線網(wǎng)絡(luò)和ap所在的 有線網(wǎng)絡(luò)連接在一起。一個(gè)sta在不同的ap之間高速切換,同時(shí)需要保證ap和 sta所在的兩個(gè)有線網(wǎng)絡(luò)中的計(jì)算機(jī)之間的上層通信不被中斷。 無(wú)線局域網(wǎng)工作模式有兩種,infrastructure 和 ad-hoc。infrastructure 是指通 過 accesspoint4(accesspoint 也被稱為無(wú)線接入點(diǎn),由于本文中無(wú)線接入點(diǎn) ap 有特殊的含義,為避免概念混亂本文中只使用 accesspoint 來(lái)稱呼該設(shè)備)互連 的工作模式,也就是可以把 accesspoint 看作是傳統(tǒng)局域網(wǎng)中的 hub(集線器) 。 ad-hoc 是一種比較特殊的工作模式,它通過把一組需要互相通信的無(wú)線網(wǎng)卡的 essid 設(shè)為相同值來(lái)構(gòu)建網(wǎng)絡(luò),這樣就可以不必使用 accesspoint,構(gòu)成一種特殊 的無(wú)線網(wǎng)絡(luò)應(yīng)用模式。由于所使用的無(wú)線網(wǎng)卡 bgw200 硬件限制的原因,無(wú)線 電臺(tái)采用 ad-hoc 工作模式構(gòu)建無(wú)線局域網(wǎng) 2.2 無(wú)線電臺(tái)硬件體系結(jié)構(gòu) 無(wú)線電臺(tái)嵌入式系統(tǒng)由數(shù)據(jù)處理單元(arm9)、接口轉(zhuǎn)換單元、片外存儲(chǔ)器 (sdram)和 arm 專用程序存儲(chǔ)器(nor flash, nand flash)組成, 其硬件結(jié)構(gòu)如下 圖所示。該系統(tǒng)采用 samsung 公司的處理器 s3c2410x。該處理器內(nèi)部集成了 arm 公司 arm920t 處理器核的 32 位微控制器,資源豐富,帶獨(dú)立的 16kb 的 指令 cache 和 16kb 數(shù)據(jù) cache、lcd 控制器、ram 控制器、nand 閃存控制 器、 3 路 uart、 4 路 dma、 4 路帶 pwm 的 timer、 并行 i/o 口、 8 路 10 位 adc、 touch screen 接口、i2c 接口、i2s 接口、2 個(gè) usb 接口控制器、2 路 spi,主頻 最高可達(dá) 203mhz。擴(kuò)展的外圍設(shè)備主要有: 64m 字節(jié)的 sdram,由兩片 k4s561632 組成,工作在 32 位模式下; 64m 字節(jié) nand flash,采用的是 k9f1208; 2m 字節(jié) nor flash,采用的是 sst39vf1601,工作在 16 位模式; 有線以太網(wǎng)接口,采用的是 cs8900a; 無(wú)線以太網(wǎng)接口,采用的是飛利浦公司的 bgw200; 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 12 2 路 uart 波特率可高達(dá) 115200bps,并具有 rs232 電平轉(zhuǎn)換電路。 無(wú)線以太網(wǎng)外設(shè) bgw200 是一個(gè) sip 方式封裝的芯片,內(nèi)部包含了一個(gè) arm7。它是一個(gè)獨(dú)立于 s3c2410x arm 子系統(tǒng)之外的基帶子系統(tǒng),以 spi 接 口的方式和 s3c2410x 進(jìn)行通信。其中 s3c2410x 為主機(jī),bgw200 為從機(jī)。 ethernet (cs8900a) arm (s3c2410x) rj45 10base-t 以太網(wǎng) pc機(jī) uart arm嵌入式 系統(tǒng) 接口轉(zhuǎn)換 sdram (k4s561632c2) nor flash (sst39vf160) nand flash (k9f1208) from bgw200 d(0:32) a(0:23) spi接口 d(0:15) a(1:22) d(0:7) a(0:19) d(0:16) 圖 2-2 無(wú)線電臺(tái)嵌入式系統(tǒng)硬件圖 s3c2410x 支持兩種啟動(dòng)模式:nand flash 啟動(dòng)和 nor flash 啟動(dòng)。由于使 用 linux 的關(guān)系, 我們選擇了 nand flash 啟動(dòng)系統(tǒng)。 nor flash 帶有 sram 接口, 有足夠的地址引腳來(lái)尋址,可以很容易地存取其內(nèi)部的每一個(gè)字節(jié),可以在其 中執(zhí)行程序。nand 器件使用復(fù)雜的 i/o 口來(lái)串行地存取數(shù)據(jù),讀和寫操作采用 512 字節(jié)的塊,不可以執(zhí)行程序。為了支持 nand flash 啟動(dòng),s3c2410x 在內(nèi)部 4k 的 sram 緩存即“steppingstone”開始執(zhí)行時(shí), 將 nand flash 最前面的 4k 字節(jié) 代碼讀入“steppingstone”然后開始執(zhí)行這些讀入的啟動(dòng)代碼。通常啟動(dòng)代碼的執(zhí) 行會(huì)把 nand flash 中的內(nèi)容拷到 sdram 中以便執(zhí)行主代碼。 南京航空航天大學(xué)碩士學(xué)位論文 13 2.3 無(wú)線電臺(tái)軟件體系結(jié)構(gòu) 一個(gè)嵌入式 linux 系統(tǒng)從軟件的角度看通??梢苑譃樗膫€(gè)部分: 引導(dǎo)加載程 序、linux 內(nèi)核、文件系統(tǒng)、用戶應(yīng)用程序。 無(wú)線電臺(tái)系統(tǒng)啟動(dòng)流程如下圖所示: 圖 2-3 無(wú)線電臺(tái)系統(tǒng)啟動(dòng)流程圖 引導(dǎo)加載程序是系統(tǒng)加電后運(yùn)行的第一段代碼。 我們熟悉的 pc 中的引導(dǎo)程 序一般由 bios 和位于 mbr 的 os bootloader(例如 lilo 或者 grub)組成5。 然而在嵌入式系統(tǒng)中通常沒有像 bios 那樣的固件程序, 因此整個(gè)系統(tǒng)的加載啟 動(dòng)任務(wù)就完全由 bootloader 來(lái)完成。在嵌入式 linux 中,引導(dǎo)加載程序即等效為 bootloader。 bootloader 就是在操作系統(tǒng)內(nèi)核運(yùn)行前運(yùn)行地一段程序。通過這段程序,我 們可以初始化必要的硬件設(shè)備,創(chuàng)建內(nèi)核需要的一些信息并將這些信息通過相 應(yīng)機(jī)制傳遞給內(nèi)核,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),最終調(diào)用 操作系統(tǒng)內(nèi)核,真正起到引導(dǎo)和加載內(nèi)核的作用。bootloader 是依賴于硬件而實(shí) 現(xiàn)的,特別是在嵌入式系統(tǒng)中。不同的體系結(jié)構(gòu)需求的 bootloader 是不同的;除 了體系結(jié)構(gòu),bootloader 還依賴于具體的嵌入式板級(jí)設(shè)備的配置。也就是說(shuō),對(duì) 于兩塊不同的嵌入式板而言,即使它們基于相同的 cpu 構(gòu)建,運(yùn)行在其中一塊 電路板上的 bootloader,未必能夠運(yùn)行在另一塊電路開發(fā)板上。bootloader 的啟 動(dòng)過程可以是單階段的,也可以是多階段的。通常多階段的 bootloader 能提供更 為復(fù)雜的功能,以及更好的可移植性。從固態(tài)存儲(chǔ)設(shè)備上啟動(dòng)的 bootloader 大多 引導(dǎo)加載程序啟動(dòng),初始化硬件 拷貝內(nèi)核到系統(tǒng)內(nèi)存 內(nèi)核自解壓執(zhí)行 內(nèi)核初始化,掛載根文件系統(tǒng) 執(zhí)行啟動(dòng)腳本 基于嵌入式 linux 的無(wú)線電臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) 14 數(shù)是二階段的啟動(dòng)過程,也即啟動(dòng)過程可以分為 stage 1 和 stage 2 兩部分。第一 部分是用匯編寫的,用來(lái)引導(dǎo)板子上的一些硬件和結(jié)構(gòu),第二部分是用 c 寫的, 是用來(lái)初始化地址和內(nèi)存等。bootloader 加載完畢后將 linux 內(nèi)核從 nand flash 拷貝到內(nèi)存中自解壓運(yùn)行,linux 啟動(dòng)后加載根文件系統(tǒng)以及運(yùn)行用戶態(tài)程序。 無(wú)線電臺(tái)系統(tǒng)中使用 vivi 作為啟動(dòng) linux 內(nèi)核的 bootloader,linux 啟動(dòng)后加載 cramfs 根文件系統(tǒng)。由于 cramfs 根文件系統(tǒng)是只讀的,在 linux 啟動(dòng)腳本里自 動(dòng)掛載可讀可寫的yaffs文件系統(tǒng)以及運(yùn)行一些包括守護(hù)進(jìn)程在內(nèi)的用戶服務(wù)程 序和配置程序。 bootloader 啟動(dòng)過程6如下圖所示: 圖 2-4 bootloader 啟動(dòng)流程圖 linux 內(nèi)核是由很多函數(shù)模塊組成的,其中就包括了設(shè)備驅(qū)動(dòng)模塊。設(shè)備驅(qū) 動(dòng)模塊工作在 linux 內(nèi)核和底層硬件之間, 將對(duì)硬件設(shè)備的操作抽象成函數(shù)提供 給內(nèi)核使用。linux 內(nèi)核再將驅(qū)動(dòng)函數(shù)抽象成系統(tǒng)調(diào)用接口提供給用戶態(tài)應(yīng)用程 序使用。 無(wú)線電臺(tái)嵌入式 linux 系統(tǒng)體系結(jié)構(gòu)圖如下: 硬件設(shè)備初始化 將bootloader拷貝到系 統(tǒng)內(nèi)存 設(shè)置 c 語(yǔ)言程序運(yùn)行 堆棧 跳轉(zhuǎn)到bootloader c程 序部分入口 檢測(cè)系統(tǒng)內(nèi)存映射 初始化本階段使用的 硬件設(shè)備 調(diào)用應(yīng)用程序或者啟 動(dòng)操作系統(tǒng)內(nèi)核 bootloader 程序入口 執(zhí)行匯編代碼 南京航空航天大學(xué)碩士學(xué)位論文 15 圖 2-5 無(wú)線電臺(tái)嵌入式 linux 系統(tǒng)體系結(jié)構(gòu)圖 2.4 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊結(jié)構(gòu)及實(shí)現(xiàn) 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊是構(gòu)成內(nèi)核的諸多模塊中的一部分。它和內(nèi)核網(wǎng)絡(luò)子系 統(tǒng)緊密聯(lián)系,從而向內(nèi)核提供完善的網(wǎng)絡(luò)通信功能。我們通常使用的內(nèi)核的網(wǎng) 絡(luò)子系統(tǒng)是按照 tcp/ip 協(xié)議棧的分層結(jié)構(gòu)設(shè)計(jì)的,而網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)模塊則處于 網(wǎng)絡(luò)子系統(tǒng)的下層, 直接對(duì)硬件設(shè)備進(jìn)行操作。 參
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐廳餐飲服務(wù)人員勞動(dòng)合同及加班費(fèi)協(xié)議
- 礦山開采測(cè)繪技術(shù)員長(zhǎng)期聘用協(xié)議
- 違法建筑拆除與建筑拆除工程結(jié)算合同協(xié)議
- 智能化廠房產(chǎn)權(quán)轉(zhuǎn)移與設(shè)備配套服務(wù)合同
- 馬拉松賽事參賽者的健康安全措施
- 智能停車場(chǎng)車位租賃及增值服務(wù)合同范本
- 車輛抵押擔(dān)保與金融服務(wù)合同
- 餐飲企業(yè)廚師福利待遇及晉升合同
- 建筑行業(yè)極端天氣施工措施
- DB13T 1339-2010 棉花耐鹽性鑒定評(píng)價(jià)技術(shù)規(guī)范
- 棗莊學(xué)院教師招聘考試歷年真題
- LCE-RB-3-004空調(diào)風(fēng)柜保養(yǎng)指導(dǎo)書內(nèi)容
- GB/T 26516-2011按摩精油
- 2023年燕舞集團(tuán)有限公司招聘筆試模擬試題及答案解析
- 電機(jī)檢測(cè)報(bào)告
- 上市合作合同協(xié)議書范本-IPO
- 最新消毒記錄表每日消毒表
- 自發(fā)冠脈夾層診療指南解讀
- 《一滴水經(jīng)過麗江》的課件
- 三級(jí)醫(yī)院服務(wù)能力指南2022
- 家庭室內(nèi)裝飾裝修工程驗(yàn)收單
評(píng)論
0/150
提交評(píng)論