www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式硬件
[導(dǎo)讀]在目標(biāo)機(jī)上可以運(yùn)行uClinux了,接著就需要開(kāi)發(fā)完成特定任務(wù)的應(yīng)用程序了。由于嵌入式uClinux的特殊開(kāi)發(fā)環(huán)境(主機(jī)——目標(biāo)機(jī)),其應(yīng)用程序的開(kāi)發(fā)模式也有多種。一種

在目標(biāo)機(jī)上可以運(yùn)行uClinux了,接著就需要開(kāi)發(fā)完成特定任務(wù)的應(yīng)用程序了。由于嵌入式uClinux的特殊開(kāi)發(fā)環(huán)境(主機(jī)——目標(biāo)機(jī)),其應(yīng)用程序的開(kāi)發(fā)模式也有多種。

一種是在主機(jī)上編寫程序,然后編譯、連接、調(diào)試,成功后將程序和內(nèi)核一同編譯并下載到目標(biāo)板。這種模式中不利于開(kāi)發(fā)的問(wèn)題有:主機(jī)和目標(biāo)機(jī)的運(yùn)行環(huán)境 (如指令集,函數(shù)庫(kù)等)不同。另一種是通過(guò)網(wǎng)線或串口線將目標(biāo)機(jī)和主機(jī)連起來(lái),直接在目標(biāo)機(jī)上開(kāi)發(fā)調(diào)試。這種模式使用NFS將主機(jī)的特定目錄mount到目標(biāo)機(jī)上,對(duì)主機(jī)的操作就是對(duì)目標(biāo)機(jī)的操作。采用 NFS模式可以方便應(yīng)用程序的開(kāi)發(fā),減少映像文件的下載次數(shù)和對(duì)flash的燒寫次數(shù)。這對(duì)于縮短開(kāi)發(fā)周期,提高開(kāi)發(fā)效率,加快產(chǎn)品的上市時(shí)間相當(dāng)重要。

1 NFS的簡(jiǎn)要介紹

NFS是Network File System(網(wǎng)絡(luò)文件系統(tǒng))的縮寫,最初是由Sun公司開(kāi)發(fā)出來(lái)的分布式文件系統(tǒng)。提供NFS服務(wù)的一方是NFS Server(遠(yuǎn)程主機(jī)),使用NFS服務(wù)的一方是NFS Client(客戶機(jī))。利用它,客戶機(jī)可以將遠(yuǎn)程主機(jī)提供的共享目錄掛載到自己的目錄上,在本地的操作如同對(duì)遠(yuǎn)程主機(jī)的操作。

NFS有自己的協(xié)議與端口號(hào)(2049),它本身并沒(méi)有提供傳輸資料的協(xié)議,但是NFS卻能通過(guò)網(wǎng)絡(luò)進(jìn)行資料的共享。這是因?yàn)樵谫Y料傳送或者其它相關(guān)數(shù)據(jù)交互的時(shí)候,NFS用遠(yuǎn)程過(guò)程調(diào)用(Remote Procedure Call, RPC)的傳輸協(xié)議。RPC服務(wù)portmap負(fù)責(zé)管理服務(wù)與相關(guān)端口映射的工作。因此,使用NFS服務(wù)必須先激活RPC服務(wù)portmap,在主機(jī)和目標(biāo)機(jī)上都要實(shí)現(xiàn)RPC服務(wù),才可以使用NFS。

使用NFS Server還需要激活至少兩個(gè)系統(tǒng)守護(hù)進(jìn)程:rpc.nfsd用于管理Client使用主機(jī)共享目錄的權(quán)限,包含對(duì)Client的IP的判別; rpc.mountd用于管理NFS的文件系統(tǒng)。當(dāng)Client通過(guò)rpc.nfsd后,在使用NFS Server提供的文件前,還必須取得使用權(quán)限的認(rèn)證。rpc.nfsd及rpc.mountd的系統(tǒng)服務(wù)是由nfs-utils提供的。

2配置主機(jī)和目標(biāo)機(jī)的NFS服務(wù)

