劉彥文-OMAP35XX(EL-ARM860)嵌入式系統(tǒng)實(shí)踐教程 第3章主機(jī)開(kāi)發(fā)環(huán)境_第1頁(yè)
劉彥文-OMAP35XX(EL-ARM860)嵌入式系統(tǒng)實(shí)踐教程 第3章主機(jī)開(kāi)發(fā)環(huán)境_第2頁(yè)
劉彥文-OMAP35XX(EL-ARM860)嵌入式系統(tǒng)實(shí)踐教程 第3章主機(jī)開(kāi)發(fā)環(huán)境_第3頁(yè)
劉彥文-OMAP35XX(EL-ARM860)嵌入式系統(tǒng)實(shí)踐教程 第3章主機(jī)開(kāi)發(fā)環(huán)境_第4頁(yè)
劉彥文-OMAP35XX(EL-ARM860)嵌入式系統(tǒng)實(shí)踐教程 第3章主機(jī)開(kāi)發(fā)環(huán)境_第5頁(yè)
已閱讀5頁(yè),還剩90頁(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)介

1、2013/01OMAP35xx(EL-ARM860)嵌入式系統(tǒng)實(shí)踐教程嵌入式系統(tǒng)實(shí)踐教程 劉彥文劉彥文()說(shuō)明:本教程可作為EL-ARM860實(shí)驗(yàn)平臺(tái)實(shí)驗(yàn)內(nèi)容講授使用。授課可使用劉彥文編著,清華大學(xué)出版社出版的嵌入式系統(tǒng)原理及接口技術(shù)教材。第3章 主機(jī)開(kāi)發(fā)環(huán)境配置 n雖然Linux編程環(huán)境能夠支持眾多編程語(yǔ)言,例如C、C+、Java、Perl、Python、Ada、Forth、Lisp、Fortran等等,但是目前最常用的是C語(yǔ)言。n本章主要描述了使用C語(yǔ)言編程時(shí),主機(jī)開(kāi)發(fā)環(huán)境的跨平臺(tái)工具鏈的安裝。n另外目標(biāo)板在運(yùn)行程序時(shí),使用到網(wǎng)口和串行端口,因此需要事先對(duì)主機(jī)Linux環(huán)境網(wǎng)絡(luò)和串行端口進(jìn)

2、行配置。3.1 交叉開(kāi)發(fā)平臺(tái)基礎(chǔ)3.1.1 本地開(kāi)發(fā)及交叉開(kāi)發(fā) 本地開(kāi)發(fā)n本地開(kāi)發(fā)(native development)也稱本機(jī)開(kāi)發(fā),指的是在主機(jī)某種操作系統(tǒng)下對(duì)源程序進(jìn)行編譯、鏈接,產(chǎn)生的可執(zhí)行文件仍然能夠在相同的主機(jī)和相同的操作系統(tǒng)下運(yùn)行。nLinux系統(tǒng)支持本地開(kāi)發(fā)的軟件,主要指編譯器及C程序庫(kù)等,它們通常包含在Linux發(fā)行套件中,主機(jī)安裝Linux系統(tǒng)時(shí),會(huì)同時(shí)將其安裝在硬盤。 交叉開(kāi)發(fā)n交叉開(kāi)發(fā)(cross development)主要是指,在主機(jī)編譯源程序并構(gòu)建能夠在目標(biāo)板上運(yùn)行的可執(zhí)行文件的過(guò)程,并且主機(jī)、目標(biāo)板處理器架構(gòu)應(yīng)該是不同的。n例如在PC機(jī)對(duì)源程序進(jìn)行編譯、鏈接,并

