引言
嵌入式系統的開發與應用是目前發展的一個熱點,而嵌入式系統的開發手段在嵌入式開發中起著至關重要的作用。其中,通過以太網調試和運行開發程序的方法在嵌入式系統的開發中得到了廣泛應用,本文就此展開說明。
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等,限于篇幅,不再詳細介紹。
基于嵌入式系統的以太網控制器設計
5895
嵌入式工業以太網控制器的設計和應用
1198嵌入式工業以太網的應用研究
6655
高性能嵌入式工業以太網監控系統電路設計
1395
以太網接口怎么實現嵌入式系統的網絡互連?
嵌入式以太網開發
嵌入式開發中的一些硬件相關的概念有哪些
嵌入式開發板環境的搭建
嵌入式開發流程
嵌入式開發流程是怎樣的?
嵌入式開發要學什么
嵌入式開發要學什么內容 嵌入式開發學習路線介紹
Linux下嵌入式開發環境有哪些?
VScode嵌入式開發如何入門
分享買來的各種嵌入式開發課件(3)
基于嵌入式以太網控制的接口電路及軟硬件實現方法
基于嵌入式模塊comX的實時以太網
基于DSP的嵌入式以太網接口電路設計
基于TCP IP協議棧的嵌入式以太網終端設計
基于雙以太網處理器Jupiter實現嵌入式設備網絡的設計
如何完成嵌入式串行千兆以太網的設計
怎么實現嵌入式以太網數字語音廣播系統的設計?
怎么實現基于S3C4480X的嵌入式以太網接口設計?
想做以太網通訊開發需要補充哪方面的知識呢?
請問嵌入式系統實現以太網,TCP/IP協議棧是都是移植的嗎?
請問怎樣去設計嵌入式以太網控制器?
誰知道SOPC技術在嵌入式工業以太網中有哪些應用呢?
基于CP2200 的嵌入式系統以太網接口設計
15基于嵌入式調試器的網絡通信方法設計與實現
9基于ARM 嵌入式以太網接口設計與實現Design and
52嵌入式以太網工業設備接入系統的設計
12嵌入式以太網接口的研究與設計
29嵌入式設備與以太網互連系統的設計
13高性能嵌入式工業以太網監控系統設計
14基于以太網和嵌入式Web Server的控制系統設計研究
25基于ARM的嵌入式開發
83基于OpenTCP的嵌入式以太網模塊設計
15嵌入式以太網設計
1007
嵌入式以太網數字語音廣播系統技術設計
1067
變電站自動化設備中嵌入式以太網設計
38基于FPGA的嵌入式三態以太網設計
64基于OR1200微處理器的嵌入式以太網設計
32基于PXA270嵌入式開發板的GPS定位系統設計
1506RTL8019AS實現嵌入式以太網設計.rar
164TMS320LF2407與LAN91C111型嵌入式以太網接口電路的實現
4281
嵌入式開發

嵌入式以太網解決方案:集設計方案、開發工具于一體
1549
嵌入式開發環境介紹,嵌入式文件系統要求分析
1459
基于Xilinx FPGA的嵌入式串行千兆以太網設計
3913基于STM32的嵌入式以太網門禁系統設計
1137
嵌入式開發就業前景分析_嵌入式領域的職業發展方向
19874嵌入式開發語言有哪些_最全面嵌入式開發語言概述
10380
嵌入式開發環境的搭建
9105
學嵌入式開發入門_學嵌入式開發需要看哪些書籍
39387嵌入式C實現延時程序的不同變量的區別 幾種Linux嵌入式開發環境的簡單介紹
2161
嵌入式開發好學嗎_嵌入式開發職業發展方向是什么
10098嵌入式開發者必備的基礎硬件知識
3360嵌入式開發市場的現狀研究及持續的C和C++優勢
982嵌入式開發教程之基于ARM7的LCD設計與實現
9基于工業以太網嵌入式DNC集成通訊控制系統研究與開發
6嵌入式開發(一):嵌入式開發新手入門
79嵌入式開發前景怎么樣?嵌入式開發有哪些優勢?
2嵌入式系統移植-01嵌入式基本概念,嵌入式開發環境搭建,目標機搭建,TFTP服務搭建,NFS服務搭建
10嵌入式開發
3嵌入式開發資料免費分享
47嵌入式開發
4嵌入式開發Linux入門
31嵌入式開發培訓怎么樣?嵌入式開發培訓多少錢
12嵌入式開發(一):嵌入式開發新手入門(轉載后續需要修改補充)
17python做嵌入式開發_Python和嵌入式的區別是什么?可以做嵌入式開發嗎?
14嵌入式開發培訓學什么?嵌入式開發板知識講解
16嵌入式開發概述(20190325小結)
15VScode嵌入式開發之入門教程
44嵌入式以太網功能實現架構、電路設計與應用
2664不懂PHY,如何輕松完成嵌入式以太網功能?
2395
Linux系統的嵌入式開發是什么
2974ProfiNet嵌入式板卡,主流替代可實現ProfiNet工業以太網的應用實例
993
電子發燒友App



評論