《通信嵌入式系統(tǒng)與應(yīng)用》 課件 第2講 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建_第1頁(yè)
《通信嵌入式系統(tǒng)與應(yīng)用》 課件 第2講 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建_第2頁(yè)
《通信嵌入式系統(tǒng)與應(yīng)用》 課件 第2講 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建_第3頁(yè)
《通信嵌入式系統(tǒng)與應(yīng)用》 課件 第2講 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建_第4頁(yè)
《通信嵌入式系統(tǒng)與應(yīng)用》 課件 第2講 嵌入式Linux開(kāi)發(fā)環(huán)境的搭建_第5頁(yè)
已閱讀5頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第2講嵌入式Linux開(kāi)發(fā)環(huán)境的搭建一

、系統(tǒng)概述1、系統(tǒng)需求2、軟件開(kāi)發(fā)環(huán)境概述1、系統(tǒng)需求1.1系統(tǒng)硬件IBM-PC兼容機(jī),CPU主頻在2.5G以上內(nèi)存2GB以上硬盤(pán)有大于60GB的空閑存儲(chǔ)空間DVD光盤(pán)驅(qū)動(dòng)器通用RS-232串口,COM1空閑USB插座以太網(wǎng)接口,10/100M自適應(yīng)聲卡及音頻LineOut接口顯示設(shè)備:工作模式為1024x768x32bits以上1、系統(tǒng)需求1.2系統(tǒng)軟件操作系統(tǒng):WindowsXP簡(jiǎn)體中文版(SP3)通用網(wǎng)頁(yè)瀏覽器超級(jí)終端軟件PDF閱讀軟件1、系統(tǒng)需求1.3配套設(shè)施外部環(huán)境以太網(wǎng)連接;系統(tǒng)供電采用穩(wěn)定的多路220VAC電源;電源有良好接地條件;各設(shè)備間電源共地、外殼接地。2、軟件開(kāi)發(fā)環(huán)境概述

我們需要構(gòu)建的是一套較為完備的軟件開(kāi)發(fā)環(huán)境。當(dāng)按照系統(tǒng)安裝步驟完成后,用戶就可以立即開(kāi)始進(jìn)行應(yīng)用開(kāi)發(fā)工作。開(kāi)發(fā)環(huán)境以一臺(tái)操作系統(tǒng)為WindowsXP簡(jiǎn)體中文版的主機(jī)作為基本平臺(tái),進(jìn)行開(kāi)發(fā)操作和測(cè)試。2、軟件開(kāi)發(fā)環(huán)境概述

嵌入式ARM系統(tǒng)的軟件開(kāi)發(fā)環(huán)境大致由以下幾部分組成(允許軟件版本更高):運(yùn)行在WindowsXP簡(jiǎn)體中文操作系統(tǒng)環(huán)境下的虛擬機(jī)軟件:VirtualBox3.2.12運(yùn)行在WindowsXP簡(jiǎn)體中文操作系統(tǒng)環(huán)境下的超級(jí)終端程序運(yùn)行在虛擬機(jī)中的Linux簡(jiǎn)體中文操作系統(tǒng):UbuntuV10.04運(yùn)行在uBuntu中的ARM交叉編譯器嵌入式系統(tǒng)的系統(tǒng)源程序(XLoader、UBoot、Linux內(nèi)核、文件系統(tǒng))2、軟件開(kāi)發(fā)環(huán)境概述采用上述開(kāi)發(fā)軟件環(huán)境的理由:WindowsXP:普及、易操作、網(wǎng)絡(luò)連接簡(jiǎn)單、資源豐富、軟件工具多、配置功能靈活。VirtualBox虛擬機(jī):開(kāi)源、免費(fèi);有穩(wěn)定、實(shí)力強(qiáng)的固定公司維護(hù),不斷升級(jí);功能強(qiáng)大、易用;流行、市場(chǎng)份額逐漸擴(kuò)大,有發(fā)展性前途。Ubuntu:開(kāi)源、免費(fèi);有穩(wěn)定、實(shí)力強(qiáng)的固定公司維護(hù),不斷升級(jí);功能強(qiáng)大、易用;流行、市場(chǎng)份額逐漸擴(kuò)大,有發(fā)展性前途;開(kāi)始在嵌入式系統(tǒng)中采用。2、軟件開(kāi)發(fā)環(huán)境概述采用上述開(kāi)發(fā)軟件環(huán)境的理由:Windows+虛擬機(jī)的開(kāi)發(fā)環(huán)境:Windows和虛擬機(jī)中的Linux可靈活地交換數(shù)據(jù),可同時(shí)發(fā)揮各自優(yōu)點(diǎn)。ICETEK-XDS560USB:速度快、使用方便,可在便攜機(jī)上使用,支持TI全系列DSP芯片。采用統(tǒng)一的開(kāi)發(fā)系統(tǒng)環(huán)境有利于用戶相互交流運(yùn)用成果、減少系統(tǒng)差異造成的不必要麻煩,同時(shí)也便于公司提供相關(guān)的軟件技術(shù)支持,收到更好的效果。二、Linux開(kāi)發(fā)主機(jī)的構(gòu)建1、準(zhǔn)備虛擬機(jī)環(huán)境1、準(zhǔn)備虛擬機(jī)環(huán)境(1)確認(rèn)互聯(lián)網(wǎng)連接