3、且產(chǎn)生可以在基于ARM處理器架構(gòu)的目標(biāo)板上運(yùn)行的文件的過(guò)程。這里通常主機(jī)和目標(biāo)板運(yùn)行的應(yīng)該是相同的操作系統(tǒng),如Linux。n交叉開(kāi)發(fā)過(guò)程中,在主機(jī)輸入源程序、編譯、鏈接,僅僅在目標(biāo)板上運(yùn)行程序,主要原因是目標(biāo)板上硬件資源少,缺少鍵盤、顯示器、硬盤;內(nèi)存容量比較小;處理器速度比較慢。 3.1.2GNU跨平臺(tái)工具鏈組成n跨平臺(tái)工具鏈(cross-platform toolchain)經(jīng)常被簡(jiǎn)寫為交叉工具鏈(cross toolchain),或者就稱為工具鏈(toolchain)。本書中出現(xiàn)的工具鏈一詞,通常指的是跨平臺(tái)工具鏈,有時(shí)也稱為交叉編譯器。Linux使用的工具鏈的大部分組件來(lái)自GNU項(xiàng)目。

4、n工具鏈通常包含以下二進(jìn)制(可執(zhí)行文件)工具程序:預(yù)處理器、鏈接器、匯編器、打包器(archiver)、C(或其他語(yǔ)言的)編譯器,以及C程序庫(kù)與它的頭文件。n其中,C程序庫(kù)與它的頭文件是一種共享程序庫(kù),其行為有如內(nèi)含“原始Linux內(nèi)核API”的打包程序,而且在Linux系統(tǒng)中執(zhí)行的任何應(yīng)用程序幾乎都會(huì)用到它。3.1.3 如何獲取工具鏈根據(jù)自己的開(kāi)發(fā)環(huán)境,通過(guò)以下4種途徑可以獲得工具鏈:n購(gòu)買一個(gè)商業(yè)版的工具鏈。n網(wǎng)上下載一個(gè)免費(fèi)的工具鏈。n購(gòu)買目標(biāo)板時(shí),附帶的光盤上通常會(huì)帶有一個(gè)工具鏈。n網(wǎng)上下載組成工具鏈的源代碼,使用工具自行創(chuàng)建一個(gè)工具鏈。 購(gòu)買目標(biāo)板所附帶的工具鏈,是大多數(shù)用戶最常使用

5、的工具鏈,使用時(shí)要安裝到主機(jī)Linux系統(tǒng)下。3.1.4 工具鏈的組件及GDB簡(jiǎn)介 工具鏈組件簡(jiǎn)介 GCC編譯器集nGCC(GNU Compiler Collection,GNU編譯器集)并不僅僅是個(gè)C編譯器,它是一個(gè)GNU編譯器集,能夠支持對(duì)C、C+、Objective C、Java、Fortran(F77)以及Ada語(yǔ)言的編譯。n可以對(duì)GCC進(jìn)行配置,使GCC能夠?yàn)椴煌哪繕?biāo)處理器生成代碼,使之成為一個(gè)交叉編譯器。目前GCC支持的處理器體系結(jié)構(gòu)有40余種,常見(jiàn)的有x86、ARM、PowerPC等。GCC除了能夠在Linux環(huán)境下運(yùn)行,還可以在Windows下運(yùn)行。nGCC是一個(gè)能夠控制很多

