国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

嵌入式Linux NFS方式下應(yīng)用程序的實(shí)現(xiàn)

發(fā)布時間:2010-10-10 22:22    發(fā)布者:conniede
關(guān)鍵詞: arm , linux , nfs , 服務(wù)器
1 前言

嵌入式Linux下的應(yīng)用程序的開發(fā),與Windows下應(yīng)用程序的開發(fā)大不相同。在Windows環(huán)境中,可以直接在PC上使用各種集成編譯開發(fā)工具,完成程序編輯、編譯和運(yùn)行,而在嵌入式Linux環(huán)境下,缺少簡單、高效的開發(fā)工具,程序的開發(fā)需要在PC+嵌入式Linux平臺完成。因此,在程序的調(diào)試運(yùn)行過程中,需要在Linux服務(wù)器和嵌入式開發(fā)板間交換信息,這種信息交換目前最常用的方式是FTP方式,即:先在Linux服務(wù)器上編輯源文件,然后交叉編譯生成可執(zhí)行文件,再通過FTP下載到嵌入式主機(jī)系統(tǒng)中運(yùn)行,如出現(xiàn)錯誤則回到Linux服務(wù)器上重新編譯,再下載運(yùn)行,直到程序正確運(yùn)行為止。但FTP方式缺點(diǎn)是效率比較低,而且無法在線調(diào)試。這里筆者討論另一種更高效率的信息交換方式,即:NFS(網(wǎng)絡(luò)文件系統(tǒng))方式下嵌入式Linux下的應(yīng)用程序的實(shí)現(xiàn)方法。本文以三星公司ARM9內(nèi)核芯片S3C2410開發(fā)板接口為基礎(chǔ),軟件采用Linux 2.4.21,編譯器為arm-linux-gcc的交叉編譯器。

2 嵌入式Linux開發(fā)平臺的建立

在嵌入式Linux下開發(fā)應(yīng)用程序,必須建立一個完善的嵌入式Linux開發(fā)環(huán)境。

2.1 嵌入式Linux開發(fā)平臺構(gòu)架

嵌入式Linux 開發(fā)平臺構(gòu)架主要包括:嵌入式Linux 服務(wù)器、工作站、嵌入式開發(fā)板系統(tǒng),其結(jié)構(gòu)如圖1所示。


嵌入式Linux 服務(wù)器由一臺PC充當(dāng),主要作為嵌入式Linux內(nèi)核編譯、應(yīng)用程序編譯的公共平臺,這里安裝標(biāo)準(zhǔn)的Redhat Linux操作系統(tǒng) ,工作站為普通局域網(wǎng)計算機(jī),可以是一臺或多臺,安裝Windows操作系統(tǒng),一般用來完成各種日常工作,可視需要與Linux 服務(wù)器、嵌入式開發(fā)板系統(tǒng)連接,嵌入式開發(fā)板系統(tǒng)是用來開發(fā)嵌入式應(yīng)用程序,它必須與Linux 服務(wù)器進(jìn)行網(wǎng)絡(luò)連接,目的是建立網(wǎng)絡(luò)文件系統(tǒng),把Linux服務(wù)器上的特定目錄共享到待調(diào)試的嵌入式開發(fā)板系統(tǒng)上,從而實(shí)時地對應(yīng)用程序進(jìn)行編輯、編譯、調(diào)試。另外嵌入式開發(fā)板系統(tǒng)可通過串口與工作站RS232連接,使用工作站上的超級終端作為嵌入式開發(fā)板系統(tǒng)上的輸入/輸出終端。

2.2 嵌入式開發(fā)板操作系統(tǒng)的移植

嵌入式開發(fā)板操作系統(tǒng)就是嵌入式Linux,它指的是標(biāo)準(zhǔn)Linux操作系統(tǒng)的內(nèi)核,把標(biāo)準(zhǔn)Linux操作系統(tǒng)的進(jìn)行適當(dāng)?shù)牟眉簦尤胍恍┨囟ǖ墓δ埽纬梢粋小巧、高效的滿足特定需要的專用操作系統(tǒng),然后移植到ARM體系結(jié)構(gòu)的開發(fā)板系統(tǒng)上,移植主要包括建立交叉編譯環(huán)境、修改內(nèi)核源碼、內(nèi)核裁剪和內(nèi)核編譯4個環(huán)節(jié)。