請(qǐng)確認(rèn)Windows能正確連接互聯(lián)網(wǎng),本文以后的操作中假設(shè)Windows使用的IP地址為00(實(shí)際可能與此不符合,請(qǐng)記下當(dāng)前的具體配置在下面的操作中對(duì)照運(yùn)用)。(2)下載最新虛擬機(jī)軟件2.1VirtualBox

請(qǐng)?jiān)L問(wèn)/網(wǎng)站并下載最新的穩(wěn)定版VirtualBox,現(xiàn)在我們假設(shè)使用版本為2.1.0。2.2Ubuntu請(qǐng)?jiān)L問(wèn)/網(wǎng)站并下載最新的穩(wěn)定版Ubuntu,現(xiàn)在我們假設(shè)使用版本為804。請(qǐng)選擇DesktopEdition版并下載,或在網(wǎng)上申請(qǐng)免費(fèi)的安裝版光盤(pán)。1、準(zhǔn)備虛擬機(jī)環(huán)境(3)安裝虛擬機(jī)VirtualBox安裝完畢后請(qǐng)將虛擬機(jī)啟動(dòng)的快捷方式復(fù)制到Windows的桌面上,以便今后經(jīng)常使用。(4)安裝Ubuntu啟動(dòng)虛擬機(jī),在虛擬機(jī)窗口中建立虛擬機(jī)Ubuntu,并在其中選用Ubuntu安裝光盤(pán)映像(或?qū)嶋H光盤(pán))后啟動(dòng)虛擬機(jī)Ubuntu進(jìn)行安裝。安裝完成后需要進(jìn)行一些必要的設(shè)置,比如中文環(huán)境、輸入法、顯示分辨率調(diào)整、網(wǎng)絡(luò)設(shè)置等等。在Ubuntu系統(tǒng)桌面上建立兩個(gè)圖標(biāo):終端和根用戶文件瀏覽器以方便使用。三、嵌入式交叉編譯環(huán)境的構(gòu)建1、交叉編譯工具鏈介紹2、構(gòu)建ARMLinux交叉編譯工具鏈1、交叉編譯工具鏈介紹

交叉編譯---在一種平臺(tái)上編譯出能運(yùn)行在體系結(jié)構(gòu)不同的另一種平臺(tái)下的程序,比如在PC平臺(tái)(x86CPU)上編譯出能運(yùn)行在以ARM為內(nèi)核的CPU平臺(tái)的的程序,編譯得到的程序在x86CPU平臺(tái)上是不能運(yùn)行的,必須放到ARMCPU平臺(tái)上才能運(yùn)行,雖然兩個(gè)平臺(tái)用的都是Linux系統(tǒng)。這種方法在異平臺(tái)移植和嵌入式開(kāi)發(fā)時(shí)非常有用。相對(duì)與交叉編譯,平常做的編譯叫本地編譯,也就是在當(dāng)前平臺(tái)編譯,編譯得到的程序也是在本地執(zhí)行。用來(lái)編譯這種跨平臺(tái)程序的編譯器就叫交叉編澤器,相對(duì)來(lái)說(shuō),用來(lái)做本地編譯的工具就叫本地編譯器。所以要生成在目標(biāo)機(jī)上運(yùn)行的程序,必須要用交叉編譯工具鏈來(lái)完成。在裁減和定制Linux內(nèi)核用于嵌入式系統(tǒng)之前,由于一般嵌入式開(kāi)發(fā)系統(tǒng)存儲(chǔ)大小有限,通常都要在性能優(yōu)越的PC上建立一個(gè)用于目標(biāo)機(jī)的交叉編譯工具鏈,用該交叉編譯工具鏈在PC上編譯目標(biāo)機(jī)上要運(yùn)行的程序。交叉編譯工具鏈?zhǔn)且粋€(gè)由編譯器、連接器和解釋器細(xì)成的綜合開(kāi)發(fā)環(huán)境,交叉編譯工具鏈主要由binutils、gcc和glibc三個(gè)部分組成。有時(shí)出于減小libc庫(kù)大小的考慮,也可以用別的c庫(kù)來(lái)代替glibc。2、構(gòu)建ARMLinux交叉編譯工具鏈