嵌入式系統(tǒng)的開(kāi)發(fā)是基于主機(jī)/目標(biāo)機(jī),在主機(jī)上要安裝目標(biāo)機(jī)的交叉編譯工具。需要在主機(jī)上編譯出可以在目標(biāo)機(jī)上運(yùn)行的可執(zhí)行文件。該可執(zhí)行文件通常需要下在到目標(biāo)機(jī)上才可以運(yùn)行,而利用NFS可以不用下載即可運(yùn)行。下面以主機(jī)RedHat9.0+PC,IP為192.168.111.8;目標(biāo)機(jī) uCLinux(內(nèi)核為linux.2.4.x)+S3C44B0,IP為192.168.111.1的環(huán)境講解使用NFS需要的配置。

2.1主機(jī)上的配置

NFS服務(wù)需要內(nèi)核(Kernel)支持,因此,內(nèi)核版本最好高于2.2.x。如果重新編譯內(nèi)核,一定要選擇支持NFS。主機(jī)上的配置均以root用戶進(jìn)行。

2.1.1確認(rèn)是否安裝了NFS服務(wù)

NFS服務(wù)一般在RedHat9.0安裝時(shí)就默認(rèn)安裝的。檢查是否安裝了nfs的方法是:

(1)查看/etc/rc.d/init.d目錄下是否有nfs和nfslock文件,如果有說(shuō)明主機(jī)已經(jīng)安裝了nfs服務(wù)。(#ls /etc/rc.d/init.d/)

(2)#rpm -qa| grep -i nfs,出現(xiàn)redhat-config-nfs-1.0.4-5,

nfs-utils-1.0.1-2.9這表示安裝了NFS。如果沒(méi)有安裝,安裝過(guò)程如下:

#mount /dev/cdrom /mnt/cdrom(掛載光盤)

#cd /mnt/cdrom/RedHat/RPMS

#rpm -ivh nfs-utils-1.0.1-2.9.i386.rpm rpm

2.1.2檢查RPC程序是否已經(jīng)啟動(dòng)

#rpcinfo –p,檢查系統(tǒng)RPC運(yùn)行狀況,若出現(xiàn)

100000 2 tcp 111 portmapper

100000 2 udp 111 portmapper 表示已經(jīng)啟動(dòng)RPC程序。

2.1.3啟動(dòng)主機(jī)上的NFS服務(wù),并關(guān)閉防火墻

NFS服務(wù)一般不會(huì)在開(kāi)機(jī)時(shí)自動(dòng)啟用。啟動(dòng)該服務(wù):

(1)#ntsysv,選中nfs,nfslock和portmap;或者#setup,選擇System services里的nfs,nfslock和portmap。

(2)啟用portmap服務(wù),# /etc/rc.d/init.d/portmap start。也可以#service nfs start 和#service portmap start啟動(dòng)服務(wù)。激活portmap后,就會(huì)出現(xiàn)一個(gè)端口號(hào)為111的rpc服務(wù)。至于nfs則會(huì)激活至少兩個(gè)以上的系統(tǒng)守護(hù)進(jìn)程,然后就開(kāi)始監(jiān)聽(tīng) Client的請(qǐng)求,用#cat /var/log/messages可以看到以上操作是否成功。

由于防火墻會(huì)關(guān)閉NFS服務(wù)(2049端口號(hào))的對(duì)外服務(wù),所以必須關(guān)閉防火墻。在RedHat9.0上運(yùn)行setup,選擇Firewall configuration,選中No firewall。然后到上一層菜單選擇System services,去掉ipchains 和iptables 兩項(xiàng)服務(wù)。

2.1.4設(shè)置共享目錄

在文件/etc/exports中設(shè)定允許被訪問(wèn)的共享目錄以及訪問(wèn)的權(quán)限。該文件的格式:/共享目錄 主機(jī)名稱或IP(權(quán)限參數(shù))。修改此文件添加共享目錄(該目錄要存在),/home/pub *() //允許所有主機(jī)訪問(wèn)此目錄,權(quán)限為rw.

/home/nfs 192.168.111.8(rw) //允許IP為192.168.111.8的主機(jī)訪問(wèn)此目錄。權(quán)限為讀寫。

權(quán)限參數(shù)設(shè)定為:

rw:讀寫權(quán)限 ro:只讀權(quán)限

no_root_squash:如果是root使用共享目錄,對(duì)于此目錄,他就具有root的權(quán)限

root_squash:如果是root使用共享目錄,那么他的權(quán)限將被壓縮為匿名者(nobody)

all_squash:不論NFS的使用者身份如何,他都會(huì)被壓縮成為匿名使用者(nobody)

anonuid:前面的匿名使用者的UID設(shè)定值,通常為nobody;也可自行設(shè)定UID的值。(這個(gè)UID必需要存在于/etc/passwd中)

anongid:同anonuid,但是變成groupID就是了

sync:資料同步寫入到內(nèi)存與硬盤中

async:資料會(huì)先暫存于內(nèi)存當(dāng)中,而不會(huì)直接寫入硬盤

2.1.5使/etc/exports文件生效,導(dǎo)出共享目錄

修改了/etc/exports文件后,不需要重新激活nfs,只需要重掃描/etc/exports的文件,將設(shè)定重新加載即可,所使用的命令格式為#exportfs [-aruv]。其參數(shù)說(shuō)明:

-a 全部掛載(或卸載) /etc/exports 文件中的設(shè)定

-r重新掛載/etc/exports里的設(shè)定,此外也更新/etc/exports及/var/lib/nfs/xtab

-u 卸載所掛目錄

-v將共享的目錄的情況顯示到屏幕上

這里,輸入#exportfs –rv,會(huì)將/etc/exports中所設(shè)置的共享目錄輸出。

exporting 192.168.111.8:/home/nfs

exporting *:/home/pub

reexporting 192.168.111.8:/home/nfs to kernel

[!--empirenews.page--]

每次修改了/etc/exports文件后都需要運(yùn)行一次該命令。

2.1.6檢查主機(jī)配置是否正確

(1)檢驗(yàn)所共享的目錄內(nèi)容,可以查看/var/lib/nfs/xtab這個(gè)文件:

# cat /var/lib/nfs/xtab 顯示共享出去的目錄信息。也可以用#showmount–e 192.168.111.1顯示主機(jī)上的共享目錄.

(2)觀察NFS激活的端口號(hào),# netstat –utln顯示內(nèi)容中有

udp 0 0 0.0.0.0:2049 0.0.0.0:*

這里2049是nfs服務(wù)所開(kāi)啟的端口,其它的端口是RPC Server其它程序隨機(jī)產(chǎn)生的,每次restart nfs都會(huì)得到不一樣的端口號(hào)。

(3)mount自己提供的共享目錄。#mount –t nfs 192.168.111.1:/home/pub /mnt/nfs,將主機(jī)/home/pub掛載到/mnt/nfs目錄下。如果 mount成功,表示主機(jī)配置正確。#cd /mnt/nfs,#ls 看見(jiàn)的內(nèi)容就是/home/pub下的內(nèi)容。

2.1.7卸載共享目錄,停止NFS服務(wù)

卸載共享目錄#umount /mnt/nfs(#umount /home/nfs)

停止(啟動(dòng))portmap服務(wù) # /etc/rc.d/init.d/portmap stop(restart)

停止(啟動(dòng))nfs服務(wù) #/etc/rc.d/init.d/nfs stop(restart)

2.2目標(biāo)機(jī)上的配置

目標(biāo)機(jī)為內(nèi)核為ARM7TDMI的S3C44BO板,運(yùn)行uClinux操作系統(tǒng)。在目標(biāo)機(jī)端使用NFS掛載主機(jī)上的共享目錄,需要配置內(nèi)核和相應(yīng)的用戶程序(make menuconfig)。

2.2.1配置內(nèi)核

Networking options --> (缺省) //開(kāi)啟網(wǎng)絡(luò)功能

Network device support --> (缺省)

File systems ->Network File Systems——〉 //支持NFS文件系統(tǒng)

<*> NFS file system support

# Provide NFSv3 client support

2.2.2用戶程序配置

Network Applications -->

# portmap

BusyBox -->

# mount(mount nfs support)(mount/unmount 命令有兩個(gè)地方可以選擇,F(xiàn)ilesystem Applications 或BusyBox。這里推薦選擇BusyBox。

配置完畢后,將編譯生成的映像文件image.rom下載到目標(biāo)機(jī)上flash中。

3 基于NFS的應(yīng)用程序開(kāi)發(fā)

3.1在主機(jī)上編譯程序,并生成在目標(biāo)機(jī)上運(yùn)行的程序

在主機(jī)/home/pub下編輯hi.c,其內(nèi)容:

#include

main(){printf(“hi! Good!\n”);}

交叉編譯hi.c,#arm-elf-gcc –Wall –Wl,-elf2flt –o hi hi.c生成flt格式的可執(zhí)行文件hi。修改hi的權(quán)限#chmod 711 hi。該文件可以直接下載到目標(biāo)機(jī)上運(yùn)行,這里利用NFS看其執(zhí)行情況。

3.2目標(biāo)機(jī)利用NFS掛載主機(jī)并進(jìn)行調(diào)試

用串口線將主機(jī)的COM1和目標(biāo)機(jī)的COM0連接起來(lái),同時(shí)接上網(wǎng)線。在主機(jī)上打開(kāi)minicom(設(shè)置參數(shù):57600 8N1,無(wú)流控)用于同目標(biāo)機(jī)通訊。目標(biāo)機(jī)上電或者復(fù)位,開(kāi)始啟動(dòng)uClinux,顯示信息成功后進(jìn)入sh。

在目標(biāo)機(jī)上建立/var/nfs用于掛載主機(jī)上的目錄(這里采用的是romfs只讀文件系統(tǒng),/var使用的是RAM disk驅(qū)動(dòng)的ext2文件系統(tǒng)。所以僅/var可以用于讀寫,其它目錄只可以讀)# mkdir /var/nfs

啟動(dòng)目標(biāo)機(jī)上portmap服務(wù) # portmap &

掛載主機(jī)上的共享目錄#mount -t nfs 192.168.111.1:/home/pub /var/nfs

#ls /var/nfs可以看到主機(jī)上/home/pub的文件。此時(shí),可以運(yùn)行該目錄下的可執(zhí)行程序hi,#./hi(注意要加“./”)出現(xiàn)hi! Good!。程序正常運(yùn)行,將其編譯到內(nèi)核里。將hi拷貝到uClinux源碼包的/romfs/bin下編譯,生成的image.rom可以下載到 flash。在板子上的/bin下就有hi程序了,并且可以直接執(zhí)行hi。

卸載使用umount # umount /var/nfs。如果讓目標(biāo)機(jī)啟動(dòng)時(shí)自動(dòng)運(yùn)行portmap服務(wù),可以修改rc文件(uClinux源碼中),在最后加入/bin/portmap&,mkdir /var/nfs。

4 小結(jié)

使用NFS開(kāi)發(fā)模式,關(guān)鍵在于對(duì)主機(jī)和目標(biāo)機(jī)的配置。如果配置不當(dāng),就會(huì)mount失敗。以下是值得注意的地方:

mount成功,可是運(yùn)行程序. /hi時(shí)報(bào)告錯(cuò)誤:Permission denied.即主機(jī)拒絕操作。需要修改主機(jī)上程序的權(quán)限chmod 777 /home/pub/hi。然后在目標(biāo)機(jī)端運(yùn)行./hi即可。

主機(jī)上設(shè)置時(shí)候一定要關(guān)閉防火墻,不然目標(biāo)機(jī)mount的時(shí)候沒(méi)有響應(yīng)。

目標(biāo)機(jī)上一定要先開(kāi)啟portmap服務(wù)。

主機(jī)和板子的IP在同一個(gè)網(wǎng)段。

如果要運(yùn)行大的應(yīng)用程序,在Mount的時(shí)候最好加上:

-o rsize=1024,wsize=1024,timeo=15的參數(shù),否則多半會(huì)得到server not responsing的提示信息。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

德國(guó)康佳特亮相上海工博會(huì),展示多款應(yīng)用就緒的嵌入式解決方案平臺(tái)

關(guān)鍵字: 嵌入式 傳感器 處理器

雙方攜手為客戶打造以存儲(chǔ)為核心的模塊化基礎(chǔ)架構(gòu),支持先進(jìn)的多裸片架構(gòu)設(shè)計(jì)

關(guān)鍵字: 非易失性存儲(chǔ) 半導(dǎo)體 嵌入式

本屆年會(huì)將在上海(11月13-14日)、北京(11月19-20日)和深圳(11月27-28日)舉行,面向嵌入式設(shè)計(jì)工程師推出25門技術(shù)課程

關(guān)鍵字: 嵌入式 MCU 模擬

上海2025年9月5日 /美通社/ -- 由紐倫堡會(huì)展(上海)有限公司舉辦的上海國(guó)際嵌入式會(huì)議將于 2025 年 10 月 16-17 日在上海世博展覽館舉辦。 此次會(huì)議將由三個(gè)版塊組成:嵌入式技術(shù)會(huì)議、汽...

關(guān)鍵字: 嵌入式 CE CHINA EMBEDDED

從外部看,電子系統(tǒng)仿佛一個(gè)統(tǒng)一的學(xué)科或設(shè)備,各組成部分協(xié)同工作,渾然一體。然而揭開(kāi)表象,其內(nèi)在卻是另一番景象:一個(gè)碎片化、多層次的世界——其中每一層都獨(dú)立且復(fù)雜,衍生出各自特有的工具、專家、工作流程,甚至哲學(xué)體系。

關(guān)鍵字: 嵌入式 電子系統(tǒng) 半導(dǎo)體

8位單片機(jī)在嵌入式設(shè)計(jì)領(lǐng)域已經(jīng)成為半個(gè)多世紀(jì)以來(lái)的主流選擇。盡管嵌入式系統(tǒng)市場(chǎng)日益復(fù)雜,8位單片機(jī)依然不斷發(fā)展,積極應(yīng)對(duì)新的挑戰(zhàn)和系統(tǒng)需求。如今,Microchip推出的8位PIC?和AVR?單片機(jī)系列,配備了先進(jìn)的獨(dú)立...

關(guān)鍵字: 單片機(jī) 嵌入式 CPU

深圳2025年8月28日 /美通社/ -- 8月26日,2025 ELEXCON深圳國(guó)際電子展盛大啟幕。本屆大會(huì)以"All for AI"為主題,深圳市德...

關(guān)鍵字: AI 工業(yè)級(jí) SSD 嵌入式

深圳2025年8月26日 /美通社/ -- 8月26日,由博聞創(chuàng)意會(huì)展主辦的 第22屆深圳國(guó)際電子展暨嵌入式展(elexcon2025)在深圳(福田)會(huì)展中心隆重開(kāi)幕。 作為中國(guó)電子與嵌入式技術(shù)領(lǐng)域的專業(yè)大展,本屆展會(huì)...

關(guān)鍵字: 嵌入式 電子 高通 AI

模塊化設(shè)計(jì)作為一種將系統(tǒng)拆分為獨(dú)立、可復(fù)用組件的方法,能夠在低代碼平臺(tái)中實(shí)現(xiàn)功能的靈活組合,并最大限度地提升系統(tǒng)性能。本文將探討如何通過(guò)模塊化設(shè)計(jì),使得低代碼平臺(tái)既能快速適應(yīng)變化,又能保持高效穩(wěn)定的運(yùn)行。

關(guān)鍵字: 模塊化設(shè)計(jì) 嵌入式

多數(shù)受訪粉絲認(rèn)為,AI驅(qū)動(dòng)的功能會(huì)對(duì)他們觀看體育賽事的方式產(chǎn)生重大影響 超過(guò)半數(shù)的受訪者希望通過(guò)AI技術(shù)獲得對(duì)過(guò)去、現(xiàn)在和未來(lái)體育賽事的評(píng)論和分析 移動(dòng)體育應(yīng)用...

關(guān)鍵字: IBM AI 應(yīng)用程序 移動(dòng)
關(guān)閉