2.2.1建立交叉編譯環(huán)境

交叉編譯是指利用運(yùn)行在某臺計算機(jī)上的編譯器編譯某個源程序生成在另一種結(jié)構(gòu)計算機(jī)上運(yùn)行的目標(biāo)代碼的過程。編譯器的生成依賴于相應(yīng)的函數(shù)庫,而這些函數(shù)庫又得依靠編譯器來編譯。建立交叉編譯環(huán)境就是將ARM使用的編譯器(如:arm-linux-gcc)和函數(shù)庫(如:glibc)安裝到指定目錄,并使用configure配置好Makefile文件。

2.2.2 修改內(nèi)核源代碼

Linux內(nèi)核分為體系結(jié)構(gòu)相關(guān)部分和體系結(jié)構(gòu)無關(guān)部分。在Linux啟動的第一階段,內(nèi)核與體系結(jié)構(gòu)相關(guān)部分首先執(zhí)行,它會完成硬件寄存器設(shè)置,內(nèi)存映射等初始化工作。然后把控制權(quán)轉(zhuǎn)給內(nèi)核中與系統(tǒng)體系結(jié)構(gòu)無關(guān)的部分。在移植工作中要修改的代碼主要集中在與體系結(jié)構(gòu)相關(guān)的部分。ARM芯片的體系結(jié)構(gòu)在arch/arm目錄下。首先根據(jù)芯片手冊修改boot/init.S文件中的:片選組基地址寄存器、DRAM存儲配置寄存器、DRAM片選寄存器、中斷屏蔽寄存器等。然后修改內(nèi)核的鏈接及裝入ELF。最后將系統(tǒng)中可用頁面的數(shù)目、文件系統(tǒng)大小等信息以參數(shù)形式從啟動代碼傳給內(nèi)核,完成設(shè)置陷阱,初始化中斷,初始化計時器,初始化控制臺等一系列操作而使內(nèi)核正常啟動。

2.2.3 內(nèi)核裁剪和編譯

Linux內(nèi)核的裁剪支持三種配置方式,即make confg、make menuconfig、make xconfg,一般采用菜單式用命令make menuconfig對系統(tǒng)進(jìn)行裁剪樣較為簡單(具體見ARM9配置手冊)。內(nèi)核裁剪之后,最后要進(jìn)行交叉編譯后在arch/arm目錄下生成內(nèi)核映象文件zImage,分別使用命令如下:make clean(清理編譯環(huán)境);make dep(編譯依賴文件);make zImage(編譯內(nèi)核)進(jìn)行內(nèi)核編譯。

3 嵌入式Linux NFS開發(fā)環(huán)境的建立

NFS(Network File System)即:網(wǎng)絡(luò)文件系統(tǒng),它是一種將遠(yuǎn)程主機(jī)上的目錄通過網(wǎng)絡(luò)連接到本地主機(jī)的一種機(jī)制。通過對網(wǎng)絡(luò)文件系統(tǒng)的支持,用戶可以很方便地在本地主機(jī)上操作遠(yuǎn)程主機(jī)上的共享目錄。因此,可以通過建立網(wǎng)絡(luò)文件系統(tǒng),把Linux服務(wù)器上的特定目錄共享到嵌入式開發(fā)板系統(tǒng)上,這樣就可以直接在嵌入式開發(fā)板上操作Linux服務(wù)器,特別是能夠?qū)崟r在線地對程序進(jìn)行編輯、調(diào)試、運(yùn)行,極大地提高了嵌入式Linux下的應(yīng)用程序的開發(fā)的效率。  
嵌入式Linux 開發(fā)平臺下的NFS環(huán)境配置,主要是對嵌入式Linux服務(wù)器端的NFS配置和嵌入式開發(fā)板系統(tǒng)的NFS客戶端配置,使其支持NFS。

3.1 Linux服務(wù)器端的NFS配置