構(gòu)建交叉編譯器的第—個(gè)步驟就是確定目標(biāo)平臺(tái)。在GNU系統(tǒng)中,每個(gè)目標(biāo)平臺(tái)都有—個(gè)明確的格式,這些信息用于在構(gòu)建過(guò)程中識(shí)別要使用的不同工具的正確版本。因此,當(dāng)在一個(gè)特定目標(biāo)機(jī)下運(yùn)行GCC時(shí),GCC便在目錄路徑中查找包含該目標(biāo)規(guī)范的應(yīng)用程序路徑。GNU的目標(biāo)規(guī)范格式為CPU-PLATFORM-OS。例如x86/i386目標(biāo)機(jī)名為i686-pc-linux-gnu。本章的目的是講述建立基于ARM平臺(tái)的交叉工具鏈,所以目標(biāo)平臺(tái)名為arm-linux-gnu。2、構(gòu)建ARMLinux交叉編譯工具鏈通常構(gòu)建交叉工具鏈有3種方法:方法一分步編譯和安裝交叉編譯工具鏈所需要的庫(kù)和源代碼,最終生成交叉編譯工具鏈。該方法相對(duì)比較困難,適合想深入學(xué)習(xí)構(gòu)建交又工具鏈的讀者。如果只是想使用交叉工具鏈;建議使用方法二或方法三構(gòu)建交叉工具鏈。方法二通過(guò)Crosstool腳本工具來(lái)實(shí)現(xiàn)一次編譯生成交叉編譯工具鏈,該方法相對(duì)于方法一要簡(jiǎn)單許多,并且出錯(cuò)的機(jī)會(huì)也非常少,建議大多數(shù)情況下使用該方法構(gòu)建交又編譯工具鏈。方法三直接通過(guò)網(wǎng)上(.uk)下載已經(jīng)制作好的交叉編譯工具鏈。該方法的優(yōu)點(diǎn)不用多說(shuō),當(dāng)然是簡(jiǎn)單省事,但與此同時(shí)該方法有一定的弊端就是局限性太大,因?yàn)楫吘故莿e人構(gòu)建好的,也就是固定的沒(méi)有靈活性,所以構(gòu)建所用的庫(kù)以及編譯器的版本也許并不適合你要編譯的程序,同時(shí)也許會(huì)在使用時(shí)出現(xiàn)許多莫名的錯(cuò)誤,建議慎用此方法。2、構(gòu)建ARMLinux交叉編譯工具鏈下面將重點(diǎn)詳細(xì)地介紹前兩種構(gòu)建ARMLinux交叉編澤工具鏈的方法。2.1分布建交叉編譯鏈

2.1.1建立工作目錄

首先建立工作目錄,工作目錄就是在什么目錄下構(gòu)建交叉工具鏈,目錄的構(gòu)建一般沒(méi)有特別的要求,可以根據(jù)個(gè)人喜好建立。以下所建立的目錄是作者自定義的,當(dāng)前的用戶定義為mike,因此用戶目錄為/home/mike,在用戶目錄下首先建立一個(gè)上作目錄(armlinux),再在這個(gè)工作目錄armlinux下建立3個(gè)目錄build-tools、kernel和tools。其中各目錄的作用:build-tools存放下載的binutils、gcc、glibc等源代碼和用來(lái)編譯這些源碼的目錄。kernel存放內(nèi)核源代碼。tools存放編譯好的交叉編譯工具和庫(kù)文件。2、構(gòu)建ARMLinux交叉編譯工具鏈2.1.2建立環(huán)境變量

該步驟的目的是為了方便重復(fù)輸入路徑,因?yàn)橹貜?fù)操作每件相同的事情總會(huì)讓人覺(jué)得很麻煩,如果讀者不習(xí)慣使用環(huán)境變量就可以略過(guò)該步,直接輸入絕對(duì)路徑就可以。聲明以下環(huán)境變量的目的是在之后編譯工具庫(kù)的時(shí)候會(huì)用到,很方便輸入,尤其是可以降低輸錯(cuò)路徑的風(fēng)險(xiǎn)。

