引言
嵌入式系統(tǒng)的開發(fā)與應(yīng)用是目前發(fā)展的一個(gè)熱點(diǎn),而嵌入式系統(tǒng)的開發(fā)手段在嵌入式開發(fā)中起著至關(guān)重要的作用。其中,通過(guò)以太網(wǎng)調(diào)試和運(yùn)行開發(fā)程序的方法在嵌入式系統(tǒng)的開發(fā)中得到了廣泛應(yīng)用,本文就此展開說(shuō)明。
mClinux特點(diǎn)簡(jiǎn)介
1. 取消了內(nèi)存管理單元MMU,具有完整的網(wǎng)絡(luò)功能。
2. 完備的文件系統(tǒng)支持,采用了romfs文件系統(tǒng)作為根文件系統(tǒng),相對(duì)于一般的ext2文件系統(tǒng)要求更少的空間。
3. 使用了flat可執(zhí)行文件格式:elf格式有很大的文件頭,flat文件對(duì)文件頭和一些段信息做了簡(jiǎn)化。
4. 體積小,可移植性強(qiáng)。
圖1 開發(fā)環(huán)境示意圖
常見(jiàn)的基于mClinux的嵌入
式系統(tǒng)開發(fā)環(huán)境的構(gòu)建方法
在嵌入式系統(tǒng)的開發(fā)過(guò)程中,通常都要建立交叉編譯環(huán)境,圖1為常見(jiàn)的嵌入式系統(tǒng)開發(fā)環(huán)境示意圖,基于以太網(wǎng)下的調(diào)試一般應(yīng)將宿主機(jī)和用戶板接入到局域網(wǎng)中,本文以mClinux +S3C4510B的開發(fā)環(huán)境為例進(jìn)行說(shuō)明。通常的做法是在宿主機(jī)上安裝RedHat Linux操作系統(tǒng),并同時(shí)安裝針對(duì)ARM開發(fā)的工具鏈arm-elf-tools。這樣,在宿主機(jī)上編輯和編譯好的用戶程序,就可以通過(guò)以太網(wǎng),將編譯后的可執(zhí)行文件下載到用戶板來(lái)運(yùn)行。下載方式主要有以下幾種。
FTP方式
首先需要打開一個(gè)超級(jí)終端,設(shè)置好相應(yīng)的通訊參數(shù),再給系統(tǒng)上電,就可以在超級(jí)終端里看到mClinux的啟動(dòng)信息。這里指明宿主機(jī)的IP地址是:10.5.22.247,用戶板的IP地址是:10.5.22.8,執(zhí)行如下命令來(lái)配置用戶板的IP:
# ifconfig eth0 10.5.22.8
eth0 指網(wǎng)絡(luò)設(shè)備。需要注意的是,用戶板的IP地址需和宿主機(jī)的IP地址在同一網(wǎng)段,否則難以正常的訪問(wèn)宿主機(jī)。
這時(shí)如果可以ping通宿主機(jī),就可以通過(guò)FTP方式訪問(wèn)宿主機(jī)的網(wǎng)絡(luò)資源了。
接下來(lái)選擇用戶程序的存放目錄。應(yīng)注意,如果用戶板用的是romfs文件系統(tǒng),那么只有少數(shù)幾個(gè)目錄可以訪問(wèn)(如tmp ,var等)。選好存放目錄之后,就可以通過(guò)FTP方式訪問(wèn)宿主機(jī)了,鍵入如下命令:
# cd /tmp
# ftp 10.5.22.247
然后輸入用戶名和密碼以確定是否具有訪問(wèn)權(quán)限,成功登陸之后,需要確定文件傳送格式。FTP可以用binary和ascii兩種方式來(lái)傳送文件,這里選擇的是binary方式。輸入以下指令來(lái)獲取文件:
# binary
# get filename
# bye
執(zhí)行# bye后就可以退出FTP。這時(shí)可以鍵入ls命令來(lái)查看文件是否已經(jīng)傳到選定的目錄下。接下來(lái)要做的是改變文件的權(quán)限,如果沒(méi)有可執(zhí)行權(quán)限,在用戶板中就無(wú)法運(yùn)行程序。
# chmod 755 filename
這里的參數(shù)“7”表示擁有讀、寫和執(zhí)行的權(quán)限;“5”僅代表?yè)碛凶x和執(zhí)行的權(quán)限。完成以上配置后,就可以用如下命令執(zhí)行用戶程序了:
# ./filename
NFS方式
使用NFS (NetWork File System)方式可以使嵌入式應(yīng)用程序的開發(fā)和調(diào)試變得更為方便,并在不同的機(jī)器、不同的操作系統(tǒng)間共享文件,因此,NFS在嵌入式開發(fā)中得到了廣泛的應(yīng)用。目前,在mClinux-2.4-x版本下配置NFS相對(duì)比較困難,下面就配置問(wèn)題進(jìn)行詳細(xì)說(shuō)明。
服務(wù)器(Sever)端的設(shè)置
首先需要設(shè)置 Linux下的/etc/exports文檔,它是NFS的主要設(shè)定文檔。在Linux下的shell終端,進(jìn)行如下操作:
# vim /etc/exports
將這個(gè)默認(rèn)的空文件修改為只有如下一行內(nèi)容:
/home/tmp *(rw,no_root_ squash)
這就表示在任何情況下,客戶端都可以訪問(wèn)服務(wù)器端的/home/tmp目錄。
接下來(lái)要在服務(wù)器端開啟如下的兩個(gè)進(jìn)程:
1.開啟NFS服務(wù)
# /etc/rc.d/init.d/nfs start
啟動(dòng)NFS服務(wù): [ OK ]
Starting NFS quotas: [ OK ]
啟動(dòng)NFS 守護(hù)進(jìn)程: [ OK ]
啟動(dòng)NFS mounted : [ OK ]
2.開啟portmap服務(wù)
# /etc/rc.d/init.d/portmap start
配置完成后,可用如下辦法簡(jiǎn)單測(cè)試一下NFS是否配置成功(注意在Linux下要將防火墻關(guān)閉):在宿主機(jī)上自己mount自己,看是否成功。例如,在宿主機(jī)/目錄下執(zhí)行:
mount 10.5.22.247:/root/ /home/zhang/mount
然后到/home/zhang/mount/目錄下看是否可以列出/root/目錄下的所有文件和目錄。若可以,則說(shuō)明NFS在服務(wù)器端的配置成功。
客戶端(Client)的設(shè)置
相對(duì)于Sever端的設(shè)置,Client端使用的是 mClinux, 設(shè)置起來(lái)相對(duì)復(fù)雜一些,需要對(duì)mClinux的內(nèi)核重新編譯,并進(jìn)行相關(guān)配置。需要設(shè)置Customize Kernel Settings 和 Customize Vender/User Setings(NEW)兩項(xiàng)。
1. 對(duì)Customize Kernel Settings進(jìn)行配置
[ * ] Customize Kernel Settings
進(jìn)入File systems的設(shè)置,可以看到Network file systems---,將NFS File system support選中。
2.設(shè)置Customize Vender/User Setings(NEW)
[ * ] Customize Vender/User Setings(NEW)
在Customize Vender/User Setings 項(xiàng)目中,選擇Network Applications之后,需要其中的portmap服務(wù),[*] portmap即可。然后選擇mount和umount服務(wù)使mClinux支持mount和umount指令。mClinux-2.4-x的內(nèi)核對(duì)NFS mount的支持不夠,這使得在mClinux上添加NFS服務(wù)存在一些困難,而在較新的mClinux版本mClinux-2.6-x中重寫了對(duì)NTFS文件系統(tǒng)的支持。在BusyBox中選擇mount和umount及mount NFS support三項(xiàng)即可,這樣客戶端的配置完成。最后重新編譯內(nèi)核,指令如下:
# make menuconfig ------------- 內(nèi)核配置
# make dep -------------尋找依存關(guān)系
# make clean------------清除以前構(gòu)造內(nèi)核時(shí)生成的文件
# make lib_only-----------該命令編譯庫(kù)文件
# make user_only----------編譯用戶應(yīng)用程序文件
# make romfs ----------生成romfs文件系統(tǒng)
# make image----------生成romfs.o文件
# make
重新編譯后,會(huì)在.../image/目錄下生成image.rom文件,它是壓縮了的內(nèi)核在rom的映像文件,將其燒寫到用戶板的Flash即可。用戶板重新啟動(dòng)之后,新的內(nèi)核已經(jīng)開始工作,這時(shí)就可以在終端里進(jìn)行NFS mount了(以在minicom為例)。輸入如下指令:
#mount -t nfs 10.5.22.247:/home/tmp /var/tmp /nfsmount -o nolock
# mount
執(zhí)行完兩條指令后,在Linux下的minicom里會(huì)看到如下信息:
Rootfs on / type rootfs (rw)
/dev/rom0 on / type rootfs (ro)
/proc on/proc type proc (rw)
/dev/ram0 on/var type ext2 (rw)
/dev/ram1 on /disk type ext2 (rw)
10.5.22.247:/home/tmp on /var/tmp type nfs (rw,v3,rsize=8192,hard, udp,nolock,addr=10.5.22.2)
這樣就將宿主機(jī)的/home/tmp目錄掛載到了用戶板的/var/tmp目錄。
結(jié)語(yǔ)
通過(guò)以上兩種方式的比較,可以看到,就開發(fā)的效率來(lái)說(shuō),NFS的方式明顯具有優(yōu)勢(shì)。畢竟,用戶開發(fā)的程序往往不能一次就調(diào)試成功,采用NFS方式使得多人同時(shí)開發(fā)一個(gè)程序成為可能。事實(shí)上,除了文中提到的兩種方式以外,還有其它以太網(wǎng)環(huán)境下的嵌入式開發(fā)手段,如telnet等,限于篇幅,不再詳細(xì)介紹。
相關(guān)推薦
嵌入式工業(yè)以太網(wǎng)的應(yīng)用研究
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A6/6F/wKgZomUMPbWAJkuGAABD-b0RUGk358.jpg)
以太網(wǎng)接口怎么實(shí)現(xiàn)嵌入式系統(tǒng)的網(wǎng)絡(luò)互連?
嵌入式以太網(wǎng)開發(fā)
嵌入式軟件開發(fā)與非嵌入式軟件開發(fā)的區(qū)別?
嵌入式開發(fā)
嵌入式開發(fā)與Python編程有哪些區(qū)別及其聯(lián)系呢
嵌入式開發(fā)與傳統(tǒng)軟件開發(fā)的區(qū)別?
嵌入式開發(fā)與非嵌入式開發(fā)的區(qū)別
嵌入式開發(fā)中的一些硬件相關(guān)的概念有哪些
嵌入式開發(fā)入門之旅
嵌入式開發(fā)入門之旅
嵌入式開發(fā)學(xué)習(xí)方法步驟
嵌入式開發(fā)就業(yè)方向的問(wèn)題
嵌入式開發(fā)工具面臨的挑戰(zhàn)是什么?未來(lái)的發(fā)展趨勢(shì)呢?
嵌入式開發(fā)教程之程序設(shè)計(jì)與開發(fā)維護(hù)
嵌入式開發(fā)是什么意思
嵌入式開發(fā)是指什么?嵌入式有何應(yīng)用呢
嵌入式開發(fā)有哪些技巧?
嵌入式開發(fā)板開發(fā)與SOC系統(tǒng)開發(fā)有哪些不同之處呢
嵌入式開發(fā)板環(huán)境的搭建
嵌入式開發(fā)板有什么功能?
嵌入式開發(fā)流程
嵌入式開發(fā)流程是怎樣的?
嵌入式開發(fā)的優(yōu)缺點(diǎn)是什么?
嵌入式開發(fā)要學(xué)什么
嵌入式開發(fā)要學(xué)什么?
嵌入式開發(fā)要學(xué)什么內(nèi)容 嵌入式開發(fā)學(xué)習(xí)路線介紹
嵌入式開發(fā)要學(xué)什么內(nèi)容 嵌入式開發(fā)學(xué)習(xí)路線介紹
嵌入式開發(fā)要學(xué)什么內(nèi)容 嵌入式開發(fā)學(xué)習(xí)路線介紹
Java開發(fā)和嵌入式開發(fā)
Linux下嵌入式開發(fā)環(huán)境有哪些?
SOPC在嵌入式工業(yè)以太網(wǎng)控制器中有哪些應(yīng)用?
VScode嵌入式開發(fā)如何入門
labview2013 如何設(shè)置STM32嵌入式開發(fā)環(huán)境
一文詳解Express Pi嵌入式開發(fā)板
什么是嵌入式以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)解決方案?
什么是嵌入式?單片機(jī)開發(fā)與嵌入式開發(fā)的區(qū)別在哪
什么樣的人適合轉(zhuǎn)行嵌入式開發(fā)?
傳統(tǒng)開發(fā)和嵌入式開發(fā)的優(yōu)缺點(diǎn)分別是什么
關(guān)于linux嵌入式開發(fā)箱相關(guān)問(wèn)題,求助!!!
分享買來(lái)的各種嵌入式開發(fā)課件(3)
基于嵌入式以太網(wǎng)控制的接口電路及軟硬件實(shí)現(xiàn)方法
基于嵌入式模塊comX的實(shí)時(shí)以太網(wǎng)
基于嵌入式系統(tǒng)的以太網(wǎng)接口電路實(shí)現(xiàn)設(shè)計(jì)
基于DSP的嵌入式以太網(wǎng)接口電路設(shè)計(jì)
基于FPGA的嵌入式以太網(wǎng)接口硬件設(shè)計(jì)
基于TCP IP協(xié)議棧的嵌入式以太網(wǎng)終端設(shè)計(jì)
基于coLinux的嵌入式開發(fā)環(huán)境構(gòu)建
基于雙以太網(wǎng)處理器Jupiter實(shí)現(xiàn)嵌入式設(shè)備網(wǎng)絡(luò)的設(shè)計(jì)
如何從嵌入式開發(fā)/云平臺(tái)開發(fā)/Android端來(lái)實(shí)現(xiàn)一個(gè)物聯(lián)網(wǎng)應(yīng)用開發(fā)?
如何從零開始學(xué)習(xí)嵌入式開發(fā)技術(shù)?
如何去實(shí)現(xiàn)嵌入式以太網(wǎng)與Matlab通信系統(tǒng)的設(shè)計(jì)?
如何去實(shí)現(xiàn)S3C2440嵌入式系統(tǒng)的以太網(wǎng)接口設(shè)計(jì)?
如何去實(shí)現(xiàn)一種基于STM32CubeMX的嵌入式開發(fā)設(shè)計(jì)
如何基 Visual Studio Code來(lái)搭建嵌入式開發(fā)環(huán)境
如何完成嵌入式串行千兆以太網(wǎng)的設(shè)計(jì)
如何對(duì)LS1028A嵌入式開發(fā)板進(jìn)行測(cè)試呢
學(xué)FPGA為什么要學(xué)以太網(wǎng)控制器
學(xué)習(xí)嵌入式開發(fā)需要什么基礎(chǔ)?
怎么實(shí)現(xiàn)嵌入式以太網(wǎng)數(shù)字語(yǔ)音廣播系統(tǒng)的設(shè)計(jì)?
怎么實(shí)現(xiàn)基于S3C4480X的嵌入式以太網(wǎng)接口設(shè)計(jì)?
怎么學(xué)好ARM嵌入式開發(fā)?
怎樣將OpenCV環(huán)境與交叉編譯器移植到嵌入式開發(fā)平臺(tái)上呢
想做以太網(wǎng)通訊開發(fā)需要補(bǔ)充哪方面的知識(shí)呢?
新手學(xué)習(xí)嵌入式開發(fā)要學(xué)什么
新手學(xué)習(xí)嵌入式開發(fā)要學(xué)什么?
求一種嵌入式以太網(wǎng)接口的設(shè)計(jì)方案
究竟什么是嵌入式開發(fā)
請(qǐng)問(wèn)嵌入式系統(tǒng)實(shí)現(xiàn)以太網(wǎng),TCP/IP協(xié)議棧是都是移植的嗎?
請(qǐng)問(wèn)如何使用樹莓派去進(jìn)行l(wèi)inux嵌入式開發(fā)?
請(qǐng)問(wèn)怎樣去設(shè)計(jì)嵌入式以太網(wǎng)控制器?
誰(shuí)知道SOPC技術(shù)在嵌入式工業(yè)以太網(wǎng)中有哪些應(yīng)用呢?
高性能嵌入式以太網(wǎng)CAN網(wǎng)關(guān)怎么實(shí)現(xiàn)?
嵌入式以太網(wǎng)接口的研究與設(shè)計(jì)
![](https://skin.elecfans.com/images/2021-soft/load.png)
SOPC技術(shù)在嵌入式工業(yè)以太網(wǎng)中的設(shè)計(jì)應(yīng)用
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A5/8F/wKgZomUMOP6AYYUcAAEFpRjnxTg480.jpg)
嵌入式開發(fā)環(huán)境的搭建
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/45/AA/pIYBAFpy0t-ATYUkAALVinj3uc8067.png)
嵌入式開發(fā)的產(chǎn)品有哪些_嵌入式開發(fā)的流程
![](https://skin.elecfans.com/images/2021-soft/eye.png)
評(píng)論