以root賬戶登錄Linux服務(wù)器,編輯共享目錄配置文件exports,設(shè)定共享目錄及權(quán)限,執(zhí)行# vi/etc/exports命令,在exports文件中添加 /home/work 192.168.33.*(rw)后保存,其作用是是將/home/work設(shè)為共享目錄,IP地址在192.168.33.*范圍內(nèi)的計算機(jī)可以用讀寫的方式訪問共享目錄/home/work;接著執(zhí)著命令
#/etc /rc.d /init.d /protmap start來進(jìn)行端口映射;最后執(zhí)行命令
#/etc /rc.d /init.d /nfs start來啟動NFS服務(wù),啟動NFS服務(wù)后,還需檢查Linux服務(wù)器的iptables、ipchains等選項(xiàng)及文件/etc/hosts.deny、/etc/hosts.allow來確保沒有屏蔽NFS使用的端口和允許通信的主機(jī)。配置完畢后,可以在Linux服務(wù)器上運(yùn)行如下命令:

# mount –t nfs 192.168.33.1:/home/work /mnt 進(jìn)行NFS服務(wù)器的回環(huán)測試,驗(yàn)證共享目錄是否能夠被訪問,若配置成功,執(zhí)行 # is/mnt命令后,能夠在/mnt目錄中看到/home/work共享目錄中的內(nèi)容。


3.2 嵌入式開發(fā)板系統(tǒng)NFS客戶端的配置

首先運(yùn)行在嵌入式開發(fā)板系統(tǒng)的Linux內(nèi)核支持NFS客戶端,運(yùn)行#make menuconfig命令后,選擇菜單中Fils System--->選項(xiàng),按車回鍵后選擇下級菜單中的Network File System--- >選項(xiàng),按車回鍵后選中級菜單中的NFS system support和Provide NFSv3 client support兩項(xiàng),保存退出;然后分別運(yùn)行# make clean、# make dep、# make zImage命令來重新編譯內(nèi)核,最后在arch/arm/boot中生成一個內(nèi)核映像文件zImage;然后在Redboot下運(yùn)行命令Redboot >load –v –r –b 0x312000,將Linux內(nèi)核文件zImage下載到嵌入式開發(fā)板系統(tǒng)的SDRAM并燒寫到FLASH中,其中0x312000為開發(fā)板系統(tǒng)SDRAM的地址,文件下載完畢后出現(xiàn)如下提示信息:Raw file loaded 0x00312000-0x003fae5f,再運(yùn)行命令Redboot >fis create –b 0x312000 -1 0xc37df zImage將其保存在FLASH文件系統(tǒng)中;最后分別執(zhí)行命令fis load ramdisk.gz、 load zImageis、exec –r ox1000000 0x312000后,開發(fā)板系統(tǒng)中的配置好嵌入式Linux NFS開始運(yùn)行。在嵌入式開發(fā)板系統(tǒng)的Linux Shell下,運(yùn)行# mkdir /mnt/nfs命令來建立Linux服務(wù)器輸出共享目錄的掛載點(diǎn),運(yùn)行# mount –o nolock –t nfs 92.168.33.1: /home/work /mnt/nfs命令使Linux服務(wù)器的輸出目錄:/home/work通過NFS映射到了嵌入開發(fā)板系統(tǒng)的/mnt/nfs。

4 嵌入式Linux NFS方式下應(yīng)用程序的實(shí)現(xiàn)

完成了對Linux服務(wù)器端的NFS配置和嵌入式開發(fā)板系統(tǒng)NFS客戶端的配置后,使雙方均能支持NFS才能在此方式下進(jìn)行應(yīng)用程序的開發(fā)。

4.1 NFS方式的應(yīng)用程序開發(fā)流程

首先在Linux服務(wù)器上編輯源文件,然后交叉編譯,最后生成可執(zhí)行文件,生成的執(zhí)行文件在嵌入式開發(fā)板端通過NFS方式掛載Linux服務(wù)器的共享目錄,讓應(yīng)用程序直接運(yùn)行在嵌入式開發(fā)板系統(tǒng)中,進(jìn)行編譯、調(diào)試。其具體開發(fā)流程如圖2所示。


當(dāng)完成了應(yīng)用程序的調(diào)試與運(yùn)行后,就可以將調(diào)試好的應(yīng)用程序下載到嵌入式開發(fā)板系統(tǒng)的FLASH文件系統(tǒng),或直接編譯到嵌入式Linux內(nèi)核并燒寫到系統(tǒng)的FLASH,從而最終形成一個獨(dú)立的嵌入式應(yīng)用系統(tǒng)。