注意,用export聲明的變量是臨時(shí)的變量,也就是當(dāng)注銷或更換了控制臺(tái),這些環(huán)境變量就消失了,如果還需要使用這些環(huán)境變量就必須重復(fù)export操作,所以有時(shí)會(huì)很麻煩。值得慶幸的是,環(huán)境變量也可以定義在bashrc文件中,這樣當(dāng)注銷或更換控制臺(tái)時(shí),這些變量就一直有效,就不用老是export這些變量了。2、構(gòu)建ARMLinux交叉編譯工具鏈2.1.3編譯、安裝BinutisBinutils是GNU工具之一,它包括連接器、匯編器和其他用于目標(biāo)文件和檔案的工具,它是二進(jìn)制代碼的處理維護(hù)工具。安裝Binutils工具包含的程序有addr2line、ar、as、c++filt、gprof、ld、nm、Objcopy、Objdump、ranlib、readelf、size、strings、Strip、libiberty、libbfd和libopcodes。對(duì)這些程序的簡(jiǎn)單解釋如下。addr2line把程序地址轉(zhuǎn)換為文件名和行號(hào)。在命令行中給它一個(gè)地址和一個(gè)可執(zhí)行文件名,它就會(huì)使用這個(gè)可執(zhí)行文件的調(diào)試信息指出在給出的地址上是哪個(gè)文件以及行號(hào)。ar建立、修改、提取歸檔丈件。歸檔文件是包含多個(gè)文件內(nèi)容的一個(gè)大文件,其結(jié)構(gòu)保證了可以恢復(fù)原始文件內(nèi)容。as主要用來(lái)編譯GNUC編譯器gcc輸出的匯編文件,產(chǎn)生的目標(biāo)文件由連接器ld連接。2、構(gòu)建ARMLinux交叉編譯工具鏈c++filt連接器使用它來(lái)過(guò)濾C++和Java符號(hào),防止重載函數(shù)沖突。gprof顯示程序調(diào)用段的各種數(shù)據(jù)。ld連接器,它把一些目標(biāo)和歸檔文件結(jié)合在一起,重定位數(shù)據(jù),并連接符號(hào)引用。通常,建立一個(gè)新編譯程序的最后一步就是調(diào)用ld。nm列出目標(biāo)文件中的符號(hào)。objcopy把一種目標(biāo)文件中的內(nèi)容復(fù)制到另一種類型的目標(biāo)文件中。objdump顯示一個(gè)或者更多目標(biāo)文件的信息。使用選項(xiàng)來(lái)控制其顯示的信息,它所顯示的信息通常只有編寫(xiě)編譯工具的人才感興趣。ranlib產(chǎn)生歸檔文件索引,并將其保存到這個(gè)歸檔文件中。在索引中列出了歸檔文件各成員所定義的可重分配目標(biāo)文件。readelf顯示elf格式可執(zhí)行文件的信息。size列出目標(biāo)文件每一段的大小以及總體的大小。默認(rèn)情況下,對(duì)于每個(gè)目標(biāo)文件或者一個(gè)歸檔文件中的每個(gè)模塊只產(chǎn)生一行輸出。2、構(gòu)建ARMLinux交叉編譯工具鏈strings打印某個(gè)文件的可打印字符串,這些字符串最少4個(gè)字符長(zhǎng),也可以使用選項(xiàng)-n設(shè)置字符串的最小長(zhǎng)度。默認(rèn)情況下,它只打印目標(biāo)文件初始化和可加載段中的可打印字符;對(duì)于其他類型的文件它打印整個(gè)文件的可打印字符。這個(gè)程序?qū)τ诹私夥俏谋疚募膬?nèi)容很有幫助。strip丟棄目標(biāo)文件中的全部或者特定符號(hào)。libiberty包含許多GNU程序都會(huì)用到的函數(shù),這些程序有g(shù)etopt、obstack、strerror、strtol和strtoul。libbfd二進(jìn)制文件描述庫(kù)。libopcode用來(lái)處理opcodes的庫(kù),在生成一些應(yīng)用程序的時(shí)候也會(huì)用到它。Binutils工具安裝依賴于Bash、Coreutils、Diffutils、GCC、Gettext、G1ibc、Grep、Make、Perl、Sed、Texinfo等工具。2、構(gòu)建ARMLinux交叉編譯工具鏈下面將分步介紹安裝binutils-2.15的過(guò)程。1、首先解壓binutils-2.15.ta.bz2包;2、接著配置Binutils工具,建議建立一個(gè)新的目錄用來(lái)存放配置和編譯文件,這樣可以使源文件和編譯文件獨(dú)立開(kāi);3、最后產(chǎn)生Makefile文件。接下來(lái)執(zhí)行make和安裝操作。安裝完成后查看/home/mike/armlinux/tools/bin目錄下的文件2、構(gòu)建ARMLinux交叉編譯工具鏈2.1.4獲得內(nèi)核頭文件

編譯器需要通過(guò)系統(tǒng)內(nèi)核的頭文件來(lái)獲得目標(biāo)平臺(tái)所支持的系統(tǒng)函數(shù)調(diào)用所需同要的信息。對(duì)于Linux內(nèi)核,最好的方法是下載一個(gè)合適的內(nèi)核,然后復(fù)制獲得頭文件。需要對(duì)內(nèi)核做一個(gè)基本的配置來(lái)生成正確的頭文件;不過(guò),不需要編譯內(nèi)核。2.1.5編譯安裝boot-trapgcc

這一步的目的主要是建立arm-linux-gcc工具,注意這個(gè)gcc沒(méi)有g(shù)libc庫(kù)的支持,所以只能用于編譯內(nèi)核、BootLoader等不需要C庫(kù)支持的程序,后面創(chuàng)建C庫(kù)也要用到這個(gè)編譯器,所以創(chuàng)建它主要是為創(chuàng)建C庫(kù)做準(zhǔn)備,如果只想編譯內(nèi)核和BootLoader,那么安裝完這個(gè)就可以到此結(jié)束。2、構(gòu)建ARMLinux交叉編譯工具鏈2.1.6建立glibc庫(kù)Glibc是GUNC庫(kù),它是編譯Linux系統(tǒng)程序很重要的組成部分。安裝glibc-2.3.2版本之前推薦先安裝以下的工具:GNUmake3.79或更新;GCC3.2或更新;GNUbinutils2.13或更新。2.1.7編譯安裝完整的gcc