6、其他工具的前端軟件,被控制的工具在編譯過(guò)程中會(huì)使用到,如cpp預(yù)處理器、C編譯器、匯編器、鏈接器等。 GNU binutils 工具鏈的另一個(gè)重要的組件是GNU binutils套件,此套件中含有兩個(gè)重要的工具程序,GNU匯編器as以及GNU鏈接器ld。此外還有10多個(gè)工具程序,如ranlib是為archive(靜態(tài)程序庫(kù))的內(nèi)容產(chǎn)生索引、strip是用于去除目標(biāo)文件中的符號(hào),等等。 標(biāo)準(zhǔn)C程序庫(kù) Linux用到的標(biāo)準(zhǔn)C程序庫(kù)就是GNU C程序庫(kù),常被寫作glibc。glibc是一個(gè)可移植、高性能的C程序庫(kù),支持所有相關(guān)標(biāo)準(zhǔn)(ISO C 99、POSIX.1c、POSIX.lj、POSIX.1

7、d、Unix98以及Single Unix Specification)。 線程程序庫(kù) Linux內(nèi)核2.6版之前對(duì)線程的支持非常有限。Linux 2.6系列隨附了一個(gè)新的線程實(shí)驗(yàn)品,稱為New POSIX Threading Library,即新的POSIX線程庫(kù)NPTL。NPTL所依靠的是Linux內(nèi)核對(duì)線程新的支持。NPTL被當(dāng)作glibc新近版本的一部分對(duì)外發(fā)布。 Linux內(nèi)核頭文件 工具鏈中會(huì)用到某一版本的Linux內(nèi)核頭文件,目的是支持程序員編程中使用到的對(duì)Linux內(nèi)核的系統(tǒng)調(diào)用。構(gòu)建工具鏈用到的Linux內(nèi)核文件,應(yīng)該與目標(biāo)板上使用的Linux內(nèi)核,來(lái)自相同的版本。 GDB簡(jiǎn)

8、介nGDB(GNU Debugger)通常不包括在工具鏈中,是一個(gè)Linux上最常用的調(diào)試器工具。nGDB需要進(jìn)行編譯,使之能夠調(diào)試運(yùn)行在目標(biāo)板處理器上的代碼。調(diào)試器本身運(yùn)行在主機(jī),能夠?qū)δ繕?biāo)板上的代碼進(jìn)行調(diào)試,被稱為遠(yuǎn)程調(diào)試。n運(yùn)行被調(diào)試的程序時(shí),目標(biāo)板上同時(shí)還要運(yùn)行一個(gè)占位程序,占位程序通常是gdbserver,通過(guò)串口或網(wǎng)口連接,負(fù)責(zé)與運(yùn)行在主機(jī)上的GDB調(diào)試程序進(jìn)行通信。3.2 交叉工具鏈安裝舉例n通常購(gòu)買目標(biāo)板時(shí)會(huì)隨附一張光盤,光盤上不同目錄下可能會(huì)有支持Linux、Windows CE和C/OS系統(tǒng)的程序。工具鏈安裝到主機(jī)的方法有兩種:n一種是在主機(jī)運(yùn)行Linux系統(tǒng)時(shí),進(jìn)入光盤中

9、與Linux相關(guān)的目錄,啟動(dòng)install.sh安裝腳本程序,系統(tǒng)會(huì)自動(dòng)將交叉工具鏈(包含相關(guān)庫(kù))安裝到主機(jī)硬盤指定的目錄。另外光盤上還可能有一些實(shí)驗(yàn)例程,將會(huì)一同被安裝到主機(jī)硬盤指定的目錄。n另一種是手工安裝,例如輸入命令將光盤工具鏈壓縮包拷貝到主機(jī)Linux指定目錄、輸入命令解壓縮并安裝到指定目錄。n以下將交叉工具鏈稱為交叉編譯器,安裝過(guò)程針對(duì)EL-ARM860教學(xué)實(shí)驗(yàn)系統(tǒng)。n要安裝的交叉編譯器壓縮包文檔名為:narm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bzn假定主機(jī)在Windows環(huán)境下已經(jīng)安裝了虛擬機(jī)及Red Hat Enterpris

10、e Linux 5操作系統(tǒng)。 n交叉編譯器可以從光盤或U盤拷貝到Linux的/usr/local子目錄下,然后在該子目錄下建立arm子目錄,交叉編譯器解壓縮后存放在/usr/local/arm子目錄下。n安裝、解壓縮交叉編譯器后,要在/root/.bashrc文件中增加路徑環(huán)境變量,并重啟這個(gè)文件,之后系統(tǒng)就能夠在指定路徑下自動(dòng)找到該交叉編譯器,而不用每次使用時(shí)都要指出其絕對(duì)路徑。3.2.1 交叉工具鏈安裝舉例 從光盤將交叉編譯器拷貝到/usr/local子目錄n假定交叉編譯器在光盤如下子目錄:/OMAP3530/軟件目錄/tools/。n啟動(dòng)虛擬機(jī)、運(yùn)行Linux后,光驅(qū)中插入對(duì)應(yīng)光盤,在虛

