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