由于第一次安裝的gcc沒(méi)有交叉glibc的支持,現(xiàn)在已經(jīng)安裝了glibc,所以需要重新編譯來(lái)支持交叉glibc。并且上面的gcc也只支持C語(yǔ)言,現(xiàn)在可以讓它同時(shí)支持C語(yǔ)言還要和C++語(yǔ)言。2.1.8測(cè)試交叉編譯工具鏈2、構(gòu)建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是一組腳本工具集,可構(gòu)建和測(cè)試不同版本的gcc和glibc,用于那些支持glibc的體系結(jié)構(gòu)。它也是一個(gè)開(kāi)源項(xiàng)目,下載地址是/crosstool。用Crosstool構(gòu)建交叉工具鏈要比上述的分步編譯容易得多,并且也方便許多,對(duì)于僅僅為了工作需要構(gòu)建交叉編譯工具鏈的讀者建議使用此方法。用Crosstool工具構(gòu)建所需資源如表所示。2、構(gòu)建ARMLinux交叉編譯工具鏈2.2.1準(zhǔn)備資源文件首先從網(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,為了簡(jiǎn)化編寫(xiě)arm.sh,尋找一個(gè)最接近的腳本文件demo-arm.sh作為模板,然后將該腳本的內(nèi)容復(fù)制到arm.sh,修改arm.sh腳本2、構(gòu)建ARMLinux交叉編譯工具鏈2.2.3建立配置文件2.2.4執(zhí)行腳本

將Crosstool的腳本文件和配置文件準(zhǔn)備好之后,開(kāi)始執(zhí)行arm.sh腳本來(lái)編譯交義編譯工具,經(jīng)過(guò)數(shù)小時(shí)的漫長(zhǎng)編譯之后,會(huì)在/opt/crosstool目錄下生成新的交叉編譯工具。在arm.sh腳本文件中需要注意arm.dar和gcc-3.3.6-glibc-2.3.2.dat兩個(gè)文件,這兩個(gè)文件是作為Crosstool的編譯的配置文件。其中arm.dat文件內(nèi)容主要用于定義配置文件、定義生成編譯工具鏈的名稱以及定義編譯選項(xiàng)等。gcc-3.3.6-glibc-2.3.2.dat文件主要定義編譯過(guò)程中所需要的庫(kù)以及它定義的版本,如果在編譯過(guò)程中發(fā)現(xiàn)有些庫(kù)不存在時(shí),,Crosstool會(huì)自動(dòng)在相關(guān)網(wǎng)站上下載,該工具在這點(diǎn)上相對(duì)比較智能,也非常有用。2、構(gòu)建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設(shè)置完環(huán)境變量,也就意味著交叉編譯工具鏈已經(jīng)構(gòu)建完成,然后就可以用上節(jié)中介紹的方法測(cè)試剛剛建立的工具鏈

2、構(gòu)建ARMLinux交叉編譯工具鏈2.3下載安裝預(yù)編譯的交叉工具鏈

由于構(gòu)建交叉編譯工具鏈的過(guò)程較為復(fù)雜,而且環(huán)節(jié)多,用戶在開(kāi)發(fā)主機(jī)上的配置情況又千差萬(wàn)別,所以在生成工具鏈的過(guò)程中容易產(chǎn)生各種錯(cuò)誤。這些錯(cuò)誤排除后,編譯能繼續(xù)進(jìn)行,但也需要使用者有較為豐富的編譯經(jīng)驗(yàn)來(lái)判斷錯(cuò)誤類型并選取適當(dāng)?shù)慕鉀Q方案來(lái)排除故障。這對(duì)普通的使用者來(lái)說(shuō)要求過(guò)高。同時(shí),由于編譯的耗時(shí)較長(zhǎng),用戶一旦遇到錯(cuò)誤干擾時(shí)可能缺乏耐心繼續(xù)做下去。為了簡(jiǎn)化編譯過(guò)程,許多編譯成功的用戶將編譯成功的結(jié)果免費(fèi)放到互聯(lián)網(wǎng)上,供同樣情況的用戶下載使用,從而省去漫長(zhǎng)辛苦的編譯過(guò)程。這樣用戶可以在下載了這些預(yù)編譯的軟件包后就可以直接利用開(kāi)始使用了,而且這些安裝包可以經(jīng)過(guò)較為嚴(yán)格的測(cè)試,保證其工作的可靠性,一般來(lái)說(shuō)比用戶自編譯生成的工具鏈考慮得更細(xì)致和完善。對(duì)于開(kāi)發(fā)主機(jī)所采用的各種Linux系統(tǒng)發(fā)行版都有許多現(xiàn)成、可用的工具鏈供下載使用。所以建議客戶在工作中盡量采用那些適用的、已被許多用戶下載應(yīng)用過(guò)的、成熟的編輯工具鏈,這會(huì)加快您的開(kāi)發(fā)進(jìn)度、少走彎路。四、建立開(kāi)發(fā)機(jī)與嵌入式系統(tǒng)的通信連接1、串口通信2、以太網(wǎng)通信3、與嵌入式系統(tǒng)交換數(shù)據(jù)1、串口通信1.1超級(jí)終端

嵌入式系統(tǒng)開(kāi)發(fā)的程序運(yùn)行環(huán)境是在硬件開(kāi)發(fā)板上的,那么如何把開(kāi)發(fā)板上的信息顯示給開(kāi)發(fā)人員呢?最常用的就是通過(guò)串口線輸出到宿主機(jī)的顯示器上。這樣,開(kāi)發(fā)人員就可以看到系統(tǒng)的運(yùn)行情況了。在Windows和Linux中都有不少串口通信軟件,可以很方便地對(duì)串口進(jìn)行配置,其中最主要的配置參數(shù)就是波特率、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位和數(shù)據(jù)流控制位等,但是它們一定要根據(jù)實(shí)際情況進(jìn)行相應(yīng)配置。首先,打開(kāi)Windows下的“開(kāi)始”→“所有程序”→“附件”→“通訊”→“超級(jí)終端”,這時(shí)會(huì)出現(xiàn)右圖所示的新建超級(jí)終端界面,請(qǐng)?zhí)顚?xiě)內(nèi)容后點(diǎn)擊“確定”按鈕繼續(xù)。1、串口通信