11、擬機(jī)窗口右下,點(diǎn)擊光盤圖標(biāo),點(diǎn)擊Connect菜單條,在Linux圖形桌面點(diǎn)擊光盤圖標(biāo),查找并選擇交叉編譯器arm-2007q3-51-arm-none-linux-gnueabi-i686.tar.bz,選擇復(fù)制菜單條,如圖3.1所示。圖3.1 選擇光盤中的交叉編譯器n然后在Linux圖形桌面環(huán)境,在/usr/local子目錄,點(diǎn)擊鼠標(biāo)右鍵,選擇“粘貼1個(gè)URL”,交叉編譯器將會(huì)粘貼到該子目錄,如圖3.2所示。圖3.2 粘貼交叉編譯器 從U盤將交叉編譯器拷貝到/usr/local子目錄 如果交叉編譯器在U盤,可以使用如下方法。n同樣先啟動(dòng)虛擬機(jī)、運(yùn)行Linux,然后在Windows窗口,選擇

12、U盤中的交叉編譯器文件,選擇復(fù)制菜單,如圖3.3所示。n然后將該文件粘貼到Linux的/usr/local子目錄。n圖3.3 選擇U盤中的交叉編譯器 建立/usr/local/arm子目錄并解壓縮交叉編譯器n在Linux終端窗口輸入如下命令,將建立/usr/local/arm子目錄,然后將交叉編譯器解壓縮到該子目錄下。n要求啟動(dòng)Linux時(shí),以root用戶名登錄。 rootlocalhost local# mkdir /usr/local/arm rootlocalhost local# tar xvjf arm-2007q3-51-arm-none-linux-gnueabi- i686.t

13、ar.bz -C /usr/local/armn解壓縮后的代碼分6個(gè)子目錄保存,可以用如下命令查看。rootlocalhost local# cd /usr/local/armrootlocalhost arm# ls -l總計(jì) 8drwxr-xr-x 8 root root 4096 12-25 10:30 arm-2007q3rootlocalhost arm#rootlocalhost arm# cd arm-2007q3rootlocalhost arm-2007q3# ls -l總計(jì) 48drwxrwxr-x 6 root root 4096 2007-09-28 arm-none-

14、linux-gnueabidrwxr-xr-x 2 root root 4096 2007-09-28 bindrwxrwxr-x 2 root root 4096 2007-09-28 includedrwxrwxr-x 3 root root 4096 2007-09-28 libdrwxrwxr-x 4 root root 4096 2007-09-28 libexecdrwxrwxr-x 3 root root 4096 2007-09-28 share3.2.2 對(duì)查找工具鏈的路徑變量進(jìn)行修改 安裝了交叉編譯器后,需要修改/root/.bashrc文件內(nèi)容,應(yīng)該在這個(gè)文件中增加一行語(yǔ)

15、句,指出交叉編譯器所在的路徑。之后每當(dāng)打開(kāi)終端窗口時(shí),Linux自動(dòng)運(yùn)行/root/.bashrc文件,給出缺省路徑名的交叉編譯器的查找路徑。 在/root/.bashrc文件中增加語(yǔ)句n可以用如下命令檢查原來(lái)的路徑變量值: rootlocalhost local# echo $PATH /usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/binn然后用vi增加一行語(yǔ)句:

16、rootlocalhost local# vi /root/.bashrcexport PATH=/usr/local/arm/arm-2007q3/bin:$PATHnvi是一個(gè)文本編輯程序,如同Windows下的記事本。進(jìn)入vi后,輸入“a”或“i”即進(jìn)到插入狀態(tài)。輸入Esc、Esc、:、w、q、!鍵后,保存文件并退出vi程序。 重啟/root/.bashrc文件n可以使用source命令重啟/root/.bashrc文件,然后系統(tǒng)才能修改查找路徑: rootlocalhost # source /root/.bashrcn如果不使用source命令重啟文件,也可以用exit命令關(guān)閉終端窗

17、口,然后再次打開(kāi)終端窗口,打開(kāi)終端窗口過(guò)程中系統(tǒng)會(huì)自動(dòng)啟動(dòng)/root/.bashrc文件。 檢查新的路徑變量值n用echo命令可以檢查新的路徑變量值: rootlocalhost # echo $PATH /usr/local/arm/arm-2007q3/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin3.3 主機(jī)Linux環(huán)境網(wǎng)絡(luò)配置舉例3.3.1

18、主機(jī)Linux環(huán)境IP地址設(shè)置 主機(jī)Linux環(huán)境IP地址設(shè)置簡(jiǎn)介n主機(jī)Linux環(huán)境IP地址,應(yīng)該與目標(biāo)板Linux的IP地址4個(gè)分組中的前3組完全相同,只允許最后一組不同。n例如,目標(biāo)板Linux的IP地址如果為192.168.1.9,那么主機(jī)IP地址前3組必須設(shè)置為192.168.1,最后一組可以是1253中的一個(gè)數(shù)字。n以下例子中,假定主機(jī)IP地址設(shè)置為192.168.1.5。 主機(jī)Linux環(huán)境IP地址設(shè)置方法 常用的方法有兩種:n一種是根據(jù)目標(biāo)板Linux IP地址,設(shè)置主機(jī)Linux IP地址。這種方法需要先查詢目標(biāo)板Linux IP地址,如果目標(biāo)板還沒(méi)有設(shè)置過(guò)IP地址,應(yīng)該先進(jìn)

19、行設(shè)置。n另一種是保留主機(jī)Linux IP地址不變,根據(jù)這個(gè)地址設(shè)置目標(biāo)板的IP地址。 目標(biāo)板IP地址配置、檢查n如果目標(biāo)板Linux IP地址還沒(méi)有配置,那么在minicom窗口輸入ifconfig命令之后,沒(méi)有任何輸出信息: rootTechv_OMAP35xx:# ifconfig rootTechv_OMAP35xx:#n這時(shí)應(yīng)該對(duì)目標(biāo)板Linux IP地址進(jìn)行配置,假定配置為192.168.1.9,輸入命令和參數(shù),回車后顯示: rootTechv_OMAP35xx:# ifconfig eth0 192.168.1.9 eth0: link down rootTechv_OMAP35

20、xx:# eth0: link up, 100Mbps, full-duplex1然后輸入ifconfig命令,檢查配置情況:rootTechv_OMAP35xx:# ifconfig eth0 Link encap:Ethernet HWaddr 00:00:AA:BB:CC:DD inet addr:192.168.1.9 Bcast:192.168.1.255 Mask0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric1 RX packets:4 errors:0 dropped:0 overruns:0 frame0 TX packets:

21、0 errors:0 dropped:0 overruns:0 carri0 collisions:0 txqueuelen:1000 RX bytes:1392 (1.3 KiB) TX bytes:0 (0.0 B) Interrupt:81 DMA chan:ffn用上述方法配置的目標(biāo)板Linux IP地址,沒(méi)有保留在目標(biāo)板的外部存儲(chǔ)器。目標(biāo)板關(guān)機(jī)或RESET后丟失,下一次使用還需要重新配置。 主機(jī)Linux IP地址配置、檢查n在主機(jī)終端窗口,輸入ifconfig eth0 192.168.1.5,將IP地址配置為192.168.1.5。 rootlocalhost # ifconfi

