版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、<p><b> 畢業(yè)論文</b></p><p> 題 目 基于ARM嵌入式系統(tǒng)的Socket通信設計 </p><p><b> 摘 要</b></p><p> 嵌入式系統(tǒng)是計算機技術(shù)、半導體技術(shù)和電子技術(shù)的綜合體,已經(jīng)廣泛應用于科學研究、工程設計、國防軍事、自動化控制等各個領域。
2、隨著網(wǎng)絡通訊技術(shù)的迅猛發(fā)展,生產(chǎn)和生活中廣泛要求嵌入式系統(tǒng)終端能夠完成網(wǎng)絡通訊功能。論文就是以ARM7 TDMI為嵌入式開發(fā)平臺,開發(fā)具有網(wǎng)絡通信功能的嵌入式終端。</p><p> SOCKET是一個通信鏈的句柄,通過套接字向網(wǎng)絡發(fā)出請求或者應答網(wǎng)絡請求,用于TCP/IP協(xié)議的應用程序之間的相互通信。論文選擇了ARM體系結(jié)構(gòu)的嵌入式LPC2200處理器,根據(jù)系統(tǒng)的需求,在綜合各種設計方案的基礎上,選擇移植帶有
3、TCP/IP協(xié)議的ucLinux嵌入式操作系統(tǒng)。裁剪和定制系統(tǒng)后,構(gòu)建相關的文件系統(tǒng)。在此基礎上,編寫應用程序,調(diào)用系統(tǒng)的Socket通信函數(shù),實現(xiàn)服務器端和客戶端的通信。描述IP地址和端口,用于在兩個</p><p> 論文成功的實現(xiàn)了嵌入式設備的網(wǎng)絡接入功能,各個帶有網(wǎng)絡通訊功能的嵌入式終端可以相互通訊,擴大了和提高了嵌入式設備的應用范圍,對嵌入式系統(tǒng)的發(fā)展有較大的意義。</p><p&
4、gt; 關鍵詞:嵌入式系統(tǒng);ARM7TDMI;socket;TCP/IP </p><p><b> Abstract</b></p><p> The embedded system is a complex system with the computer technology, semiconductor technology and electronic
5、 technology .It has been widely used in scientific research, engineering, national defense, automation and other fields. With the rapid development of network communication technology,our production and life requires the
6、 terminal to complete the network communication function in a wide range of embedded systems. The Paper select the ARM7 TDMI for embedded development platform, develop the</p><p> Key words: Embedded System
7、s;ARM7TDMI;socket;TCP/IP</p><p><b> 目 錄</b></p><p><b> 1緒論1</b></p><p> 1.1嵌入式系統(tǒng)1</p><p> 1.2國內(nèi)外現(xiàn)狀和趨勢2</p><p> 1.3選題必要
8、性3</p><p> 1.4選題的目的和意義4</p><p> 1.5課題研究范圍及要達到的技術(shù)要求5</p><p><b> 2需求分析6</b></p><p> 2.1任務概述6</p><p> 2.2系統(tǒng)的需求分析6</p><p
9、> 2.2.1系統(tǒng)的功能需求6</p><p> 2.2.2系統(tǒng)的性能需求6</p><p> 2.3系統(tǒng)設計思路6</p><p> 3系統(tǒng)概要設計9</p><p> 3.1系統(tǒng)設計的基本原則9</p><p> 3.2系統(tǒng)設計方案分析9</p><p&
10、gt; 3.3概要設計11</p><p> 3.3.1開發(fā)環(huán)境11</p><p> 3.3.2ARM開發(fā)環(huán)境的建立12</p><p> 3.3.3建立程序運行調(diào)試交叉編譯環(huán)境15</p><p> 3.4模塊化的設計與分析15</p><p> 3.4.1開發(fā)板上完成的設計15
11、</p><p> 3.4.2PC機上完成的程序開發(fā)16</p><p> 3.5設計基本流程16</p><p> 4系統(tǒng)詳細設計19</p><p> 4.1.uClinux的移植19</p><p> 4.1.1uClinux嵌入式系統(tǒng)的下載19</p><p&g
12、t; 4.1.2根文件系統(tǒng)的建立19</p><p> 4.1.3應用程序庫20</p><p> 4.2.內(nèi)核編譯20</p><p> 4.2.1uClinux的安裝20</p><p> 4.2.2配置uClinux21</p><p> 4.2.3構(gòu)建文件系統(tǒng)23</p
13、><p> 4.3.PC機上的程序設計26</p><p> 4.3.1嵌入式TCP /IP分析26</p><p> 4.3.2嵌入式TCP/IP設計27</p><p> 4.4.編程模型28</p><p> 4.4.1TCP客戶端設計28</p><p> 4
14、.4.2TCP服務器端主要代碼分析30</p><p> 4.5.程序下載到嵌入式硬件平臺34</p><p> 5系統(tǒng)的實現(xiàn)與測試37</p><p> 5.1測試環(huán)境和測試的條件37</p><p> 5.2功能及數(shù)據(jù)測試38</p><p> 5.2.1容錯功能38</p&
15、gt;<p> 5.2.2連接成功的信息說明39</p><p> 5.2.3數(shù)據(jù)收發(fā)功能39</p><p> 5.3測試的結(jié)果41</p><p><b> 結(jié) 論42</b></p><p><b> 參考文獻43</b></p><
16、p><b> 致 謝45</b></p><p><b> 緒論</b></p><p><b> 嵌入式系統(tǒng)</b></p><p> 目前,嵌入式系統(tǒng)的應用越來越廣泛,我們?nèi)粘I钪芯痛嬖诖罅康那度胧较到y(tǒng)的產(chǎn)品:比如手機、MP3、收音機、電視機等等,我們已經(jīng)離不開嵌入式產(chǎn)品了。嵌入
17、式產(chǎn)品是面向應用的,應用的需求推動了嵌入式技術(shù)的發(fā)展。</p><p> 嵌入式系統(tǒng)的基本技術(shù)仍然是計算機技術(shù),包含軟件、硬件、操作系統(tǒng)等。嵌入式系統(tǒng)是可裁剪的,根據(jù)應用的具體場合和需求,選擇相應的模塊,把系統(tǒng)中不需要的部分去掉,這樣做的主要目的是節(jié)約資源,降低功耗。每一個嵌入式產(chǎn)品是不同的,使用不同的硬件和軟件,搭建自己的嵌入式操作系統(tǒng),但是核心技術(shù)都是一樣的。嵌入式系統(tǒng)主要有以下幾個特點:</p>
18、;<p> ?。?)以需求為目標:嵌入式產(chǎn)品沒有統(tǒng)一的要求,在開發(fā)過程中,它主要是解決用戶的需求問題的。比如我們使用的手機產(chǎn)品,用戶有各種各樣的需求,有的看重的是移動功能,有的看中的是娛樂功能,還有的看中的是導航功能。那么在設計開發(fā)過程中,就需要按照不同的需求搭建自己的嵌入式系統(tǒng)。這樣做的主要目的是節(jié)約資源,讓嵌入式芯片發(fā)揮更大的作用。</p><p> ?。?)運行高效,節(jié)約資源:嵌入式系統(tǒng)要求運
19、行速度快,具有很高的執(zhí)行效率?;贏RM7TDMI的嵌入式芯片,在指令設計上使用是精簡指令集,執(zhí)行效率高;使用三級流水技術(shù),大大增強了嵌入式產(chǎn)品的性能[1]。</p><p> ?。?)較小的體積和可靠性:嵌入式產(chǎn)品一般都要求體積較小,較小的體積,主要是可以滿足便攜功能。在可靠性方面,要求嵌入式系統(tǒng)的代碼執(zhí)行效率高,系統(tǒng)運行穩(wěn)定可靠,也別是在工業(yè)控制領域。只有做到這一點,嵌入式產(chǎn)品才會有更大的應用空間和應用市場。
20、嵌入系統(tǒng)是一個片上系統(tǒng),應用空間巨大,在各個方面都可以應用,比如工業(yè)控制領域、消費電子、移動通訊等,都得到了廣泛的使用。</p><p><b> 國內(nèi)外現(xiàn)狀和趨勢</b></p><p> 隨著信息化,智能化,網(wǎng)絡化的發(fā)展,嵌入式系統(tǒng)技術(shù)也將獲得廣闊的發(fā)展空間。信息時代,數(shù)字時代使得嵌入式產(chǎn)品獲得了巨大的發(fā)展契機,為嵌入式市場展現(xiàn)了美好的前景,同時也對嵌入式生產(chǎn)
21、廠商提出了新的挑戰(zhàn)。</p><p> (1)嵌入式開發(fā)是一項系統(tǒng)工程,因此要求嵌入式系統(tǒng)廠商不僅要提供嵌入式軟硬件系統(tǒng)本身,同時還需要提供強大的硬件開發(fā)工具和軟件包支持?! ∧壳昂芏鄰S商已經(jīng)充分考慮到這一點,在主推系統(tǒng)的同時,將開發(fā)環(huán)境也作為重點推廣。比如三星在推廣Arm7,Arm9芯片的同時還提供開發(fā)板和版及支持包(BSP),而WindowCE在主推系統(tǒng)時也提供Embedded VC++作為開發(fā)工具,還有
22、Vxworks的Tonado開發(fā)環(huán)境,DeltaOS的Limda編譯環(huán)境等等都是這一趨勢的典型體現(xiàn)。當然,這也是市場競爭的結(jié)果。 (2)網(wǎng)絡化、信息化的要求隨著因特網(wǎng)技術(shù)的成熟、帶寬的提高日益提高,使得以往單一功能的設備如電話、手機、冰箱、微波爐等功能不再單一,結(jié)構(gòu)更加復雜。這就要求芯片設計廠商在芯片上集成更多的功能,為了滿足應用功能的升級,設計師們一方面采用更強大的嵌入式處理器如32位、64位RISC芯片或信號處理器DSP增強處理
23、能力,同時增加功能接口,如USB,擴展總線類型,如CAN BUS,加強對多媒體、圖形等的處理,逐步實施片上系統(tǒng)(SOC)的概念。軟件方面采用實時多任務編程技術(shù)和交叉開發(fā)工具技術(shù)來控制功能</p><p> ?。?)網(wǎng)絡互聯(lián)成為必然趨勢?! ∥磥淼那度胧皆O備為了適應網(wǎng)絡發(fā)展的要求,必然要求硬件上提供各種網(wǎng)絡通信接口。傳統(tǒng)的單片機對于網(wǎng)絡支持不足,而新一代的嵌入式處理器已經(jīng)開始內(nèi)嵌網(wǎng)絡接口,除了支持TCP/IP協(xié)議
24、,還有的支持IEEE1394、USB、CAN、Bluetooth或IrDA通信接口中的一種或者幾種,同時也需要提供相應的通信組網(wǎng)協(xié)議軟件和物理層驅(qū)動軟件。軟件方面系統(tǒng)系統(tǒng)內(nèi)核支持網(wǎng)絡模塊,甚至可以在設備上嵌入Web瀏覽器,真正實現(xiàn)隨時隨地用各種設備上網(wǎng)[3]?!?(4)精簡系統(tǒng)內(nèi)核、算法,降低功耗和軟硬件成本?! ∥磥淼那度胧疆a(chǎn)品是軟硬件緊密結(jié)合的設備,為了減低功耗和成本,需要設計者盡量精簡系統(tǒng)內(nèi)核,只保留和系統(tǒng)功能緊密相關的軟硬件
25、,利用最低的資源實現(xiàn)最適當?shù)墓δ?,這就要求設計者選用最佳的編程模型和不斷改進算法,優(yōu)化編譯器性能。因此,既要軟件人員有豐富的硬件知識,又需要發(fā)展先進嵌入式軟件技術(shù),如Java、Web和WAP等?!?(5)提供友好的多媒體人機界面 嵌入式設備能與用戶親密接觸,最重要的因素就是它能提供非常友好的用戶界面。圖像界面,靈活的控制方式,使得人們感覺嵌入式</p><p><b> 選題必要性</b&
26、gt;</p><p> 當前,計算機技術(shù)和微電子技術(shù)發(fā)展迅猛,特別是納米技術(shù)取得了重大進展,嵌入式芯片的設計和開發(fā)也越來越迅速。對嵌入式芯片的運行速度要求越來越快,存貯器也越來越大,這大大推進了嵌入式技術(shù)的發(fā)展,嵌入式系統(tǒng)在一定的程度上推進了現(xiàn)代生活的提高和改善。</p><p> 在網(wǎng)絡通訊方面,嵌入式系統(tǒng)的發(fā)展增強了網(wǎng)絡的智能化與靈活性,從而實現(xiàn)各種通信系統(tǒng)之間的互聯(lián)互通。互聯(lián)網(wǎng)
27、是我們?nèi)粘^k公生活中最常用的網(wǎng)絡,很方便的把我們相互連接。目前,互聯(lián)網(wǎng)已經(jīng)開始普及,包括廣大的農(nóng)村,網(wǎng)絡成為了我們生活的一部分。由于嵌入式系統(tǒng)低功耗、面向應用等特點,在網(wǎng)絡通訊方面得到了廣泛的應用。我們使用的移動設備,基本上都是基于嵌入式系統(tǒng)設計開發(fā)的。 </p><p> 嵌入式系統(tǒng)是指將應用程序、操作系統(tǒng)與計算機硬件集成在一起的系統(tǒng)。它以應用為中心、以計算機技術(shù)為基礎,而且軟硬件可以裁剪,因而能滿足應用系
28、統(tǒng)對功能、可靠性、成本、體積和功耗的嚴格要求的專用計算機系統(tǒng)。嵌入式系統(tǒng)與通信、網(wǎng)絡技術(shù)的結(jié)合可以極大地增強網(wǎng)絡的智能化與靈活性,拓展通信功能,從而實現(xiàn)各種通信系統(tǒng)之間的互聯(lián)互通[4]。</p><p><b> 選題的目的和意義</b></p><p> 傳統(tǒng)的數(shù)據(jù)傳輸和通訊,需要鋪設專用的介質(zhì)和電纜。通過前端的傳感器采集數(shù)據(jù)信息,并通過相關的通訊協(xié)議進行數(shù)據(jù)傳
29、輸。比如我們經(jīng)常使用的CAN,485總線等。這些總線和協(xié)議需要自己定制,硬件設備需要自己設計開發(fā),面向的對象不同,解決的設計問題不同,主要面向?qū)I(yè)設計開發(fā),由于技術(shù)上的門檻,普通人員很難理解和使用。</p><p> 以太網(wǎng)是使用最為廣泛的網(wǎng)絡,由于標準的統(tǒng)一,硬件的支持和配套,普通人員也可以使用,是信息交流和流通的重要渠道。因此,基于嵌入式系統(tǒng),設計開發(fā)網(wǎng)絡應用產(chǎn)品具有重要的意思。</p>&l
30、t;p> ?。?)嵌入式網(wǎng)絡為終端設備網(wǎng)絡化提供了保障</p><p> 如果將我們所有的終端設備進行網(wǎng)絡連接,可以方便有效地進行信息溝通和數(shù)據(jù)共享,同時也為管理者提供了一種有效的管理方式。移動辦公設備很方便的將我們連接在一起,無論何時何地,增強了我們的相互溝通。</p><p> ?。?)嵌入式網(wǎng)絡技術(shù)為工業(yè)控制領域設備的發(fā)展提供動力</p><p>
31、基于嵌入式系統(tǒng)的網(wǎng)絡技術(shù),隨著嵌入式技術(shù)的迅猛發(fā)展,也得到了廣泛的應用。我們現(xiàn)在使用的手機設備,無論我們在天涯海角,都可以隨時盡心交流和溝通;家庭經(jīng)常使用的網(wǎng)絡電視,可以方便的下載和點播節(jié)目;網(wǎng)絡課堂更是把我們組織在一起學習,提高我們的能力好和水平;網(wǎng)絡會議可以讓我們處在不同地域的人組織在一起討論和解決問題,節(jié)約費用。當然,還有經(jīng)常使用的B2B網(wǎng)上購物、遠程會診等等。真不敢相信,離開了網(wǎng)絡,我們的生活會是怎么樣。</p>
32、<p> 在工業(yè)控制方面,嵌入式網(wǎng)絡可以有效可靠地進行遠程控制和操作,通過網(wǎng)絡通訊模塊進行協(xié)議的轉(zhuǎn)換,各個控制對象可以獨立為嵌入式網(wǎng)絡的一個終端,這種控制可以做到有效、可靠和實時。</p><p> ?。?)嵌入式網(wǎng)絡為家庭生活的智能化提供了技術(shù)支持</p><p> 現(xiàn)在的家庭都已經(jīng)離不開網(wǎng)絡。通過網(wǎng)絡,可以進行遠程的家庭監(jiān)控,我們經(jīng)常使用的家用電器。我們可以把家庭的所有設
33、備聯(lián)網(wǎng),組成一個家庭智能中心,可以很方便的通過網(wǎng)絡進行控制。這種網(wǎng)絡的設計和開發(fā)基本都是基于嵌入式技術(shù)的。</p><p> 基于嵌入式系統(tǒng)的網(wǎng)絡通訊,一般具有以下功能:</p><p> (1)嵌入式網(wǎng)絡以Internet網(wǎng)絡為基礎,通過協(xié)議的轉(zhuǎn)換,把相關的信息傳輸?shù)侥康牡?,大大?jié)約了資源;</p><p> (2)TCP/I P協(xié)議是一個標準公開的協(xié)議,不
34、做任何改變,我們就可以利用Web瀏覽器讀取信息,非常的方便快捷;</p><p> (3)客戶機根據(jù)信息的需求狀況,獲得相關的信息,并且能夠自由的處理,并能夠顯示處理結(jié)果;</p><p> ?。?)信息的顯示有多種方式,通過計算機技術(shù)處理成文字、圖象、表格等形式,并且還能夠?qū)崟r的自動更新,在設備的終端上最好相關記錄,更加方便有效的進行控制和操作[5]。</p><p
35、> 課題研究范圍及要達到的技術(shù)要求</p><p> 課題是基于ARM 的嵌入式socket 通信設計,研究的范圍包含:ARM 上uClinux操作系統(tǒng)的移植、Linux 下socket通信的建立、交叉編譯環(huán)境下嵌入式socket通信的實現(xiàn)等。課題設計后應該實現(xiàn)在特定的ARM7平臺上運行嵌入式uClinux操作系統(tǒng),順利的驅(qū)動網(wǎng)絡設備運行,完成在ARM7開發(fā)板和PC機的通信,方便的進行數(shù)據(jù)收發(fā)。<
36、/p><p> 將嵌入式系統(tǒng)與網(wǎng)絡結(jié)合起來,主要的困難在于網(wǎng)絡上的各種通訊協(xié)議對于計算機的存儲器,運算速度等的要求比較高,而嵌入式系統(tǒng)中除部分32位微處理器外,大量存在的是8位和16位的微處理器,如果要支持TCP/IP等Internet協(xié)議將占用大量系統(tǒng)資源,或根本不可能實現(xiàn)[6]。因此,設計中要解決以下問題:</p><p> ?。?)如果要移植操作系統(tǒng),選擇什么操作系統(tǒng),才最適合;<
37、;/p><p> ?。?)如何使開發(fā)板驅(qū)動網(wǎng)絡芯片工作;</p><p> ?。?)如何建立交叉的編譯環(huán)境;</p><p> (4)如何使ARM芯片上具有TCP/IP協(xié)議的網(wǎng)絡環(huán)境;</p><p> ?。?)如何用Socket來建立網(wǎng)絡的通信。</p><p><b> 需求分析</b><
38、;/p><p><b> 任務概述</b></p><p> 論文的主要工作,是選擇適當?shù)那度胧介_發(fā)平臺和文件系統(tǒng),建立交叉的編譯環(huán)境,構(gòu)建TCP/IP網(wǎng)絡體系,實現(xiàn)客戶端和服務器端的socket通信。</p><p><b> 系統(tǒng)的需求分析</b></p><p><b> 系統(tǒng)的
39、功能需求</b></p><p> 嵌入式系統(tǒng)設備能快速的接入網(wǎng)絡,實現(xiàn)網(wǎng)絡資源的共享和網(wǎng)絡設備的通信,首先應該保證嵌入式設備具有完整的網(wǎng)絡協(xié)議體系結(jié)構(gòu),滿足網(wǎng)絡設備的技術(shù)規(guī)范,能夠正確控制嵌入式平臺上的網(wǎng)絡芯片,可以完整的接收和發(fā)送數(shù)據(jù)。嵌入式設備還具有網(wǎng)絡設備標識,也就是嵌入式設備有自己唯一的IP地址,只有這樣,才能完成Internet上網(wǎng)絡設備之間的通信。</p><p&g
40、t;<b> 系統(tǒng)的性能需求</b></p><p> 在系統(tǒng)的設計上,要求系統(tǒng)具有以下性能:</p><p> ?。?)實時性:嵌入式設備具有足夠的反映速度,能快速的接收來自網(wǎng)絡設備數(shù)據(jù),并作出快速的反應;</p><p> ?。?)穩(wěn)定性:系統(tǒng)在異常情況下不發(fā)生死循環(huán),設備系統(tǒng)不會崩潰和癱瘓;</p><p>
41、 (3)可擴充性:系統(tǒng)可以根據(jù)需要進行擴充,能夠新的通信技術(shù)或新的通訊協(xié)議方案(程序),可以在不改動系統(tǒng)大部分硬件的情況下,其實現(xiàn)新的功能;</p><p> (4)易維護性:在設備發(fā)生數(shù)據(jù)災難的時候使系統(tǒng)及時的恢復,達到以前的狀態(tài);</p><p> ?。?)持久性:嵌入式系統(tǒng)工作的特殊性,以及各種特定工作環(huán)境的具體要求,系統(tǒng)必須能夠穩(wěn)定地長時間工作,適應各種不同的工作環(huán)境。</
42、p><p><b> 系統(tǒng)設計思路</b></p><p> 系統(tǒng)的設計開發(fā),宿主機采用的是任意發(fā)行版本的 Linux系統(tǒng),但程序是采用標準C語言來編寫,可以在不同的Linux系統(tǒng)中實現(xiàn)通信功能??紤]到在ARM開發(fā)板上需要運行特定格式的程序文件,所以設計采用Linux下的gcc開發(fā)工具,使用arm-elf-tools交叉編譯工具生成在ARM開發(fā)板上的可以直接運行的程序
43、。</p><p> 由于嵌入式開發(fā)要結(jié)合軟件和硬件的詳細情況來操作,所以系統(tǒng)的開發(fā)應該具有以下的幾種操作接口,第一用戶可以通過以RJ45的以太網(wǎng)對開發(fā)板和系統(tǒng)操作,其次用戶可以采用串口的方式對開發(fā)板的功能和運行效果進行操作,最后操作人員還可以通過開發(fā)板特有的JTAG對開發(fā)板進行操作。</p><p> 系統(tǒng)分為宿主部分和開發(fā)板部分,每個部分獨立成塊,用網(wǎng)絡相互連接,宿主機上運行的Li
44、nux操作系統(tǒng),開發(fā)板上運行的是uClinux嵌入式操作系統(tǒng)[7]。宿主機和開發(fā)板通過Switch交換機進行網(wǎng)絡通信,宿主機一方作為服務器端,開發(fā)板作為客戶端,系統(tǒng)的原理如下圖2.1所示。</p><p> 圖2.1系統(tǒng)設計環(huán)境關系圖</p><p> 系統(tǒng)的設計目標是完成宿主機和開發(fā)板的網(wǎng)絡通信實現(xiàn)。要完成通信,就要完成系統(tǒng)底層硬件的驅(qū)動等一系列的工作,首先啟動宿主機和客戶機的操作系
45、統(tǒng)Linux和uClinux,然后每個模塊加載網(wǎng)絡設備驅(qū)動程序,最后通過TCP/IP協(xié)議建立雙方的通信鏈路,完成Socket通信,詳細情況如圖2.2所示[8]。</p><p> 圖2.2系統(tǒng)的原理示意圖</p><p><b> 系統(tǒng)概要設計</b></p><p><b> 系統(tǒng)設計的基本原則</b></p
46、><p> 無論采用什么設計開發(fā)方式,最終的目的是驅(qū)動開發(fā)板完成網(wǎng)絡的通信。設計過程中,首先開發(fā)板的網(wǎng)絡芯片能夠正常工作,其次要完成通信就必須要有完善的通信的協(xié)議,根據(jù)系統(tǒng)的要求選擇合適的協(xié)議[9]。目前,Internet上用應用最多相對開放的協(xié)議就是TCP/IP協(xié)議,它能使不同網(wǎng)絡設備以及不同類型的網(wǎng)絡按照標準協(xié)議互相連接,輕松的實現(xiàn)上層的通信。在此基礎上,設計上層通信模塊,通過調(diào)用socket函數(shù)來實現(xiàn)各種功能
47、,包括數(shù)據(jù)的接收和發(fā)送,數(shù)據(jù)的校驗等等[10]。</p><p><b> 系統(tǒng)設計方案分析 </b></p><p> 采用TCP/IP協(xié)議已經(jīng)確定了,如何在開發(fā)板上移植入TCP/IP協(xié)議成了一個最主要的解決問題,開發(fā)板上雖然有網(wǎng)絡通信芯片和足夠的存儲空間,但沒有任何的網(wǎng)絡通信協(xié)議,有以下幾種方案可以實現(xiàn)系統(tǒng)的要求,具體的設計方案是:</p>&l
48、t;p><b> (1)方案1</b></p><p> 無操作系統(tǒng),自己構(gòu)建TCP/IP協(xié)議族,編寫上層socket通信模塊完成程序的通信。</p><p><b> ?。?)方案2</b></p><p> 包含操作系統(tǒng),其中又分為帶 TCP/IP協(xié)議族的操作系統(tǒng)和不帶TCP/IP協(xié)議族的操作系統(tǒng)[11]。
49、</p><p> 帶TCP/IP協(xié)議族的Linux或者uClinux操作系統(tǒng),不需要自己構(gòu)建TCP/IP協(xié)議族可以直接調(diào)用底層的函數(shù),驅(qū)動上層模塊完成socket通信[12]。</p><p> 不帶TCP/IP協(xié)議族的uCOS-II操作系統(tǒng),自己構(gòu)建TCP/IP協(xié)議族,編寫上層socket通信模塊完成程序的通信。</p><p> 在選擇什么樣的操作系統(tǒng)這
50、個問題上,主要歸結(jié)于嵌入式系統(tǒng)的性能,主要有以下幾點[13-15]:</p><p> ?。?)微處理器是否支持</p><p> 微處理器是否支持是選用操作系統(tǒng)的核心因素。從應用的角度來說,選用一種穩(wěn)定可靠的微處理器是設計成功的關鍵。</p><p> ?。?)資源占用情況的多少</p><p> 嵌入式系統(tǒng)的資源是有限的,資源占用是另
51、外一個重要的指標。通常所說的資源主要是嵌入式芯片的內(nèi)存和Flash。處于成本和體積等各方面的考慮,要求操作系統(tǒng)盡可能節(jié)約資源。</p><p><b> (3)應用軟件資源</b></p><p> 嵌入式操作系統(tǒng)在應用過程中需要多方軟件支持,包括協(xié)議棧、設備驅(qū)動以及一些應用程序,在設計過程中,可以方便的應用這些軟件,或者只需要很少的改動就可以適用于新的平臺。&l
52、t;/p><p><b> ?。?)操作系統(tǒng)性能</b></p><p> 操作系統(tǒng)的可靠性通常無法在用戶程序或者函數(shù)庫層次得到增強。操作系統(tǒng)的穩(wěn)定性在操作系統(tǒng)設計之初,就已經(jīng)由系統(tǒng)的設計構(gòu)想和編碼質(zhì)量決定了。嵌入式系統(tǒng)可靠性要求要比一般桌面系統(tǒng)要高,設計中有可能無法確定出現(xiàn)的問題是程序的問題還是操作系統(tǒng)的性能問題。</p><p><b&
53、gt; ?。?)執(zhí)行效率</b></p><p> 執(zhí)行效率是另一個評價基準。操作系統(tǒng)的執(zhí)行效率可能直接影響操作系統(tǒng)的處理能力,還有一個重要的指標是這個操作系統(tǒng)的實時性到底如何。操作系統(tǒng)選擇不正確,有可能導致系統(tǒng)根本無法運行。</p><p> 通過對uClinux和Linux的詳細比較,因為uClinux和Linux具有同樣的內(nèi)核,所以在處理器的支持,軟件資源豐富程度,操
54、作系統(tǒng)的功能,操作系統(tǒng)執(zhí)行性能和可靠性上基本上一致,Linux 相對于uClinux在嵌入式應用相對不足,主要體現(xiàn)在以下幾點[16]:</p><p><b> ?。?)空間占用大</b></p><p> Linux操作系統(tǒng)功能完善,但是占用空間大。通常的Linux系統(tǒng),都需要占用上百兆的空間。嵌入式Linux也要占用1M空間,運行時更需要超過4M的內(nèi)存空間,因此
55、對于存貯空間不足的嵌入式系統(tǒng),資源的要求沒有辦法滿足。 </p><p> uClinux系統(tǒng)一般采用Romfs文件系統(tǒng),這種文件系統(tǒng)相對簡單、占用空間較少。主要是由于內(nèi)核支持Romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,還有就是romfs文件系統(tǒng)相對簡單,在建立文件系統(tǒng)超級塊需要更少的存儲空間。 </p><p> (2)操作系統(tǒng)的實時性 </p>&l
56、t;p> 實時系統(tǒng)是指一個系統(tǒng)在執(zhí)行時能夠?qū)ν獠俊惒桨l(fā)生的事務,于一定的時間采取響應 [17],當一個優(yōu)先等級高的進程能夠獲得系統(tǒng)立即的、沒有延遲的服務而不需要等候任何進程,而且在它奪取到CPU的使用權(quán)后,它可以一直執(zhí)行到工作結(jié)束或是有更高等級的進程出現(xiàn)為止。因此,高效的中斷處理能力與高速的輸入輸出能力是實時系統(tǒng)所必備的基本特征。</p><p> Linux和uClinux本身并不支持實時性應用,但
57、是設計時候,對ucLinux可以進行實時性的修改,提供基于內(nèi)核空間和用戶空間的硬實時和軟實時的系統(tǒng)調(diào)用。</p><p><b> (3)內(nèi)存管理</b></p><p> Linux系統(tǒng)帶有MMU內(nèi)存管理單元,具有相應的內(nèi)存管理機制。在ARM7TDMI嵌入式處理器沒有MMU模塊。而uClinux是專門針對沒有MMU的處理器而設計的。uClinux管理內(nèi)存的方法是
58、采用實存儲器管理,通過地址總線對物理內(nèi)存進行直接訪問,程序中訪問的地址都是實際的物理地址,所有的進程都在一個運行空間中運行。系統(tǒng)在啟動時把實際存儲器進行分頁,在加載應用程序時程序分頁加載[18]。 </p><p> 缺少MMU單元,對于系統(tǒng)及應用程序開發(fā)帶來一定的限制,但對于成本和體積敏感的嵌入式設備,由于應用環(huán)境和應用需求并不要求復雜和相對昂貴的硬件體系,內(nèi)存的分配和管理完全可以由開發(fā)人員解決。</p
59、><p> 通過更深入的分析,uClinux比 Linux有更多的優(yōu)勢,本次設計采用的是SmartARM開發(fā)平臺,主要的處理器為ARM7TDMI,所以在應用于嵌入式設備的時候,有一些不合適的因素(主要集中在資源消耗太大以及內(nèi)存管理方面),所以最終選用了uClinux作為嵌入式操作系統(tǒng)進行應用程序的開發(fā)。</p><p><b> 概要設計</b></p>
60、<p><b> 開發(fā)環(huán)境</b></p><p> 課題最終選擇帶TCP/IP協(xié)議族的uClinux操作系統(tǒng)來完成項目的設計,所以要針對uClinux上程序的開發(fā)配置特定的PC機環(huán)境。</p><p> 嵌入式系統(tǒng)主要是面向應用的,是一個片上系統(tǒng),因此它的體積是很小的,包括它的RAM和ROM都是有限的,這就決定了嵌入式系統(tǒng)的調(diào)試不能直接在嵌入式系統(tǒng)
61、上調(diào)試,而要采取一種交叉編譯環(huán)境的方式,也就是“目標機和宿主機”交叉編譯的方式,如圖4.1所示[19]。</p><p> 圖3.1 uClinux的交叉編譯環(huán)境</p><p> 目標機主要用于運行操作系統(tǒng)和系統(tǒng)應用軟件,而操作系統(tǒng)的內(nèi)核編譯、應用程序的開發(fā)和調(diào)試則需要通過宿主PC機來完成。雙方之間通過串口進行通訊。目標機運行uClinux系統(tǒng),并在系統(tǒng)上運行嵌入式應用軟件。運行操
62、作系統(tǒng)時,首先要將定制的操作系統(tǒng)進行編譯,這是一個繁瑣復雜的過程,編譯通過后,進行應用程序的設計開發(fā)。上面已經(jīng)提到,嵌入式系統(tǒng)由于資源有限,這些工作的安裝調(diào)試需要在目標機進行,調(diào)試完成后下載到宿主機中,這也可能是一個多次重復反復進行的工作。目標機需要安裝LINUX系統(tǒng),為了在Windows下開發(fā)嵌入式操作系統(tǒng)應用程序,可以在Windows環(huán)境下裝上Cygwin軟件。</p><p> 建立PC上的開發(fā)環(huán)境應在宿
63、主機上安裝標準Linux操作系統(tǒng),推薦使用RedHat Linux,一定要確保計算機的網(wǎng)卡驅(qū)動、網(wǎng)絡通訊配置正常。 </p><p> ARM開發(fā)環(huán)境的建立</p><p> 1991年ARM公司成立于英國劍橋,主要出售芯片設計技術(shù)的授權(quán)。目前,采用ARM技術(shù)知識產(chǎn)權(quán)(IP)核的微處理器,即人們通常所說的ARM微處理器,已遍及工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡系統(tǒng)、無線系統(tǒng)等各類
64、產(chǎn)品市場,基于ARM技術(shù)的微處理器應用約占據(jù)了32位RISC微處理器75%以上的市場份額,ARM技術(shù)正在逐步滲入到人們生活的各個方面。</p><p> ARM公司是專門從事基于RISC技術(shù)芯片設計開發(fā)的公司,作為知識產(chǎn)權(quán)供應商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設計許可由合作公司生產(chǎn)各具特色的芯片,世界各大半導體生產(chǎn)商從ARM公司購買其設計的ARM微處理器核,根據(jù)各自不同的應用領域,加入適當?shù)耐鈬娐?,從而形成?/p>
65、己的ARM微處理器芯片進入市場。</p><p> 采用RISC架構(gòu)的ARM微處理器一般具有如下特點:</p><p> ?。?)體積小、低功耗、低成本、高性能;</p><p> ?。?)支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;</p><p> (3)大量使用寄存器,指令執(zhí)行速度更快;<
66、/p><p> ?。?)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;</p><p> ?。?)尋址方式靈活簡單,執(zhí)行效率高;</p><p> ?。?)指令長度固定。</p><p> ARM7TDMI具有32位ARM指令集和16位Thumb指令集。ARM指令集效率高,但是代碼密度高。Thumb指令集具有較高的代碼密度,卻仍然保持著ARM大多數(shù)性能上的優(yōu)
67、勢,它是ARM的子集。所有的ARM置零都是可以條件執(zhí)行的,而Thumb置零僅有一條指令具備條件執(zhí)行的功能。</p><p> ARM和Thumb程序可以相互調(diào)用,相互之間狀態(tài)切換開銷幾乎為零。尋址方式是根據(jù)指令中給出的地址碼字段來實現(xiàn)尋找真實操作數(shù)地址的方式。ARM處理器具有9種基本尋址方式:</p><p><b> ?。?)寄存器尋址;</b></p>
68、;<p> (2)立即尋址;(3)寄存器移位尋址;</p><p> ?。?)寄存器間接尋址;</p><p> ?。?)基址尋址; </p><p> ?。?)多寄存器尋址;(7)堆棧尋址;</p><p> ?。?)塊拷貝尋址;(9)相對尋址。</p><p> 設計采
69、用SmartARM2200開發(fā)板,使用NXP公司的LPC2210微處</p><p> 理器。LPC2210基于ARM7TDMI內(nèi)核,系統(tǒng)時鐘頻率達60 MHz,總線對外開放,寬度可配置為8/16/32位。同時還擴展了RTL8019AS(10 Mb/s)以太網(wǎng)控制器。</p><p> 圖3.2 SmartARM開發(fā)板</p><p> 論文的設計以Smar
70、tARM進行,如圖3.2所示。所以對開發(fā)板上要做的操作是接上JTAG,串口,網(wǎng)絡線,并且BOOTSET 設置為outside,設置Bank0為FLASH,Bank1設置為RAM,接通應用的模塊的跳線,然后把已經(jīng)編譯成功的系統(tǒng)內(nèi)核文件系統(tǒng)燒入到開發(fā)板上,成功建立開發(fā)環(huán)境后,并啟動開發(fā)板上的uClinux 操作系統(tǒng),如圖3.3所示:</p><p> 圖3.3 開發(fā)板上成功啟動uClinux</p>
71、<p> 建立程序運行調(diào)試交叉編譯環(huán)境</p><p> 由于uClinux及它的相關開發(fā)工具集大多都是來自自由軟件組織的開放源代碼,這些軟件都是共享在網(wǎng)絡上的,因此,在建立開發(fā)環(huán)境的時候,直接找到相關的網(wǎng)絡地址進行下載,接下來就可以建立交叉開發(fā)環(huán)境。</p><p> 從網(wǎng)站http://www.uClinux.org 上下載最新的arm-elf-gcc 工具,即腳本文件
72、arm-elf-tools-20040427.sh,在宿主機上安裝該工具鏈,在該文件所在目錄下,鍵入一下指令:</p><p> #ls-l arm-elf-tools-20040427.sh</p><p> 等待指令的執(zhí)行,完成后在路徑://usr/local/bin/下有:gcc, arm-elf-gcc,binudls, genromfs,flthdr和elflflt等各種應用
73、工具。</p><p><b> 模塊化的設計與分析</b></p><p><b> 開發(fā)板上完成的設計</b></p><p> 從項目的整體出發(fā),開發(fā)板上應完成的工作包括,移植uClinux到SmartARM2200開發(fā)板,移植過程中應配置uClinux,其中包含大部分系統(tǒng)配置,如:Non-standard s
74、erial port suppor(非標準串口支持)、ftp(文件傳輸協(xié)議)、http(超文本傳輸協(xié)議)、telnet(遠程登陸協(xié)議)、ping(網(wǎng)絡探測回應工具)、 ifconfig(網(wǎng)絡配置模塊)、ls(文件目錄顯示模塊)、mount(設備掛載模塊)、cp(文件拷貝模塊),uClinux文件系統(tǒng)的劃分中還應為用戶留出可以讀寫操作的區(qū)域,幫助用戶輕松的寫入程序和修改程序,最后開發(fā)板上載入編譯好的網(wǎng)絡socket通信程序[20]。<
75、;/p><p> PC機上完成的程序開發(fā)</p><p> 首先PC機上要安裝完整的Linux操作系統(tǒng),然后配置好交叉編譯環(huán)境后,接下來就是是對程序的初步設計,程序一共分為兩個大的部分:</p><p> ?。?)TCP的客戶端程序設計</p><p> TCP的客戶端可以輕松的訪問服務器端,向它發(fā)送連接請求,并且客戶端也可以接收到來自服務
76、器端發(fā)送回來的數(shù)據(jù)。TCP的客戶端可以顯示當前自己的工作狀態(tài),如連接的建立,啟動的成功和數(shù)據(jù)包通信的個數(shù)等[21]。</p><p> (2)TCP 的服務器端程序設計</p><p> TCP 的服務器端可以輕松的完成對客戶端數(shù)據(jù)的發(fā)送,服務器端可以快速的做出客戶端的連接請求反映,并且在服務器端可以輕松的反映來自客戶端的連接情況,如連接的IP、連接時間、連接的當前狀態(tài)等。</p
77、><p> 系統(tǒng)的實現(xiàn),首先應保證uClinux系統(tǒng)成功的啟動,即系統(tǒng)在啟動過程中成功的初始化了文件系統(tǒng),網(wǎng)絡設備硬件,串行設備硬件等,同時需要成功配置當前網(wǎng)絡段的IP,以及掛載了所指定的網(wǎng)絡設備文件。最后,要保證開發(fā)板和宿主機的網(wǎng)絡連通,即可以用ping 程序來測試雙方的活躍,這樣就可以同時運行服務器和客戶端的程序。 </p><p><b> 設計基本流程</b>
78、</p><p> 設計主要的目的是要設計出面向連接的TCP通信模塊。Socket類為網(wǎng)絡通訊提供了一種方式。面向連接的數(shù)據(jù)流通信的socket編程詳細過程如圖3.4所示。</p><p> 圖3.4程序設計詳細圖解</p><p> Socket接口是TCP/IP網(wǎng)絡的API,Socket接口定義函數(shù)和例程。網(wǎng)絡的Socket數(shù)據(jù)傳輸是一種特殊的I/O,So
79、cket也是一種文件描述符,具有一個打開文件的函數(shù)調(diào)用Socket(),該函數(shù)返回一個整型的Socket描述符,隨后的連接建立、數(shù)據(jù)傳輸?shù)炔僮鞫际峭ㄟ^該Socket實現(xiàn)的。</p><p> 常用的Socket類型有兩種[22]:流式Socket(SOCK_STREAM)和數(shù)據(jù)報式Socket(SOCK_DGRAM)。流式主要面向連接Socket,針對于面向連接的TCP服務應用;數(shù)據(jù)報式面向無連接的Socket
80、,對應于無連接的UDP服務應用。 </p><p> 使用socket的數(shù)據(jù)流進行通信。應該首先在服務器端使用socket()函數(shù)建立一個通信的端點,然后使用bind()函數(shù)綁定這個端點的地址,最后服務器端使用listen()偵聽連接請求,當遠程的客戶機使用connect()連接listen()正在監(jiān)聽的端口時,使用accept()處理它。在accept()處理了連接請求后,將會生成一個新的描述這個連接端口的套
81、接字,利用這個套接字就可以發(fā)送和接收數(shù)據(jù)了。如果listen()一直沒有偵聽到連接請求,那么服務器就會在accept()處阻塞,一直到有連接請求到來。</p><p> 對于客戶機任務來說,它也需要先用socket()建立一個通信端口,但是它不必用bind()把他的本地地址綁定到這個端口上,而是直接使用connect()向指定的服務器發(fā)送連接請求,如果請求被接受,就可以進行通信了。</p><
82、;p><b> 系統(tǒng)詳細設計</b></p><p> uClinux的移植</p><p> uClinux嵌入式系統(tǒng)的下載</p><p> 嵌入式系統(tǒng)交叉編譯完成后,需要將編譯好的嵌入式內(nèi)核下載到嵌入式開發(fā)板上,然后嵌入式開發(fā)板才可以運行嵌入式內(nèi)核。嵌入式開發(fā)板按照以下兩種方式進行加載:</p><p&g
83、t; ?。?)直接將編譯好的內(nèi)核下載到嵌入式存貯器中。由于嵌入式開發(fā)板的資源有限,存貯器的容量不夠大,這種方式對系統(tǒng)的存貯器要求較高,但是能夠帶來更高的運行速度,因為系統(tǒng)只直接從嵌入式開發(fā)板上啟動的,系統(tǒng)直接解壓縮內(nèi)核文件,運行內(nèi)核。設計中采用這種方式[23]。</p><p> (2)通過地址印象的方式:由于嵌入式系統(tǒng)的存貯器有限,為了節(jié)約資源,在嵌入式存貯器上建立地址印象,內(nèi)核在執(zhí)行的時候,首先運行到建立印
84、象的地址,然后通過跳轉(zhuǎn)指令,直接運行存儲在嵌入式開發(fā)板外圍的存貯器上,這樣可以節(jié)約芯片上的資源,但是帶來的問題是,由于跳轉(zhuǎn),運行的速度會降低,對于運行速度要求不高的開發(fā),可以采取這種方式。</p><p><b> 根文件系統(tǒng)的建立 </b></p><p> 內(nèi)核移植完成后,需要建立嵌入式的根文件系統(tǒng),根文件是嵌入式系統(tǒng)重要組成部分。uClinux主要應用于沒有
85、MMU單元的嵌入式芯片,主要的目的是節(jié)約內(nèi)存和FLASH。根據(jù)使用場合的不同,根文件系統(tǒng)也有多種選擇。在目前的嵌入式開發(fā)過程中,ROMfs是使用最多的文件系統(tǒng)。</p><p> ROMfs文件系統(tǒng)比較簡單,文功能緊湊,并且是只讀的。在ROMfs中,文件數(shù)據(jù)是按照順尋存放的。uClinux系統(tǒng)可以直接運行,這樣做的最大的優(yōu)勢是節(jié)約RAM空間,提高運行速度。因此,根據(jù)系統(tǒng)的設計需求,選用ROMfs根文件系統(tǒng)。當然
86、,為了支持它,在內(nèi)核的配置中需要內(nèi)核支持romfs 文件系統(tǒng),并且在內(nèi)核配置完畢后建立虛擬ram盤,提供用戶接口。</p><p><b> 應用程序庫</b></p><p> uClinux運行效率高,是一個小型化的嵌入式Linux系統(tǒng),這就要求相應的應用程序庫具有較高的運行效率。glibc是gnu發(fā)布的libc庫,主要是基于C語言的,這個庫較大而且比較全面,
87、不適應uClinux。因此需要進行相應的簡化,這就是uClibc應用程序庫。在uClinux中,采取靜態(tài)連接,目的是為了節(jié)約內(nèi)存和片上資源,滿足嵌入式系統(tǒng)的設計需要。</p><p><b> 內(nèi)核編譯</b></p><p> 嵌入式系統(tǒng)應用非常專業(yè)化,功能模塊相對比較單一。隨著uClinux內(nèi)核版本的升級,內(nèi)核功能越來越強大,體系結(jié)構(gòu)也越來越復雜。由于存儲空間
88、的限制,為了提高運行性能,必須根據(jù)需要對內(nèi)核進行精簡,定制一個符合嵌入式系統(tǒng)的操作平臺。</p><p> uClinux可以通過裁剪,把不需要的功能模塊剪掉,留下應用需要的模塊,減少系統(tǒng)運行的復雜想,讓系統(tǒng)更加健壯和安全。同時,嵌入式芯片的資源有限,內(nèi)存一般都比較小,裁剪后,內(nèi)核往往會更加簡練,所占用的存貯空間也會很小。</p><p> 由于uClinux的內(nèi)核采取了模塊化的設計方
89、式,設計時可以根據(jù)自己的需要,在內(nèi)核編譯的過程中,靈活選擇所需要的模塊,節(jié)約資源,減少代碼量,提高內(nèi)核的運行速度和效率,這也是嵌入式系統(tǒng)的一個明顯的優(yōu)勢。</p><p> uClinux的安裝</p><p> 在www.Linux.org上下載版本為2.4的uClinux源碼包uClinux-dist-20040408.tar.gz,將它復制到系統(tǒng)的目錄盤下,并進行相應的解壓縮:&
90、lt;/p><p> 輸入指令,并運行:tar uClinux-dist-20040408.tar.gz</p><p> 就會看到,在系統(tǒng)的目錄盤下,會出現(xiàn)uClinux的源代碼目錄,也就是uClinux-dist這個文件夾。</p><p> 由于本系統(tǒng)所用SmartARM2200開發(fā)板,這個開發(fā)板為ARM7的LPC2200芯片,是philips公司設計制造的
91、。為了適應這個芯片的特性,登陸philips官方網(wǎng)站,并且查找和下載以下這個文件:</p><p> uClinux-dist-20040408-1pc-chy-cmj.patch</p><p> 下載后,復制到系統(tǒng)的目錄下,輸入以下指令,并執(zhí)行:</p><p> cat uClinux-dist-20040408-1pc-chy-cmj.patch<
92、;/p><p> 執(zhí)行完成后,在編譯uClinux內(nèi)核是,選擇系統(tǒng)的內(nèi)核配置的時候,可以找到LPC2200的選項。</p><p><b> 配置uClinux</b></p><p> 安裝完成后,可以通過make config,make xconfig來配置uClinux,也可以通過make menuconfig來配置。</p>
93、;<p> 各命令使用范圍不一樣,但效果是相同的,各命令說明如表4.1所示。</p><p> 表4.1 uClinux的配置方式</p><p> 文本菜單這種配置方式,可以在終端控制臺上來使用,也可以通過圖形終端進行使用。為了使得配置具有更強的直觀性,系統(tǒng)設計采用了文本菜單這種配置方式。</p><p> 配置uClinux和文件系統(tǒng)具體的
94、操作方法如下[24]:</p><p> ?。?)通過已經(jīng)建立的終端或者控制臺,找到uClinux源代碼所在的目錄,系統(tǒng)為://usr/src/uClinux-dist ,</p><p> 執(zhí)行命令:cd /usr/src/uClinux-dist</p><p> ?。?)如果不是進行第一次編譯,需要先清除以前編譯產(chǎn)生的輔助文件和目標文件,以保證編譯的正確性。
95、如果是第一次編譯則可省略。</p><p> 執(zhí)行命令:make distclean</p><p> ?。?)通過文本菜單方式配置uClinux</p><p> 執(zhí)行命令:make menuconfig</p><p> 執(zhí)行了make menuconfig語句后,將會出現(xiàn)如圖4.1 配置內(nèi)核界面。</p><p
96、> 圖4.1 配置內(nèi)核界面</p><p> 界面中有提示使用“↑”“↓”選擇配置模塊,使用空格鍵選擇或者取消,使用“→”“←”,選擇命令,最后使用回車鍵Enter執(zhí)行命令。</p><p> 第一項可進行廠商/產(chǎn)品設置,選擇第二項則進行內(nèi)核版本和函數(shù)庫設置,各選項的含義以及設置如表4.2所示。</p><p> 表4.2 uClinux中各個選項的
97、描述</p><p> 在設計的時候,根據(jù)系統(tǒng)需求,以及所選用的芯片廠商等信息,進行系統(tǒng)的配置,主要是根據(jù)以上信息描述,進行設置。進入Linux內(nèi)核配內(nèi)核資源的界面,如圖4.2所示。</p><p> 圖4.2 內(nèi)核資源界面</p><p> 配置完畢后選擇Exit,然后在提示下是否保存的時候選擇保存, 配置完畢后,選擇Exit,在對話提示選擇保存。</
98、p><p> ?。?)建立源代碼文件依賴關系(第一次必須執(zhí)行)</p><p> 執(zhí)行命令:make dep</p><p><b> (5)編譯內(nèi)核</b></p><p> 執(zhí)行命令: make</p><p> 第(4)和第(5)進行內(nèi)核的編譯,執(zhí)行的時間會比較長。執(zhí)行結(jié)束后,會得到我們
99、需要的兩個目錄:ROMfs文件和images內(nèi)核文件。在ROMfs文件中存放嵌入式系統(tǒng)運行所需要的應用程序。Images內(nèi)核文件主要存放那個內(nèi)核目錄。 </p><p> 經(jīng)過以上程序,uClinux的內(nèi)核編譯全部完成。</p><p><b> 構(gòu)建文件系統(tǒng)</b></p><p> 構(gòu)建文件系統(tǒng)就是在物理設備上構(gòu)建文件組織和目錄,便于
100、系統(tǒng)進行文件的組織和管理,它是uClinux系統(tǒng)處理數(shù)據(jù)的基礎條件。uClinux系統(tǒng)的所有有效數(shù)據(jù),包括用程序、庫、系統(tǒng)文件和用戶文件都按照目錄存放在文件系統(tǒng)中。uClinux系統(tǒng)的文件系統(tǒng),在組織上按照樹狀結(jié)構(gòu)的方式進行組織,也就是頂部是根目錄,從根向下進行分支,通常把文件系統(tǒng)的最頂端成為根目錄。uClinux系統(tǒng)通常只有一個文件樹,這個文件樹以樹根“/”作為起點,其它的文件和外部設備按照樹的形式,掛結(jié)在這個文件樹上[25]。uCl
101、inux根目錄下可以見到以下結(jié)構(gòu):</p><p><b> /bin</b></p><p><b> /home</b></p><p><b> /etc</b></p><p><b> /mnt</b></p><p&
102、gt; /lost+found</p><p> /tmp /dev</p><p> /sbin /var /boot /root</p><p> /lib /proc /usr</p><p> 設計中選擇的ROMFS文件系統(tǒng),主要是考慮到系統(tǒng)的存貯結(jié)構(gòu)。因為這種文件系統(tǒng)的內(nèi)核比較小,通常情況下只有4000字節(jié)左右,可以
103、有效的節(jié)約系統(tǒng)的資源。內(nèi)核在連接的時候,只需要連接到ROMFS文件系統(tǒng),后面用模塊裝載工具把其它相關的模塊和文件系統(tǒng)裝載進來,而不是所有的文件和模塊全部掛接。 </p><p> ROMFS文件系統(tǒng)的底層結(jié)構(gòu)也是非常的簡單,也可以用來進行塊設備的操作。ROMFS文件系統(tǒng)的構(gòu)成,它的文件系統(tǒng)頭由16字節(jié)組成,文件系統(tǒng)名由4字節(jié)組成,文件系統(tǒng)的大由4字節(jié)組成,其次還有4字節(jié)的校驗和4字節(jié)的卷標名。然后就是文件的頭和
104、數(shù)據(jù)了,文件頭也是由16字節(jié)組成,開始的是文件模式信息,通常占用4比特的,后面的28比特,是這樣分配的:4字節(jié)為下后一個文件的地址偏移量,4字節(jié)為文件的鏈接信息、4字節(jié)為文件大小、4字節(jié)為文件的校驗和。從后面的第16字節(jié)開始,顯示的是文件名和相關其數(shù)據(jù)[26]。</p><p> ROMFS是一種只讀的文件系統(tǒng),由于它是只讀的,就決定了這個文件系統(tǒng)是非常小的。如果設計中需要一種可寫的文件系統(tǒng),那么,就需要尋找一
105、種可以在RAM上使用的可寫文件系統(tǒng)。在設計中,根據(jù)需要選擇了RAMFS文件系統(tǒng),這種文件系統(tǒng)可以用于RAMDISK文件系統(tǒng)的寫操作,它與CRAMFS的結(jié)合可以適合大多數(shù)嵌入式系統(tǒng)的需求。制作ramdisk具體步驟如下[27]:</p><p> 一般在內(nèi)核編譯時,支持ramdisk的內(nèi)核選項:CONFIG BLK DEV RAM,CONFIG RD RELEASE BLOCKS, CONFIG BLK DEV
106、IlVITRD:同時在PC機上按照如下的方法來制作:</p><p><b> ?。?)制作映象文件</b></p><p> 建立虛擬成塊的文件init.img</p><p> 執(zhí)行命令:#dd if=/dev/zero of=init.img bs=1024 count=500</p><p> 格式化生成的
107、塊設備:init.img文件</p><p> 執(zhí)行命令:#mke2fs –m0 –F init.img</p><p> ?。?)配置根文件系統(tǒng),將ini.img和fomfs.img加載到主機文件系統(tǒng)</p><p> 執(zhí)行命令:#mount init.img ram /-o loop</p><p> 執(zhí)行命令:#mount rom
108、fs.img rom/-o loop</p><p> 建立在ramfs中需要的目錄,也就是在ram目錄下建立子目錄。</p><p> 執(zhí)行命令:#mkdir ram/bin</p><p> 執(zhí)行命令:#mkdir ram/dev</p><p> 執(zhí)行命令:#mkdir ram/etc</p><p>
109、 執(zhí)行命令:#mkdir ram/var</p><p> 拷貝必須的文件到ramfs中</p><p> 執(zhí)行命令:#cp –a rom/etc/* ram/etc/</p><p> 執(zhí)行命令:#cp –a rom/bin/sh ram/bin/</p><p> 執(zhí)行命令:#cp –a rom/bin/init ram/bin/
110、int</p><p><b> 創(chuàng)建設備節(jié)點:</b></p><p> 執(zhí)行命令:# mknod ram/dev/ttS0 c 4 64</p><p> 執(zhí)行命令:# mknod ram/dev/console c 51</p><p> 執(zhí)行指令的說明:第一條指令創(chuàng)建設備ttyS0,即第0個串口設備,&l
111、t;/p><p> 主設備的號為4,從設備的號為64,第二條指令是建立字符設備console,即控制臺,主設備號為5從設備號為1。</p><p> 最后卸載init.img和romfs.img.確保 init.img的修改已經(jīng)保存。</p><p> 執(zhí)行命令:# umount ram</p><p> 執(zhí)行命令:# umount ro
112、m</p><p> 到此RAM DISK制作完畢。</p><p> 內(nèi)核編譯和文件系統(tǒng)構(gòu)建完成以后通過網(wǎng)絡FTP的方式把Linux.bin和ramdis下載到開發(fā)板上,這樣完成了uClinux的移植。</p><p><b> PC機上的程序設計</b></p><p> 嵌入式TCP /IP分析 </
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于ARM嵌入式系統(tǒng)的Socket通信設計.pdf
- 嵌入式畢業(yè)設計論文基于arm的嵌入式gui點菜系統(tǒng)
- 基于arm的嵌入式_網(wǎng)絡視頻監(jiān)控系統(tǒng)設計與實現(xiàn)畢業(yè)設計
- 基于arm的嵌入式智能家居遠程監(jiān)控系統(tǒng)設計畢業(yè)設計
- 基于arm9嵌入式網(wǎng)關研究畢業(yè)設計
- 基于arm和linux的嵌入式數(shù)碼相框系統(tǒng)設計-畢業(yè)設計論文
- 畢業(yè)設計--基于嵌入式系統(tǒng)的井下智能通信分站的研究
- 基于ARM的嵌入式系統(tǒng)移植設計.pdf
- 數(shù)碼相框畢業(yè)設計論文--基于arm和linux的嵌入式數(shù)碼相框系統(tǒng)設計
- 基于ARM的MVB通信系統(tǒng)嵌入式VCU的設計與實現(xiàn).pdf
- arm嵌入式系統(tǒng)課程設計-基于嵌入式系統(tǒng)的煙氣檢測監(jiān)控系統(tǒng)
- 基于ARM的嵌入式系統(tǒng)硬件設計.pdf
- 電子專業(yè)畢業(yè)設計外文翻譯--基于arm的嵌入式系統(tǒng)的速成樣機平臺設計
- 畢業(yè)論文--基于arm的嵌入式車燈檢測系統(tǒng)設計
- 基于arm嵌入式的以太網(wǎng)通信程序設計
- 基于arm嵌入式系統(tǒng)的交通燈設計
- 畢業(yè)設計----基于arm9嵌入式視頻播放的設計與實現(xiàn)
- 嵌入式課程設計--基于arm嵌入式圖像處理系統(tǒng)設計與實現(xiàn)
- 基于arm嵌入式系統(tǒng)的無線數(shù)據(jù)采系統(tǒng)設計
- 基于ARM的嵌入式USB主機系統(tǒng)設計.pdf
評論
0/150
提交評論