在如右圖顯示的窗口中,新建的位置名稱為“我的位置”,請(qǐng)點(diǎn)擊“確定”按鈕。1、串口通信在“名稱”處可隨意輸入該連接的名稱,然后點(diǎn)擊“確定”按鈕。接下來(lái),將“連接時(shí)使用”的方式改為“COM1”,即通過(guò)串口1,如圖所示。1、串口通信下面就到了最關(guān)鍵的一步——設(shè)置串口連接參數(shù)。要注意,每塊開(kāi)發(fā)板的連接參數(shù)有可能會(huì)有差異,其中的具體數(shù)據(jù)在用戶手冊(cè)中會(huì)有說(shuō)明。一般應(yīng)如下圖配置:1、串口通信這樣,就基本完成了配置,最后一步“單擊”確定就可以了。這時(shí),讀者可以把開(kāi)發(fā)板的串口線和PC機(jī)的COM1插座相連(請(qǐng)?jiān)谇度胧较到y(tǒng)斷電情況下連接),若配置正確,在開(kāi)發(fā)板上電后在超級(jí)終端的窗口里應(yīng)能顯示類似如下邊圖示的串口信息:1、串口通信1.2MinicomMinicom是Linux操作系統(tǒng)下串口通信的軟件,它的使用完全依靠鍵盤(pán)的操作,雖然沒(méi)有“超級(jí)終端”那么易用,但是使用習(xí)慣之后讀者將會(huì)體會(huì)到它的高效與便利。2、以太網(wǎng)通信在開(kāi)發(fā)和調(diào)試嵌入式Linux系統(tǒng)的過(guò)程中,我們經(jīng)常使用標(biāo)準(zhǔn)串口來(lái)與嵌入式系統(tǒng)通信,這是因?yàn)榇诘慕Y(jié)構(gòu)簡(jiǎn)單、控制容易,而且編程也不復(fù)雜,在系統(tǒng)中最容易實(shí)現(xiàn),但由于串口先天的不足——速度導(dǎo)致在傳輸大量數(shù)據(jù)時(shí)耗時(shí)過(guò)多,串口速度方面的約束在開(kāi)發(fā)嵌入式系統(tǒng)上是個(gè)瓶頸,而且?guī)缀鯚o(wú)法克服,導(dǎo)致我們還需要更快速的通信手段來(lái)輔助串口進(jìn)行開(kāi)發(fā)。我們可用選用也比較通用和常見(jiàn)的以太網(wǎng)接口通信方式,通常它可以達(dá)到10M/100M位的通信速率,比串口快速許多。網(wǎng)絡(luò)設(shè)置由于其重要性,幾乎所有的嵌入式器件都會(huì)支持并有現(xiàn)成的網(wǎng)絡(luò)應(yīng)用程序和大量工具,所以在實(shí)現(xiàn)上也不成問(wèn)題。2、以太網(wǎng)通信在開(kāi)發(fā)和調(diào)試嵌入式Linux系統(tǒng)的過(guò)程中,我們經(jīng)常使用標(biāo)準(zhǔn)串口來(lái)與嵌入式系統(tǒng)通信,這是因?yàn)榇诘慕Y(jié)構(gòu)簡(jiǎn)單、控制容易,而且編程也不復(fù)雜,在系統(tǒng)中最容易實(shí)現(xiàn),但由于串口先天的不足——速度導(dǎo)致在傳輸大量數(shù)據(jù)時(shí)耗時(shí)過(guò)多,串口速度方面的約束在開(kāi)發(fā)嵌入式系統(tǒng)上是個(gè)瓶頸,而且?guī)缀鯚o(wú)法克服,導(dǎo)致我們還需要更快速的通信手段來(lái)輔助串口進(jìn)行開(kāi)發(fā)。我們可用選用也比較通用和常見(jiàn)的以太網(wǎng)接口通信方式,通常它可以達(dá)到10M/100M位的通信速率,比串口快速許多。網(wǎng)絡(luò)設(shè)置由于其重要性,幾乎所有的嵌入式器件都會(huì)支持并有現(xiàn)成的網(wǎng)絡(luò)應(yīng)用程序和大量工具,所以在實(shí)現(xiàn)上也不成問(wèn)題。2.1以太網(wǎng)與IP地址的設(shè)定2、以太網(wǎng)通信

如果嵌入式系統(tǒng)在通過(guò)網(wǎng)線與開(kāi)發(fā)主機(jī)通信的同時(shí),還需要訪問(wèn)互聯(lián)網(wǎng),就需要通過(guò)局域網(wǎng)建立網(wǎng)絡(luò)連接。一般地,我們所使用的局域網(wǎng)不能由用戶直接控制,網(wǎng)上存在許多功能限制,所以不宜將嵌入式系統(tǒng)直接掛載在公用局域網(wǎng)上。最好的方法是建立開(kāi)發(fā)用的微型局域網(wǎng)環(huán)境來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。介紹一種構(gòu)建這個(gè)環(huán)境的方法:選取一個(gè)以太網(wǎng)集線器:有DHCP功能;能夠自動(dòng)掛接公用局域網(wǎng)或互聯(lián)網(wǎng)。連接公用局域網(wǎng)或互聯(lián)網(wǎng)到集線器。連接開(kāi)發(fā)主機(jī)到集線器并調(diào)試通過(guò)可訪問(wèn)互聯(lián)網(wǎng)。連接嵌入式系統(tǒng)網(wǎng)絡(luò)接口到集線器。2.1.1使用網(wǎng)絡(luò)集線器2、以太網(wǎng)通信