22、g eth0 192.168.1.5n然后用ifconfig命令檢查配置的參數(shù): rootlocalhost # ifconfigeth0 Link encap:Ethernet HWaddr 00:0C:29:5E:89:68 inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80:20c:29ff:fe5e:8968/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:19403 errors:0

23、 dropped:0 overruns:0 frame:0 TX packets:38 errors:0 dropped:0 overruns:0 carrier:0n主機(jī)Linux IP地址配置后的值,保存到外設(shè),主機(jī)Linux在虛擬機(jī)中用掛起方式退出、關(guān)機(jī)后,再次啟動(dòng)仍保留以前配置過(guò)的值,直到下一次配置新的地址為止。如果主機(jī)Linux在虛擬機(jī)中以power off方式退出,再次以power on方式啟動(dòng)運(yùn)行Linux后,保存的IP地址丟失,需要重新配置。3.3.2 主機(jī)Linux環(huán)境網(wǎng)絡(luò)防火墻設(shè)置 設(shè)置方法:n在主機(jī)Linux終端窗口,輸入setup命令并回車,然后在彈出的菜單中選擇“防火

24、墻配置(Firewall configuration)”見(jiàn)圖3.4,回車。圖3.4 選擇配置防火墻n之后在彈出的界面中用光標(biāo)移動(dòng)鍵選擇“禁用”防火墻,選擇“確定”后回車,退出設(shè)置,見(jiàn)圖3.5。圖3.5 選擇禁用防火墻n另一種設(shè)置方法是:在主機(jī)Linux圖形桌面,點(diǎn)擊“紅帽子”“安全級(jí)別和防火墻”,在彈出的窗口選擇禁用防火墻,如圖3.6所示。圖3.6 在圖形桌面設(shè)置禁用防火墻3.3.3 主機(jī)與目標(biāo)板網(wǎng)絡(luò)通信測(cè)試 在主機(jī)終端窗口用命令測(cè)試主機(jī)與目標(biāo)板的通信n在主機(jī)Linux終端窗口,輸入ping命令,后面跟隨目標(biāo)板IP地址,例如:nrootlocalhost /# ping 192.168.1.9

25、n可以用Ctrl+c鍵去終止ping命令。PING 192.168.1.9 (192.168.1.9) 56(84) bytes of data.64 bytes from 192.168.1.9: icmp_seq=1 ttl=64 time=0.792 ms64 bytes from 192.168.1.9: icmp_seq=2 ttl=64 time=0.278 ms64 bytes from 192.168.1.9: icmp_seq=3 ttl=64 time=0.531 ms64 bytes from 192.168.1.9: icmp_seq=4 ttl=64 time=0.3

26、35 ms- 192.168.1.9 ping statistics -4 packets transmitted, 4 received, 0% packet loss, time 2999msrtt min/avg/max/mdev = 0.278/0.484/0.792/0.201 ms 在目標(biāo)板終端窗口用命令測(cè)試目標(biāo)板與主機(jī)的通信n在目標(biāo)板終端窗口(輸入minicom后的窗口),輸入ping命令,后面跟隨主機(jī)IP地址,例如: rootTechv_OMAP35xx:# ping 192.168.1.5PING 192.168.1.5 (192.168.1.5): 56 data byte

27、s64 bytes from 192.168.1.5: seq=0 ttl=64 time=8.484 ms64 bytes from 192.168.1.5: seq=1 ttl=64 time=0.489 ms64 bytes from 192.168.1.5: seq=2 ttl=64 time=0.458 ms.- 192.168.1.5 ping statistics -3 packets transmitted, 3 packets received, 0% packet lossround-trip min/avg/max = 0.458/3.143/8.484 ms ping命

