版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第2講嵌入式Linux開發(fā)環(huán)境的搭建一
、系統(tǒng)概述1、系統(tǒng)需求2、軟件開發(fā)環(huán)境概述1、系統(tǒng)需求1.1系統(tǒng)硬件IBM-PC兼容機,CPU主頻在2.5G以上內(nèi)存2GB以上硬盤有大于60GB的空閑存儲空間DVD光盤驅動器通用RS-232串口,COM1空閑USB插座以太網(wǎng)接口,10/100M自適應聲卡及音頻LineOut接口顯示設備:工作模式為1024x768x32bits以上1、系統(tǒng)需求1.2系統(tǒng)軟件操作系統(tǒng):WindowsXP簡體中文版(SP3)通用網(wǎng)頁瀏覽器超級終端軟件PDF閱讀軟件1、系統(tǒng)需求1.3配套設施外部環(huán)境以太網(wǎng)連接;系統(tǒng)供電采用穩(wěn)定的多路220VAC電源;電源有良好接地條件;各設備間電源共地、外殼接地。2、軟件開發(fā)環(huán)境概述
我們需要構建的是一套較為完備的軟件開發(fā)環(huán)境。當按照系統(tǒng)安裝步驟完成后,用戶就可以立即開始進行應用開發(fā)工作。開發(fā)環(huán)境以一臺操作系統(tǒng)為WindowsXP簡體中文版的主機作為基本平臺,進行開發(fā)操作和測試。2、軟件開發(fā)環(huán)境概述
嵌入式ARM系統(tǒng)的軟件開發(fā)環(huán)境大致由以下幾部分組成(允許軟件版本更高):運行在WindowsXP簡體中文操作系統(tǒng)環(huán)境下的虛擬機軟件:VirtualBox3.2.12運行在WindowsXP簡體中文操作系統(tǒng)環(huán)境下的超級終端程序運行在虛擬機中的Linux簡體中文操作系統(tǒng):UbuntuV10.04運行在uBuntu中的ARM交叉編譯器嵌入式系統(tǒng)的系統(tǒng)源程序(XLoader、UBoot、Linux內(nèi)核、文件系統(tǒng))2、軟件開發(fā)環(huán)境概述采用上述開發(fā)軟件環(huán)境的理由:WindowsXP:普及、易操作、網(wǎng)絡連接簡單、資源豐富、軟件工具多、配置功能靈活。VirtualBox虛擬機:開源、免費;有穩(wěn)定、實力強的固定公司維護,不斷升級;功能強大、易用;流行、市場份額逐漸擴大,有發(fā)展性前途。Ubuntu:開源、免費;有穩(wěn)定、實力強的固定公司維護,不斷升級;功能強大、易用;流行、市場份額逐漸擴大,有發(fā)展性前途;開始在嵌入式系統(tǒng)中采用。2、軟件開發(fā)環(huán)境概述采用上述開發(fā)軟件環(huán)境的理由:Windows+虛擬機的開發(fā)環(huán)境:Windows和虛擬機中的Linux可靈活地交換數(shù)據(jù),可同時發(fā)揮各自優(yōu)點。ICETEK-XDS560USB:速度快、使用方便,可在便攜機上使用,支持TI全系列DSP芯片。采用統(tǒng)一的開發(fā)系統(tǒng)環(huán)境有利于用戶相互交流運用成果、減少系統(tǒng)差異造成的不必要麻煩,同時也便于公司提供相關的軟件技術支持,收到更好的效果。二、Linux開發(fā)主機的構建1、準備虛擬機環(huán)境1、準備虛擬機環(huán)境(1)確認互聯(lián)網(wǎng)連接
請確認Windows能正確連接互聯(lián)網(wǎng),本文以后的操作中假設Windows使用的IP地址為00(實際可能與此不符合,請記下當前的具體配置在下面的操作中對照運用)。(2)下載最新虛擬機軟件2.1VirtualBox
請訪問/網(wǎng)站并下載最新的穩(wěn)定版VirtualBox,現(xiàn)在我們假設使用版本為2.1.0。2.2Ubuntu請訪問/網(wǎng)站并下載最新的穩(wěn)定版Ubuntu,現(xiàn)在我們假設使用版本為804。請選擇DesktopEdition版并下載,或在網(wǎng)上申請免費的安裝版光盤。1、準備虛擬機環(huán)境(3)安裝虛擬機VirtualBox安裝完畢后請將虛擬機啟動的快捷方式復制到Windows的桌面上,以便今后經(jīng)常使用。(4)安裝Ubuntu啟動虛擬機,在虛擬機窗口中建立虛擬機Ubuntu,并在其中選用Ubuntu安裝光盤映像(或實際光盤)后啟動虛擬機Ubuntu進行安裝。安裝完成后需要進行一些必要的設置,比如中文環(huán)境、輸入法、顯示分辨率調(diào)整、網(wǎng)絡設置等等。在Ubuntu系統(tǒng)桌面上建立兩個圖標:終端和根用戶文件瀏覽器以方便使用。三、嵌入式交叉編譯環(huán)境的構建1、交叉編譯工具鏈介紹2、構建ARMLinux交叉編譯工具鏈1、交叉編譯工具鏈介紹
交叉編譯---在一種平臺上編譯出能運行在體系結構不同的另一種平臺下的程序,比如在PC平臺(x86CPU)上編譯出能運行在以ARM為內(nèi)核的CPU平臺的的程序,編譯得到的程序在x86CPU平臺上是不能運行的,必須放到ARMCPU平臺上才能運行,雖然兩個平臺用的都是Linux系統(tǒng)。這種方法在異平臺移植和嵌入式開發(fā)時非常有用。相對與交叉編譯,平常做的編譯叫本地編譯,也就是在當前平臺編譯,編譯得到的程序也是在本地執(zhí)行。用來編譯這種跨平臺程序的編譯器就叫交叉編澤器,相對來說,用來做本地編譯的工具就叫本地編譯器。所以要生成在目標機上運行的程序,必須要用交叉編譯工具鏈來完成。在裁減和定制Linux內(nèi)核用于嵌入式系統(tǒng)之前,由于一般嵌入式開發(fā)系統(tǒng)存儲大小有限,通常都要在性能優(yōu)越的PC上建立一個用于目標機的交叉編譯工具鏈,用該交叉編譯工具鏈在PC上編譯目標機上要運行的程序。交叉編譯工具鏈是一個由編譯器、連接器和解釋器細成的綜合開發(fā)環(huán)境,交叉編譯工具鏈主要由binutils、gcc和glibc三個部分組成。有時出于減小libc庫大小的考慮,也可以用別的c庫來代替glibc。2、構建ARMLinux交叉編譯工具鏈
構建交叉編譯器的第—個步驟就是確定目標平臺。在GNU系統(tǒng)中,每個目標平臺都有—個明確的格式,這些信息用于在構建過程中識別要使用的不同工具的正確版本。因此,當在一個特定目標機下運行GCC時,GCC便在目錄路徑中查找包含該目標規(guī)范的應用程序路徑。GNU的目標規(guī)范格式為CPU-PLATFORM-OS。例如x86/i386目標機名為i686-pc-linux-gnu。本章的目的是講述建立基于ARM平臺的交叉工具鏈,所以目標平臺名為arm-linux-gnu。2、構建ARMLinux交叉編譯工具鏈通常構建交叉工具鏈有3種方法:方法一分步編譯和安裝交叉編譯工具鏈所需要的庫和源代碼,最終生成交叉編譯工具鏈。該方法相對比較困難,適合想深入學習構建交又工具鏈的讀者。如果只是想使用交叉工具鏈;建議使用方法二或方法三構建交叉工具鏈。方法二通過Crosstool腳本工具來實現(xiàn)一次編譯生成交叉編譯工具鏈,該方法相對于方法一要簡單許多,并且出錯的機會也非常少,建議大多數(shù)情況下使用該方法構建交又編譯工具鏈。方法三直接通過網(wǎng)上(.uk)下載已經(jīng)制作好的交叉編譯工具鏈。該方法的優(yōu)點不用多說,當然是簡單省事,但與此同時該方法有一定的弊端就是局限性太大,因為畢竟是別人構建好的,也就是固定的沒有靈活性,所以構建所用的庫以及編譯器的版本也許并不適合你要編譯的程序,同時也許會在使用時出現(xiàn)許多莫名的錯誤,建議慎用此方法。2、構建ARMLinux交叉編譯工具鏈下面將重點詳細地介紹前兩種構建ARMLinux交叉編澤工具鏈的方法。2.1分布建交叉編譯鏈
2.1.1建立工作目錄
首先建立工作目錄,工作目錄就是在什么目錄下構建交叉工具鏈,目錄的構建一般沒有特別的要求,可以根據(jù)個人喜好建立。以下所建立的目錄是作者自定義的,當前的用戶定義為mike,因此用戶目錄為/home/mike,在用戶目錄下首先建立一個上作目錄(armlinux),再在這個工作目錄armlinux下建立3個目錄build-tools、kernel和tools。其中各目錄的作用:build-tools存放下載的binutils、gcc、glibc等源代碼和用來編譯這些源碼的目錄。kernel存放內(nèi)核源代碼。tools存放編譯好的交叉編譯工具和庫文件。2、構建ARMLinux交叉編譯工具鏈2.1.2建立環(huán)境變量
該步驟的目的是為了方便重復輸入路徑,因為重復操作每件相同的事情總會讓人覺得很麻煩,如果讀者不習慣使用環(huán)境變量就可以略過該步,直接輸入絕對路徑就可以。聲明以下環(huán)境變量的目的是在之后編譯工具庫的時候會用到,很方便輸入,尤其是可以降低輸錯路徑的風險。
注意,用export聲明的變量是臨時的變量,也就是當注銷或更換了控制臺,這些環(huán)境變量就消失了,如果還需要使用這些環(huán)境變量就必須重復export操作,所以有時會很麻煩。值得慶幸的是,環(huán)境變量也可以定義在bashrc文件中,這樣當注銷或更換控制臺時,這些變量就一直有效,就不用老是export這些變量了。2、構建ARMLinux交叉編譯工具鏈2.1.3編譯、安裝BinutisBinutils是GNU工具之一,它包括連接器、匯編器和其他用于目標文件和檔案的工具,它是二進制代碼的處理維護工具。安裝Binutils工具包含的程序有addr2line、ar、as、c++filt、gprof、ld、nm、Objcopy、Objdump、ranlib、readelf、size、strings、Strip、libiberty、libbfd和libopcodes。對這些程序的簡單解釋如下。addr2line把程序地址轉換為文件名和行號。在命令行中給它一個地址和一個可執(zhí)行文件名,它就會使用這個可執(zhí)行文件的調(diào)試信息指出在給出的地址上是哪個文件以及行號。ar建立、修改、提取歸檔丈件。歸檔文件是包含多個文件內(nèi)容的一個大文件,其結構保證了可以恢復原始文件內(nèi)容。as主要用來編譯GNUC編譯器gcc輸出的匯編文件,產(chǎn)生的目標文件由連接器ld連接。2、構建ARMLinux交叉編譯工具鏈c++filt連接器使用它來過濾C++和Java符號,防止重載函數(shù)沖突。gprof顯示程序調(diào)用段的各種數(shù)據(jù)。ld連接器,它把一些目標和歸檔文件結合在一起,重定位數(shù)據(jù),并連接符號引用。通常,建立一個新編譯程序的最后一步就是調(diào)用ld。nm列出目標文件中的符號。objcopy把一種目標文件中的內(nèi)容復制到另一種類型的目標文件中。objdump顯示一個或者更多目標文件的信息。使用選項來控制其顯示的信息,它所顯示的信息通常只有編寫編譯工具的人才感興趣。ranlib產(chǎn)生歸檔文件索引,并將其保存到這個歸檔文件中。在索引中列出了歸檔文件各成員所定義的可重分配目標文件。readelf顯示elf格式可執(zhí)行文件的信息。size列出目標文件每一段的大小以及總體的大小。默認情況下,對于每個目標文件或者一個歸檔文件中的每個模塊只產(chǎn)生一行輸出。2、構建ARMLinux交叉編譯工具鏈strings打印某個文件的可打印字符串,這些字符串最少4個字符長,也可以使用選項-n設置字符串的最小長度。默認情況下,它只打印目標文件初始化和可加載段中的可打印字符;對于其他類型的文件它打印整個文件的可打印字符。這個程序對于了解非文本文件的內(nèi)容很有幫助。strip丟棄目標文件中的全部或者特定符號。libiberty包含許多GNU程序都會用到的函數(shù),這些程序有getopt、obstack、strerror、strtol和strtoul。libbfd二進制文件描述庫。libopcode用來處理opcodes的庫,在生成一些應用程序的時候也會用到它。Binutils工具安裝依賴于Bash、Coreutils、Diffutils、GCC、Gettext、G1ibc、Grep、Make、Perl、Sed、Texinfo等工具。2、構建ARMLinux交叉編譯工具鏈下面將分步介紹安裝binutils-2.15的過程。1、首先解壓binutils-2.15.ta.bz2包;2、接著配置Binutils工具,建議建立一個新的目錄用來存放配置和編譯文件,這樣可以使源文件和編譯文件獨立開;3、最后產(chǎn)生Makefile文件。接下來執(zhí)行make和安裝操作。安裝完成后查看/home/mike/armlinux/tools/bin目錄下的文件2、構建ARMLinux交叉編譯工具鏈2.1.4獲得內(nèi)核頭文件
編譯器需要通過系統(tǒng)內(nèi)核的頭文件來獲得目標平臺所支持的系統(tǒng)函數(shù)調(diào)用所需同要的信息。對于Linux內(nèi)核,最好的方法是下載一個合適的內(nèi)核,然后復制獲得頭文件。需要對內(nèi)核做一個基本的配置來生成正確的頭文件;不過,不需要編譯內(nèi)核。2.1.5編譯安裝boot-trapgcc
這一步的目的主要是建立arm-linux-gcc工具,注意這個gcc沒有glibc庫的支持,所以只能用于編譯內(nèi)核、BootLoader等不需要C庫支持的程序,后面創(chuàng)建C庫也要用到這個編譯器,所以創(chuàng)建它主要是為創(chuàng)建C庫做準備,如果只想編譯內(nèi)核和BootLoader,那么安裝完這個就可以到此結束。2、構建ARMLinux交叉編譯工具鏈2.1.6建立glibc庫Glibc是GUNC庫,它是編譯Linux系統(tǒng)程序很重要的組成部分。安裝glibc-2.3.2版本之前推薦先安裝以下的工具:GNUmake3.79或更新;GCC3.2或更新;GNUbinutils2.13或更新。2.1.7編譯安裝完整的gcc
由于第一次安裝的gcc沒有交叉glibc的支持,現(xiàn)在已經(jīng)安裝了glibc,所以需要重新編譯來支持交叉glibc。并且上面的gcc也只支持C語言,現(xiàn)在可以讓它同時支持C語言還要和C++語言。2.1.8測試交叉編譯工具鏈2、構建ARMLinux交叉編譯工具鏈2.2用Crosstool工具交叉工具鏈安裝包下載地址crosstool-0.42.tar.gz/crosstoollinux-2.6.10.tar.gzbinutils-2.15.tar.bz2gcc-3.3.6.tar.gzglibc-2.3.2.tar.gzglibc-linuxthreads-2.3.2.tar.gzlinux-libc-headers-.tar.bz2
Crosstool是一組腳本工具集,可構建和測試不同版本的gcc和glibc,用于那些支持glibc的體系結構。它也是一個開源項目,下載地址是/crosstool。用Crosstool構建交叉工具鏈要比上述的分步編譯容易得多,并且也方便許多,對于僅僅為了工作需要構建交叉編譯工具鏈的讀者建議使用此方法。用Crosstool工具構建所需資源如表所示。2、構建ARMLinux交叉編譯工具鏈2.2.1準備資源文件首先從網(wǎng)上下載所需資源文件linux-2.6.10.tar.gz、binutils-2.15.tar.bz2、gcc-3.3.6.tar.gz、glibc-2.3.2.tar.gz、glibc-linuxthreads-2.3.2.tar.gz和linux-libc-headers-.tar.bz2。然后將這些工具包文件放在新建的/home/mike/downloads目錄下,最后在/home/mike目錄下解壓crosstoo1-0.42.tar.gz2.2.2建立腳本文件接著需要建立自己的編譯腳本,起名為arm.sh,為了簡化編寫arm.sh,尋找一個最接近的腳本文件demo-arm.sh作為模板,然后將該腳本的內(nèi)容復制到arm.sh,修改arm.sh腳本2、構建ARMLinux交叉編譯工具鏈2.2.3建立配置文件2.2.4執(zhí)行腳本
將Crosstool的腳本文件和配置文件準備好之后,開始執(zhí)行arm.sh腳本來編譯交義編譯工具,經(jīng)過數(shù)小時的漫長編譯之后,會在/opt/crosstool目錄下生成新的交叉編譯工具。在arm.sh腳本文件中需要注意arm.dar和gcc-3.3.6-glibc-2.3.2.dat兩個文件,這兩個文件是作為Crosstool的編譯的配置文件。其中arm.dat文件內(nèi)容主要用于定義配置文件、定義生成編譯工具鏈的名稱以及定義編譯選項等。gcc-3.3.6-glibc-2.3.2.dat文件主要定義編譯過程中所需要的庫以及它定義的版本,如果在編譯過程中發(fā)現(xiàn)有些庫不存在時,,Crosstool會自動在相關網(wǎng)站上下載,該工具在這點上相對比較智能,也非常有用。2、構建ARMLinux交叉編譯工具鏈2.2.5添加環(huán)境變量
將生成的編譯工具鏈路徑添加到環(huán)境變量PATH上去,添加的方法是在系統(tǒng)/etc/bashrc文件的最后添加下面一行:exportPATH=/opt/crosstool/gcc-3.3.6-glibc-2.3.2/arm-linux/bin:$PATH設置完環(huán)境變量,也就意味著交叉編譯工具鏈已經(jīng)構建完成,然后就可以用上節(jié)中介紹的方法測試剛剛建立的工具鏈
2、構建ARMLinux交叉編譯工具鏈2.3下載安裝預編譯的交叉工具鏈
由于構建交叉編譯工具鏈的過程較為復雜,而且環(huán)節(jié)多,用戶在開發(fā)主機上的配置情況又千差萬別,所以在生成工具鏈的過程中容易產(chǎn)生各種錯誤。這些錯誤排除后,編譯能繼續(xù)進行,但也需要使用者有較為豐富的編譯經(jīng)驗來判斷錯誤類型并選取適當?shù)慕鉀Q方案來排除故障。這對普通的使用者來說要求過高。同時,由于編譯的耗時較長,用戶一旦遇到錯誤干擾時可能缺乏耐心繼續(xù)做下去。為了簡化編譯過程,許多編譯成功的用戶將編譯成功的結果免費放到互聯(lián)網(wǎng)上,供同樣情況的用戶下載使用,從而省去漫長辛苦的編譯過程。這樣用戶可以在下載了這些預編譯的軟件包后就可以直接利用開始使用了,而且這些安裝包可以經(jīng)過較為嚴格的測試,保證其工作的可靠性,一般來說比用戶自編譯生成的工具鏈考慮得更細致和完善。對于開發(fā)主機所采用的各種Linux系統(tǒng)發(fā)行版都有許多現(xiàn)成、可用的工具鏈供下載使用。所以建議客戶在工作中盡量采用那些適用的、已被許多用戶下載應用過的、成熟的編輯工具鏈,這會加快您的開發(fā)進度、少走彎路。四、建立開發(fā)機與嵌入式系統(tǒng)的通信連接1、串口通信2、以太網(wǎng)通信3、與嵌入式系統(tǒng)交換數(shù)據(jù)1、串口通信1.1超級終端
嵌入式系統(tǒng)開發(fā)的程序運行環(huán)境是在硬件開發(fā)板上的,那么如何把開發(fā)板上的信息顯示給開發(fā)人員呢?最常用的就是通過串口線輸出到宿主機的顯示器上。這樣,開發(fā)人員就可以看到系統(tǒng)的運行情況了。在Windows和Linux中都有不少串口通信軟件,可以很方便地對串口進行配置,其中最主要的配置參數(shù)就是波特率、數(shù)據(jù)位、停止位、奇偶校驗位和數(shù)據(jù)流控制位等,但是它們一定要根據(jù)實際情況進行相應配置。首先,打開Windows下的“開始”→“所有程序”→“附件”→“通訊”→“超級終端”,這時會出現(xiàn)右圖所示的新建超級終端界面,請?zhí)顚憙?nèi)容后點擊“確定”按鈕繼續(xù)。1、串口通信
在如右圖顯示的窗口中,新建的位置名稱為“我的位置”,請點擊“確定”按鈕。1、串口通信在“名稱”處可隨意輸入該連接的名稱,然后點擊“確定”按鈕。接下來,將“連接時使用”的方式改為“COM1”,即通過串口1,如圖所示。1、串口通信下面就到了最關鍵的一步——設置串口連接參數(shù)。要注意,每塊開發(fā)板的連接參數(shù)有可能會有差異,其中的具體數(shù)據(jù)在用戶手冊中會有說明。一般應如下圖配置:1、串口通信這樣,就基本完成了配置,最后一步“單擊”確定就可以了。這時,讀者可以把開發(fā)板的串口線和PC機的COM1插座相連(請在嵌入式系統(tǒng)斷電情況下連接),若配置正確,在開發(fā)板上電后在超級終端的窗口里應能顯示類似如下邊圖示的串口信息:1、串口通信1.2MinicomMinicom是Linux操作系統(tǒng)下串口通信的軟件,它的使用完全依靠鍵盤的操作,雖然沒有“超級終端”那么易用,但是使用習慣之后讀者將會體會到它的高效與便利。2、以太網(wǎng)通信在開發(fā)和調(diào)試嵌入式Linux系統(tǒng)的過程中,我們經(jīng)常使用標準串口來與嵌入式系統(tǒng)通信,這是因為串口的結構簡單、控制容易,而且編程也不復雜,在系統(tǒng)中最容易實現(xiàn),但由于串口先天的不足——速度導致在傳輸大量數(shù)據(jù)時耗時過多,串口速度方面的約束在開發(fā)嵌入式系統(tǒng)上是個瓶頸,而且?guī)缀鯚o法克服,導致我們還需要更快速的通信手段來輔助串口進行開發(fā)。我們可用選用也比較通用和常見的以太網(wǎng)接口通信方式,通常它可以達到10M/100M位的通信速率,比串口快速許多。網(wǎng)絡設置由于其重要性,幾乎所有的嵌入式器件都會支持并有現(xiàn)成的網(wǎng)絡應用程序和大量工具,所以在實現(xiàn)上也不成問題。2、以太網(wǎng)通信在開發(fā)和調(diào)試嵌入式Linux系統(tǒng)的過程中,我們經(jīng)常使用標準串口來與嵌入式系統(tǒng)通信,這是因為串口的結構簡單、控制容易,而且編程也不復雜,在系統(tǒng)中最容易實現(xiàn),但由于串口先天的不足——速度導致在傳輸大量數(shù)據(jù)時耗時過多,串口速度方面的約束在開發(fā)嵌入式系統(tǒng)上是個瓶頸,而且?guī)缀鯚o法克服,導致我們還需要更快速的通信手段來輔助串口進行開發(fā)。我們可用選用也比較通用和常見的以太網(wǎng)接口通信方式,通常它可以達到10M/100M位的通信速率,比串口快速許多。網(wǎng)絡設置由于其重要性,幾乎所有的嵌入式器件都會支持并有現(xiàn)成的網(wǎng)絡應用程序和大量工具,所以在實現(xiàn)上也不成問題。2.1以太網(wǎng)與IP地址的設定2、以太網(wǎng)通信
如果嵌入式系統(tǒng)在通過網(wǎng)線與開發(fā)主機通信的同時,還需要訪問互聯(lián)網(wǎng),就需要通過局域網(wǎng)建立網(wǎng)絡連接。一般地,我們所使用的局域網(wǎng)不能由用戶直接控制,網(wǎng)上存在許多功能限制,所以不宜將嵌入式系統(tǒng)直接掛載在公用局域網(wǎng)上。最好的方法是建立開發(fā)用的微型局域網(wǎng)環(huán)境來實現(xiàn)這個目標。介紹一種構建這個環(huán)境的方法:選取一個以太網(wǎng)集線器:有DHCP功能;能夠自動掛接公用局域網(wǎng)或互聯(lián)網(wǎng)。連接公用局域網(wǎng)或互聯(lián)網(wǎng)到集線器。連接開發(fā)主機到集線器并調(diào)試通過可訪問互聯(lián)網(wǎng)。連接嵌入式系統(tǒng)網(wǎng)絡接口到集線器。2.1.1使用網(wǎng)絡集線器2、以太網(wǎng)通信
通過集線器可控制連入的各系統(tǒng)的IP地址,根據(jù)不同的設備MAC地址(開發(fā)主機的網(wǎng)卡MAC地址、虛擬機采用的虛擬網(wǎng)卡MAC地址、嵌入式系統(tǒng)的MAC地址)為其分配固定的IP地址。在各設備均選用DHCP配置的情況下,可得到系統(tǒng)唯一的、固定的IP地址,再通過此地址實現(xiàn)互相訪問和通信。
這種方式的優(yōu)點是比較靈活,可以實現(xiàn)多設備的互連,各設備可采用動態(tài)配置而非靜態(tài)IP地址配置,當使用筆記本型電腦為開發(fā)主機時還可實現(xiàn)無線網(wǎng)絡連接。缺點是需要添加一個網(wǎng)絡集線器硬件(普通1-200元人民幣)。2.1.1使用網(wǎng)絡集線器2、以太網(wǎng)通信
即開發(fā)主機和嵌入式系統(tǒng)用一條網(wǎng)線(直連線)直接連接。對于IP地址的分配,方法1是開發(fā)主機和嵌入式系統(tǒng)均采用固定靜態(tài)IP地址設置,通過手動調(diào)整完成(可能需要更改和重新生成嵌入式Linux內(nèi)核);方法2是,開發(fā)主機上運行DHCP服務器軟件,用軟件參數(shù)控制IP地址分配。
這種方式的優(yōu)點是簡單,只需要一根網(wǎng)線即可。缺點是軟件設置較多,靈活性較差,而且由于開發(fā)主機和嵌入式系統(tǒng)的網(wǎng)口被占用后無法訪問互聯(lián)網(wǎng)。2.1.2直接用網(wǎng)線互聯(lián)2、以太網(wǎng)通信在開發(fā)嵌入式系統(tǒng)時,經(jīng)常需要在嵌入式系統(tǒng)和開發(fā)主機之間交換文件,這就需要使用合適的文件傳輸機制。通過網(wǎng)絡,我們可以采用ftp來實現(xiàn)文件的發(fā)送和接收操作。
Tftp協(xié)議是簡單文件傳輸協(xié)議,它可以看作是一個FTP協(xié)議的簡化版本,與FTP協(xié)議相比,它的最大區(qū)別在于沒有用戶管理的功能。它的傳輸速度快,可以通過防火墻,使用方便快捷,因此在嵌入式的文件傳輸中廣泛使用。同F(xiàn)TP一樣,tftp分為客戶端和服務器端兩種。通常,首先在宿主機上開啟tftp服務器端服務,設置好tftp的根目錄內(nèi)容(也就是供客戶端下載的文件),接著,在目標板上開啟tftp的客戶端程序。這樣,目標板和宿主機建立網(wǎng)絡連接后,就可以通過tftp協(xié)議傳輸可執(zhí)行文件了。2.2建立并使用tftp服務器2、以太網(wǎng)通信下載并安裝Xinetd(以下操作需要虛擬機連接網(wǎng)絡):davinci@davinci-desktop:~$sudoapt-getinstalltftpddavinci@davinci-desktop:~$sudoapt-getinstalltftpdavinci@davinci-desktop:~$sudoapt-getinstallxinetdLinux下tftp的服務器服務是由xinetd所設定的。首先,要設置tftp的配置文件,開啟tftp服務,用以下命令編輯文件/etc/xinetd.d/tftp:davinci@davinci-desktop:~$sudo
gedit/etc/xinetd.d/tftp2.2.1Linux下tftp服務配置2、以太網(wǎng)通信在編輯器中輸入以下內(nèi)容:servicetftp{socket_type=dgramprotocol=udpwait=yesuser=rootserver=/usr/sbin/in.tftpdserver_args=-s/home/davinci/ICETEKWork/tftpbootdisable=noper_source=11cps=1002flags=IPv4}2.2.1Linux下tftp服務配置2、以太網(wǎng)通信在這里,主要設置要將“disable=no”,另外,“server_args”設置成用戶指定的目錄,tftp服務器端的默認根目錄為“/tftpboot”。輸入完成后存盤退出。接下來,啟動xinetd服務,使剛才的更改生效,如下所示:davinci@davinci-desktop:~$sudo/etc/init.d/xinetdrestart*Stoppinginternetsuperserver
xinetd[OK]*Startinginternetsuperserver
xinetd[OK]2.2.1Linux下tftp服務配置2、以太網(wǎng)通信接著,使用命令“netstat-au”以確認tftp服務是否已經(jīng)開啟,如下所示:[davinci@davinci-desktop]#netstat-auActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStateudp00*:32768*:*udp00*:831*:*udp00*:tftp*:*udp00*:sunrpc*:*udp00*:ipp*:*這時,用戶就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機上的tftp服務就可以建立起來了。2.2.1Linux下tftp服務配置2、以太網(wǎng)通信在Windows下配置為tftp服務器端需要下載tftp服務器軟件,常見的為tftpd32。首先,單擊tftpd32下方的設置按鈕,進入設置界面,如圖所示。在這里,主要配置tftp服務器端地址,也就是本機的地址。接下來,重新啟動tftpd32軟件使剛才的配置生效,這樣服務器端的配置就完成了,這時,就可以用直連線連接目標機和宿主機,且在目標機上開啟tftp服務進行文件傳輸。2.2.2Windows下tftp服務配置2、以太網(wǎng)通信NFS為NetworkFileSystem的簡稱,最早是由Sun公司提出發(fā)展起來的,其目的就是讓不同的機器、不同的操作系統(tǒng)之間可以彼此共享文件。NFS可以讓不同的主機通過網(wǎng)絡將遠端的NFS服務器共享出來的文件安裝到自己的系統(tǒng)中,從客戶端看來,使用NFS的遠端文件就像是使用本地文件一樣。在嵌入式中使用NFS會使應用程序的開發(fā)變得十分方便,并且不用反復地進行燒寫鏡像文件。NFS的使用分為服務器端和客戶端,其中服務器端是提供要共享的文件,而客戶端則通過掛載“mount”這一動作來實現(xiàn)對共享文件的訪問操作。2.3建立并使用NFS服務器2、以太網(wǎng)通信NFS服務器端是通過讀入它的配置文件“/etc/exports”來決定所共享的文件目錄的。下面首先講解這個配置文件的書寫規(guī)范。在這個配置文件中,每一行都代表一項要共享的文件目錄以及所指定的客戶端對其的操作權限。客戶端可以根據(jù)相應的權限,對該目錄下的所有目錄文件進行訪問。配置文件中每一行的格式如下:[共享的目錄][主機名稱或IP][參數(shù)1,參數(shù)2…]在這里,主機名或IP是可供共享的客戶端主機名或IP,若對所有的IP都可以訪問,則可用“*”表示。2.3建立并使用NFS服務器2、以太網(wǎng)通信這里的參數(shù)有很多中組合方式,常見的參數(shù)如下表所示2.3建立并使用NFS服務器選項參數(shù)含義rw可讀寫權限r(nóng)o只讀權限no_root_squashNFS客戶端分享目錄使用者的權限,即如果客戶端使用的是root用戶,那么對于這個共享的目錄而言,該客戶端就具有root的權限sync資料同步寫入到內(nèi)存與硬盤當中async資料會先暫存于內(nèi)存當中,而非直接寫入硬盤2、以太網(wǎng)通信在設定完配置文件之后,需要啟動nfs服務和portmap服務,這里的portmap服務是允許NFS客戶端查看NFS服務在用的端口,在它被激活之后,就會出現(xiàn)一個端口號為111的sunRPC(遠端過程調(diào)用)的服務。這是NFS服務中必須實現(xiàn)的一項,因此,也必須把它開啟。如下所示:[davinci@davinci-desktop]#serviceportmapstart啟動portmap:[確定][davinci@davinci-desktop]#servicenfsstart啟動NFS服務:[確定]關掉NFS配額:[確定]啟動NFS守護進程:[確定]啟動NFSmountd:[確定]2.3建立并使用NFS服務器2、以太網(wǎng)通信可以看到,在啟動NFS服務的時候啟動了mountd進程。這是NFS掛載服務,用于處理NFSD遞交過來的客戶端請求。另外還會激活至少兩個以上的系統(tǒng)守護進程,然后就開始監(jiān)聽客戶端的請求,用cat/var/log/messages可以看到操作是否成功。這樣,就啟動了NFS的服務,另
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版無人駕駛汽車測試協(xié)議
- 二零二四年度LED路燈購銷合同協(xié)議書3篇
- 二零二五年度餐飲行業(yè)營銷推廣服務合同3篇
- 2024版履約擔保公司履約擔保管理系統(tǒng)
- 2025年生態(tài)小區(qū)綠化水資源利用承包合同3篇
- 建筑碗扣支架出租合同(2025版)3篇
- 2024路演合同范本:路演活動應急預案合同3篇
- 二零二五年度環(huán)??萍妓幚砑夹g與應用合同3篇
- 二零二五版防盜門品牌加盟與區(qū)域經(jīng)營合同3篇
- 2025年度旅游度假村麻石景觀設計與施工合同4篇
- 《庖丁解?!帆@獎課件(省級公開課一等獎)-完美版PPT
- 化工園區(qū)危險品運輸車輛停車場建設標準
- 6月大學英語四級真題(CET4)及答案解析
- 氣排球競賽規(guī)則
- 電梯維修保養(yǎng)報價書模板
- 危險化學品目錄2023
- FZ/T 81024-2022機織披風
- GB/T 33141-2016鎂鋰合金鑄錠
- JJF 1069-2012 法定計量檢定機構考核規(guī)范(培訓講稿)
- 綜合管廊工程施工技術概述課件
- 公積金提取單身聲明
評論
0/150
提交評論