通過(guò)集線器可控制連入的各系統(tǒng)的IP地址,根據(jù)不同的設(shè)備MAC地址(開(kāi)發(fā)主機(jī)的網(wǎng)卡MAC地址、虛擬機(jī)采用的虛擬網(wǎng)卡MAC地址、嵌入式系統(tǒng)的MAC地址)為其分配固定的IP地址。在各設(shè)備均選用DHCP配置的情況下,可得到系統(tǒng)唯一的、固定的IP地址,再通過(guò)此地址實(shí)現(xiàn)互相訪問(wèn)和通信。

這種方式的優(yōu)點(diǎn)是比較靈活,可以實(shí)現(xiàn)多設(shè)備的互連,各設(shè)備可采用動(dòng)態(tài)配置而非靜態(tài)IP地址配置,當(dāng)使用筆記本型電腦為開(kāi)發(fā)主機(jī)時(shí)還可實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)連接。缺點(diǎn)是需要添加一個(gè)網(wǎng)絡(luò)集線器硬件(普通1-200元人民幣)。2.1.1使用網(wǎng)絡(luò)集線器2、以太網(wǎng)通信

即開(kāi)發(fā)主機(jī)和嵌入式系統(tǒng)用一條網(wǎng)線(直連線)直接連接。對(duì)于IP地址的分配,方法1是開(kāi)發(fā)主機(jī)和嵌入式系統(tǒng)均采用固定靜態(tài)IP地址設(shè)置,通過(guò)手動(dòng)調(diào)整完成(可能需要更改和重新生成嵌入式Linux內(nèi)核);方法2是,開(kāi)發(fā)主機(jī)上運(yùn)行DHCP服務(wù)器軟件,用軟件參數(shù)控制IP地址分配。

這種方式的優(yōu)點(diǎn)是簡(jiǎn)單,只需要一根網(wǎng)線即可。缺點(diǎn)是軟件設(shè)置較多,靈活性較差,而且由于開(kāi)發(fā)主機(jī)和嵌入式系統(tǒng)的網(wǎng)口被占用后無(wú)法訪問(wèn)互聯(lián)網(wǎng)。2.1.2直接用網(wǎng)線互聯(lián)2、以太網(wǎng)通信在開(kāi)發(fā)嵌入式系統(tǒng)時(shí),經(jīng)常需要在嵌入式系統(tǒng)和開(kāi)發(fā)主機(jī)之間交換文件,這就需要使用合適的文件傳輸機(jī)制。通過(guò)網(wǎng)絡(luò),我們可以采用ftp來(lái)實(shí)現(xiàn)文件的發(fā)送和接收操作。

Tftp協(xié)議是簡(jiǎn)單文件傳輸協(xié)議,它可以看作是一個(gè)FTP協(xié)議的簡(jiǎn)化版本,與FTP協(xié)議相比,它的最大區(qū)別在于沒(méi)有用戶管理的功能。它的傳輸速度快,可以通過(guò)防火墻,使用方便快捷,因此在嵌入式的文件傳輸中廣泛使用。同F(xiàn)TP一樣,tftp分為客戶端和服務(wù)器端兩種。通常,首先在宿主機(jī)上開(kāi)啟tftp服務(wù)器端服務(wù),設(shè)置好tftp的根目錄內(nèi)容(也就是供客戶端下載的文件),接著,在目標(biāo)板上開(kāi)啟tftp的客戶端程序。這樣,目標(biāo)板和宿主機(jī)建立網(wǎng)絡(luò)連接后,就可以通過(guò)tftp協(xié)議傳輸可執(zhí)行文件了。2.2建立并使用tftp服務(wù)器2、以太網(wǎng)通信下載并安裝Xinetd(以下操作需要虛擬機(jī)連接網(wǎng)絡(luò)):davinci@davinci-desktop:~$sudoapt-getinstalltftpddavinci@davinci-desktop:~$sudoapt-getinstalltftpdavinci@davinci-desktop:~$sudoapt-getinstallxinetdLinux下tftp的服務(wù)器服務(wù)是由xinetd所設(shè)定的。首先,要設(shè)置tftp的配置文件,開(kāi)啟tftp服務(wù),用以下命令編輯文件/etc/xinetd.d/tftp:davinci@davinci-desktop:~$sudo

gedit/etc/xinetd.d/tftp2.2.1Linux下tftp服務(wù)配置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服務(wù)配置2、以太網(wǎng)通信在這里,主要設(shè)置要將“disable=no”,另外,“server_args”設(shè)置成用戶指定的目錄,tftp服務(wù)器端的默認(rèn)根目錄為“/tftpboot”。輸入完成后存盤(pán)退出。接下來(lái),啟動(dòng)xinetd服務(wù),使剛才的更改生效,如下所示:davinci@davinci-desktop:~$sudo/etc/init.d/xinetdrestart*Stoppinginternetsuperserver

xinetd[OK]*Startinginternetsuperserver