28、令測(cè)試提示的錯(cuò)誤信息n如果網(wǎng)絡(luò)不通,系統(tǒng)會(huì)產(chǎn)生Unreachable(不可到達(dá))提示信息,這時(shí)要檢查:網(wǎng)絡(luò)防火墻設(shè)置是否正確,因?yàn)榉阑饓Σ辉试SICMP流量通過(guò);網(wǎng)口電纜與接口是否正確連接;ping命令中的IP地址是否為正確地址;測(cè)試命令和IP地址是否在正確的終端窗口輸入。3.3.4 主機(jī)Linux環(huán)境NFS設(shè)置 NFS簡(jiǎn)述nNFS(Network File System,網(wǎng)絡(luò)文件系統(tǒng))協(xié)議,允許在一組通過(guò)網(wǎng)絡(luò)互聯(lián)的計(jì)算機(jī)中,計(jì)算機(jī)A的某個(gè)存儲(chǔ)位置(導(dǎo)出),能夠被計(jì)算機(jī)B使用。n例如,嵌入式Linux開(kāi)發(fā)環(huán)境中,主機(jī)與目標(biāo)板通過(guò)網(wǎng)口連接,且已經(jīng)根據(jù)前幾節(jié)設(shè)置了主機(jī)IP地址、防火墻,測(cè)試網(wǎng)絡(luò)通信正

29、常,那么通過(guò)對(duì)主機(jī)NFS設(shè)置,并且目標(biāo)板執(zhí)行相應(yīng)的mount掛接命令后,目標(biāo)板就能夠通過(guò)網(wǎng)口,把主機(jī)的指定目錄(導(dǎo)出),連接到目標(biāo)板直接使用。當(dāng)然前提是目標(biāo)板Linux內(nèi)核配置時(shí),允許使用NFS。nNFS協(xié)議通過(guò)網(wǎng)口的連接,把主機(jī)導(dǎo)出目錄的文件,連接到目標(biāo)板的指定目錄,目標(biāo)板可以像使用本地文件一樣,使用這些文件。 主機(jī)NFS設(shè)置 選擇NFS服務(wù)n一種設(shè)置方法是,選擇:紅帽子服務(wù),在彈出的服務(wù)窗口用光標(biāo)選擇nfs服務(wù),見(jiàn)圖3.7。n同時(shí)還要選擇去掉iptables服務(wù)。n然后關(guān)閉該窗口。圖3.7 選擇主機(jī)Linux允許NFS服務(wù)n另一種設(shè)置方法是,在主機(jī)終端窗口,輸入setup命令,在彈出的窗口

30、中選擇“系統(tǒng)服務(wù)”并回車,然后用光標(biāo)鍵上、下移動(dòng),用空格鍵選中nfs服務(wù),見(jiàn)圖3.8,然后去掉iptables服務(wù),最后用F12鍵退出。圖3.8 另一種方法選擇主機(jī)Linux允許NFS服務(wù) 設(shè)置主機(jī)NFS導(dǎo)出目錄及讀寫權(quán)限n除了要設(shè)置主機(jī)Linux允許NFS服務(wù)外,還要指定主機(jī)的哪些目錄作為NFS區(qū)域,即導(dǎo)出目錄,同時(shí)要指定該目錄允許的讀寫權(quán)限。n設(shè)置方法是用vi編輯器打開(kāi)/etc/exports文件:rootlocalhost # vi /etc/exportsn將其內(nèi)容修改為:/ *(rw)/home/nfs1 *(rw)n然后保存、退出。 啟動(dòng)NFS設(shè)置n通過(guò)以下命令,按新的設(shè)置重啟NF

31、S:rootlocalhost # /etc/init.d/nfs restart 查看NFS配置文件n可以用vi查看/etc/exports文件:rootlocalhost # vi /etc/exports/ *(rw)/home/nfs1 *(rw) 將主機(jī)/home/nfs1目錄掛接為目標(biāo)板/tmp目錄n此處所謂掛接指的是,在目標(biāo)板對(duì)應(yīng)的終端窗口,使用mount命令,執(zhí)行NFS協(xié)議的掛接。 掛接前主機(jī)建立/home/nfs1子目錄 rootlocalhost /# mkdir /home/nfs1n然后進(jìn)入/home/nfs1子目錄,用vi建立一個(gè)文件,文件名為abc,文件內(nèi)容可以隨意