4.2 NFS方式下的一個應(yīng)用程序?qū)嵗?/strong>

下面是一個求n!的階乘的簡單示例,來說明基于嵌入式Linux的應(yīng)用程序的實(shí)現(xiàn)方法。
第一步:編輯應(yīng)用程序:

在Linux服務(wù)器的工作目錄:即輸出共享目錄/home/work下使用Vi文本編輯器來編輯應(yīng)用程序,應(yīng)用程序取名為jiecheng.c。輸入命令 # vi jieccheng.c,完成源程序代碼編輯后,保存文件并退出Vi。

源程序代碼如下:


第二步:編譯應(yīng)用程序:

輸入命令 # arm-linux-gcc –o jiecheng jieccheng.c來編譯應(yīng)用程序,當(dāng)命令執(zhí)行完畢后,會在/home/work目錄下生成可執(zhí)行文件jiecheng。

第三步:在嵌入式開發(fā)板端掛載Linux服務(wù)器的輸出共享目錄:

啟動在嵌入式開發(fā)板端系統(tǒng)的配置好的Linux,使用PC超級終端作為用戶操作界面,輸入如下命令樣 # mkdir /mnt/fns //建立Linux服務(wù)器的輸出共享目錄掛載點(diǎn)

# mount –o nolock –t fns 1992.169.3.1:/home/work/ /mnt/nfs //Linux服務(wù)器的輸出目錄:/home/work通過NFS映射到了嵌入開發(fā)板系統(tǒng)的/mnt/nfs。

# cd /mnt/nfs //進(jìn)入目錄

# ls //顯示目內(nèi)容

# ./jiecheng //運(yùn)行求階乘程序

程序運(yùn)行后,用戶可以在使用PC超級終端上輸入一個整數(shù)后可以看到輸出結(jié)果。

5 結(jié)束語

由于采用NFS方式避免了將可執(zhí)行文件從Linux服務(wù)器頻繁下載到嵌入式開發(fā)板端的過程,因此用這種方式開發(fā)應(yīng)用程序可以大大提高應(yīng)用程序的開發(fā)效率。本文的創(chuàng)新點(diǎn)是:在自已構(gòu)造的基于ARM9內(nèi)核芯片,處理器為S3C2410為基礎(chǔ)的開發(fā)板系統(tǒng)上,實(shí)現(xiàn)了NFS方式下的應(yīng)用程序開發(fā)。
本文地址:http://www.qingdxww.cn/thread-31417-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區(qū)
  • PIC18-Q71系列MCU概述
  • 安靜高效的電機(jī)控制——這才是正確的方向!
  • 無線充電基礎(chǔ)知識及應(yīng)用培訓(xùn)教程3
  • 5分鐘詳解定時器/計數(shù)器E和波形擴(kuò)展!
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产成人综合久久精品尤物 | 国产在线精品福利一区二区三区 | 538在线视频 | 欧美一区欧美二区 | 四虎影视在线看免费 720p | 最新日韩欧美不卡一二三区 | 国产欧美日韩综合精品无毒 | 青草视频在线观看免费资源 | 成人精品h高辣长篇小说 | 日韩高清伦理片中字在线观看 | 岛国精品视频 | 99久久精品费精品国产一区二 | 中文天堂在线最新2022更新 | 国产情侣真实露脸在线最新 | 蜜柚影视免费版在线视频观看 | 黄页在线免费观看 | 国产一级一级一级成人毛片 | 久久免费公开视频 | 欧美黄色高清 | 成人免费精品视频 | 欧美色片在线观看 | 成人黄页网站免费观看大全 | 欧洲日韩视频二区在线 | 亚洲另类天天更新影院在线观看 | 日本不卡免费高清一级视频 | 色综合五月婷婷 | 69网站在线观看 | 在线观看免费国产视频 | 中文国产成人精品久久水 | 91视频青青草 | 精品一区二区三区三区 | 久久精品国产91久久麻豆自制 | 精品国产免费久久久久久婷婷 | 成年黄网站免费大全毛片 | 污网站在线观看 | 欧美理论影院在线观看免费 | 日本黄大片在线观看 | 毛片免费在线观看 | 狠狠色婷婷丁香综合久久韩国 | 中文字幕日韩一区 | 天天色综合三 |