xinetd[OK]2.2.1Linux下tftp服務(wù)配置2、以太網(wǎng)通信接著,使用命令“netstat-au”以確認(rèn)tftp服務(wù)是否已經(jīng)開(kāi)啟,如下所示:[davinci@davinci-desktop]#netstat-auActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStateudp00*:32768*:*udp00*:831*:*udp00*:tftp*:*udp00*:sunrpc*:*udp00*:ipp*:*這時(shí),用戶就可以把所需要的傳輸文件放到“/tftpboot”目錄下,這樣,主機(jī)上的tftp服務(wù)就可以建立起來(lái)了。2.2.1Linux下tftp服務(wù)配置2、以太網(wǎng)通信在Windows下配置為tftp服務(wù)器端需要下載tftp服務(wù)器軟件,常見(jiàn)的為tftpd32。首先,單擊tftpd32下方的設(shè)置按鈕,進(jìn)入設(shè)置界面,如圖所示。在這里,主要配置tftp服務(wù)器端地址,也就是本機(jī)的地址。接下來(lái),重新啟動(dòng)tftpd32軟件使剛才的配置生效,這樣服務(wù)器端的配置就完成了,這時(shí),就可以用直連線連接目標(biāo)機(jī)和宿主機(jī),且在目標(biāo)機(jī)上開(kāi)啟tftp服務(wù)進(jìn)行文件傳輸。2.2.2Windows下tftp服務(wù)配置2、以太網(wǎng)通信NFS為NetworkFileSystem的簡(jiǎn)稱,最早是由Sun公司提出發(fā)展起來(lái)的,其目的就是讓不同的機(jī)器、不同的操作系統(tǒng)之間可以彼此共享文件。NFS可以讓不同的主機(jī)通過(guò)網(wǎng)絡(luò)將遠(yuǎn)端的NFS服務(wù)器共享出來(lái)的文件安裝到自己的系統(tǒng)中,從客戶端看來(lái),使用NFS的遠(yuǎn)端文件就像是使用本地文件一樣。在嵌入式中使用NFS會(huì)使應(yīng)用程序的開(kāi)發(fā)變得十分方便,并且不用反復(fù)地進(jìn)行燒寫(xiě)鏡像文件。NFS的使用分為服務(wù)器端和客戶端,其中服務(wù)器端是提供要共享的文件,而客戶端則通過(guò)掛載“mount”這一動(dòng)作來(lái)實(shí)現(xiàn)對(duì)共享文件的訪問(wèn)操作。2.3建立并使用NFS服務(wù)器2、以太網(wǎng)通信NFS服務(wù)器端是通過(guò)讀入它的配置文件“/etc/exports”來(lái)決定所共享的文件目錄的。下面首先講解這個(gè)配置文件的書(shū)寫(xiě)規(guī)范。在這個(gè)配置文件中,每一行都代表一項(xiàng)要共享的文件目錄以及所指定的客戶端對(duì)其的操作權(quán)限??蛻舳丝梢愿鶕?jù)相應(yīng)的權(quán)限,對(duì)該目錄下的所有目錄文件進(jìn)行訪問(wèn)。配置文件中每一行的格式如下:[共享的目錄](méi)[主機(jī)名稱或IP][參數(shù)1,參數(shù)2…]在這里,主機(jī)名或IP是可供共享的客戶端主機(jī)名或IP,若對(duì)所有的IP都可以訪問(wèn),則可用“*”表示。2.3建立并使用NFS服務(wù)器2、以太網(wǎng)通信這里的參數(shù)有很多中組合方式,常見(jiàn)的參數(shù)如下表所示2.3建立并使用NFS服務(wù)器選項(xiàng)參數(shù)含義rw可讀寫(xiě)權(quán)限r(nóng)o只讀權(quán)限no_root_squashNFS客戶端分享目錄使用者的權(quán)限,即如果客戶端使用的是root用戶,那么對(duì)于這個(gè)共享的目錄而言,該客戶端就具有root的權(quán)限sync資料同步寫(xiě)入到內(nèi)存與硬盤(pán)當(dāng)中async資料會(huì)先暫存于內(nèi)存當(dāng)中,而非直接寫(xiě)入硬盤(pán)2、以太網(wǎng)通信在設(shè)定完配置文件之后,需要啟動(dòng)nfs服務(wù)和portmap服務(wù),這里的portmap服務(wù)是允許NFS客戶端查看NFS服務(wù)在用的端口,在它被激活之后,就會(huì)出現(xiàn)一個(gè)端口號(hào)為111的sunRPC(遠(yuǎn)端過(guò)程調(diào)用)的服務(wù)。這是NFS服務(wù)中必須實(shí)現(xiàn)的一項(xiàng),因此,也必須把它開(kāi)啟。如下所示:[davinci@davinci-desktop]#serviceportmapstart啟動(dòng)portmap:[確定][davinci@davinci-desktop]#servicenfsstart啟動(dòng)NFS服務(wù):[確定]關(guān)掉NFS配額:[確定]啟動(dòng)NFS守護(hù)進(jìn)程:[確定]啟動(dòng)NFSmountd:[確定]2.3建立并使用NFS服務(wù)器2、以太網(wǎng)通信可以看到,在啟動(dòng)NFS服務(wù)的時(shí)候啟動(dòng)了mountd進(jìn)程。這是NFS掛載服務(wù),用于處理NFSD遞交過(guò)來(lái)的客戶端請(qǐng)求。另外還會(huì)激活至少兩個(gè)以上的系統(tǒng)守護(hù)進(jìn)程,然后就開(kāi)始監(jiān)聽(tīng)客戶端的請(qǐng)求,用cat/var/log/messages可以看到操作是否成功。這樣,就啟動(dòng)了NFS的服務(wù),另

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論