32、輸入并保存。建立這個(gè)文件目的是在掛接后能夠從目標(biāo)板看到主機(jī)/home/nfs1下的這個(gè)文件。rootlocalhost /# cd /home/nfs1rootlocalhost nfs1# vi abcrootlocalhost nfs1# ls -l總計(jì) 4-rw-r-r- 1 root root 10 01-09 10:15 abc 在目標(biāo)板對(duì)應(yīng)終端窗口,執(zhí)行掛接命令 rootTechv_OMAP35xx:/# mount -o soft,nolock,rsize=1024 -v 192.168.1.5:/home/nfs1 /tmpn上述命令中的參數(shù)192.168.1.5:/home/

33、nfs1是主機(jī)IP地址及導(dǎo)出目錄,參數(shù)/tmp是目標(biāo)板目錄,掛接成功后,查看目標(biāo)板/tmp目錄,相當(dāng)于查看主機(jī)/home/nfs1目錄。 掛接后目標(biāo)板/tmp目錄列表 rootTechv_OMAP35xx:/# cd /tmp rootTechv_OMAP35xx:/var/volatile/tmp# ls -l -rw-r-r- 1 root root 10 Jan 9 2013 abcn另外,一次掛接成功,NFS掛接有效保持到目標(biāo)板RESET或關(guān)機(jī)為止,每次開(kāi)機(jī)或RESET后都要重新掛接。3.4 輸入、編譯、運(yùn)行一個(gè)程序 全過(guò)程舉例n假定要在主機(jī)/home/nfs1目錄下,建立一個(gè)子目錄h

34、ello,在該子目錄下建立一個(gè)hello.c文件、建立一個(gè)Makefile文件,然后在主機(jī)編譯hello.c文件,產(chǎn)生可執(zhí)行文件hello,在目標(biāo)板執(zhí)行該文件,執(zhí)行這些操作的全過(guò)程及相關(guān)文件的內(nèi)容如下所示。n下述操作中,在主機(jī)Linux終端窗口輸入minicom后,這個(gè)窗口成為目標(biāo)板終端窗口,然后掛接NFS;n操作中,命令是在目標(biāo)板終端窗口輸入的;n其余操作、均在主機(jī)Linux終端窗口進(jìn)行;n而和表示要輸入的文件的內(nèi)容。 建立hello目錄,進(jìn)入hello目錄rootlocalhost nfs1# mkdir /home/nfs1/hellorootlocalhost nfs1# cd /ho

35、me/nfs1/hello 用vi編輯程序建立hello.c源文件rootlocalhost hello# vi hello.c hello.c文件內(nèi)容為#include #include int main(int argc, char *argv) printf(Hello Reader,Congradulations!n); return(0); 建立Makefile文件rootlocalhost hello# vi Makefile Makefile文件內(nèi)容為CC = /usr/local/arm/arm-2007q3/bin/arm-none-linux-gnueabi-gccall:

36、 $(CC) -o hello hello.cclean: -rm -f *.o hellon輸入上述代碼后,保存文件并退出。n上述Makefile文件內(nèi)容中: CC 表示主編譯器 all: 表示主入口 clean:表示清除以前編譯產(chǎn)生的結(jié)果另外,語(yǔ)句“$(CC) -o hello hello.c”和“-rm -f *.o hello”,前面有一個(gè)制表符Tab,不是空格。 在目標(biāo)板終端窗口掛接NFSn如果沒(méi)有掛接NFS,則需要掛接。# mount -o soft,nolock,rsize=1024 -v 192.168.1.5:/home/nfs1 /tmp 在主機(jī)終端窗口對(duì)hello.c文件進(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ù)覽,若沒(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)論