歡迎您光臨本站 登入註冊首頁

概述

   在網路日益重要的今天,越來越多的嵌入式產品有了聯網的要求。以上嵌入式產品的分類中,除了網路設備特彆強調網路功能外,其它幾類產品經常也有網路要求。 &nbs……

    在網路日益重要的今天,越來越多的嵌入式產品有了聯網的要求。以上嵌入式產品的分類中,除了網路設備特彆強調網路功能外,其它幾類產品經常也有網路要求。
     在談到網路功能時,很自然就會想到目前應用越來越廣的Linuxz操作系統。Linux對網路有很強的支持能力,甚至比大多數操作系統的性能更好。實際上,Linux的發展是人們在網路上的相互合作下進行的,且Linux本來就是用在網路上的。Linux幾乎支持所有常見的Internet協議,如FTP、POP、DNS、NIS等等。Linux也適合各種區域網。 
      Linux不僅能很好地用於通用計算機,而且已很好地移植於嵌入式系統。嵌入式Linux,就是經過小型化裁減,而且可以被燒制到容量僅為幾KB或幾MB的存儲器中,不需要硬碟,應用於各種特定的嵌入式環境的專用中,不需要硬碟,應用於各種一的嵌入式環境的專用操作系統。它保留了Linux的大多功能,特別是網路支持能力。uClinux就是一個優秀的嵌入式Linux操作系統。

本論文中要討論的MAX及IP地址分別指的是:
      MAC地址在這裡特指乙太網定義的一個48位(6位元組)地址。每台連到乙太網網路的計算機分配一個唯一的48位(6位元組)數字,即它的乙太網地址。為分配地址,乙太網硬體製造商購買乙太網地址塊,在生產乙太網介面硬體時順序給它們分配。MAC地址屬於物理層的地址,對於不同類型的網路,其物理址分配方式不同,但本論文中介紹的設置方法都適用。
      IP地址(IP address)也叫互連網地址(Internet address)。它是TCP/IP的設計人員選擇的一個類似於物理網路的編址地址。互連網上的每個主機都分配了一個唯一的32位(4位元組)整數地址。IP地址屬於軟體協議層的地址。只要主機上運行TCP/IP協議,其IP地址的編址方式就符合這個統一標準。
      作為嵌入式網路設備的“身份證”,MAC及IP地址的配置是嵌入式網路設備必須面對的問題。它與通用計算機的操作有些不同。

1 嵌入式網路設備中MAC及IP地址的特點
      在嵌入式系統中,操作系統和所有的應用軟體都被固化到Flash等存儲設備中。在嵌入式系統中很少使用外存。嵌入式系統的啟動往往也是“自動”的,即從上電到處於工作狀態,不用人的介入。這是嵌入式設備應用的要求和特點。
       嵌入式網路設備的啟動,很自然會遇到MAC及IP地址的設置問題。
       對於通用計算機,其乙太網的MAC地十一般是不能變的,它是由網卡生產廠家固化在網卡中的。除了網卡生產廠家,很少有其他人關心它。而IP地址,可以根據用戶的需要設為指定值。其設定的IP地址是存儲在硬碟上的,操作系統啟動時,可以自動取得該值並啟用它。
       嵌入式網路設備中的MAC及IP地址的設置有它的特點:
       ①關心和接觸嵌入式網路設備MAC地址的人比關心和接觸通用計算機MAC地址的人多得多。因為設計、研究和生產嵌入式網路設備的廠家比網卡的廠家多得多。
       ②在嵌入式設備中往往沒有硬碟,它的操作系統和應用軟體通常是打包放在Flash等存儲設備中。系統啟動時,把Flash中的代碼釋放到內存中,再在內存中運行。比如嵌入式操作系統Uclinux,在用於S3C4510B這樣的帶乙太網介面的嵌入式設備時,把內核和應用程序代碼壓成一個映像文件包,在包中有網路部分MAC及IP地址。但這些MAC及IP地址的值是在編譯映像文件時設定的,而且在編譯后的映像文件中的值是不能直觀地看到的,而且在編譯后的映像文件中的值是不能直觀地看到的,它是壓縮了的二進位數據,不方便地映像文件中直接更改MAC及IP地址的值。
      ③對於使用同一映像文件的嵌入式網路設備,如果不做進一步的處理,其MAC及IP地址是相同的。這顯然不能滿足應用,因為不同的設備應該有不同的MAC及IP地址。而編譯生成映像文件往往要用十幾甚至幾十分鐘。對於生產廠家,不可能為每台設備編譯一個特定的映像文件。
       針對以上問題,筆者在S3C4510B上運行uClinux時,使用了一些特殊的方法來解決它。

2 MAC及IP地址的設置       
       筆者使用的S3C4510B嵌入式網路設備的基本框圖如圖1所示。  
    
      其中,Flash是一片HY29LV160,共16Mb,分35個扇區。程序映像文件是從低扇區開始存放的。
      本嵌入式網路設備系統的MAC及IP地址設置的基本思想是:把MAC及IP地址存放在Flash的未用扇區(一般在高扇區),嵌入式操作系統啟動后,自動運行一個程序去讀取MAC及IP地址並設置它。
      用戶如何把MAC及IP地址放到Flash中?筆者使用的方法是通過計算機串口與網路設備的RS232介面(即串口)相連,使用超級終端的方式,運行網路設備中的程序把數據寫入Flash中。
      針對MAC及IP地址的設置,筆者編了以下兩個運行於嵌入式操作系統uClinux上的程序。     
     (1)MyIP:處理IP地址的設置      程序使用說明:
      myip-r 讀取Flash中的IP地址並檢驗合法性和啟用它
      myip-w 172.20.91.15 ;更改Flash中的IP地址為172.20.91.15, 掩碼為255.255.255.0,並啟用它
      myip-w 172.20.91.15-m 255.255.192.0 ;更改Flash中的IP地址為172.20.91.15,掩碼為255.255.192.0,並啟用它     
     (2)MyMAC,處理MAC地址的設置
     程序使用說明:
     mymac-r ;讀取Flash中的MAC地址並檢驗合法性和啟用它
     mymac-w aa:bb:dd:ee:ff,更改Flash中的MAC地址為aa:bb:cc:dd:ee:ff,並啟用它
     運行在S3C4510B上的應用程序,可以用串口終端輸入指令的方式運行。作為嵌入式應用,要求系統複位就能自動行動指定的程序。這時,我們得到另一種運行程序的方式:在uClinux開發包的4510B文件中配置(相當於DOS中的自動批處理程序)。如加入
     /bin/./mymac-r
     /bin/./myip-r
     編譯后的映像文件就可使系統自動運行mymac-r和myip-r,完成系統啟動時自動從Flash中讀取MAC地址和IP地址並配置它們。
    對於嵌入式網路設備生產廠家,可以使用以上兩個程序的帶“-W”參數的用法完成MAC和IP地址的設置;而嵌入式網路設備的用戶只用知道處理IP地址的程序,一般不允許隨著更改MAC地址。
     圖2、圖3是兩個程序的流程。
     
 
     在這裡強調兩點:
     ①這兩個程序都用到了Linux的網路配置指令ifconfig(具體用法請查閱Linux下的相關幫助文檔)。在用該指令更改MAC地址時,需要硬體的支持。如一般的通用計算機上,網卡的MAC地址不能更改,該指令執行時將報異常;而在S3C4510B這樣的嵌入式網路設備上,就能成功更改設備運行時的MAC地址。
     ②Flash的基地址在操作系統啟動前後一般是不同的,這主要是為了提高系統運行的速度。另外,對Flash進行寫操作之前應先擦除操作扇區,注意數據的保護;不要擦除整個Flash,否則連同映像文件一起被清掉后,系統也就不能正常運行了。在對Flash的操作時應特別注意這些。

結語
      嵌入式網路設備的“身份證”——MAC及IP地址的設置,與通用計算機的設置有獨特之處。嵌入式網路設備往往沒有硬碟,不能像通用計算機那樣操作;也不可能為每一台設備“量身”編譯映像文件。本論文介紹的方法——把MAC及IP地址存放在Flash等存儲設備上,嵌入式操作系統啟動后,自動運行一個程序去讀取MAC及IP地址並設置它。這樣就可以在同一映像文件包下方便地配置嵌入式網路設備MAC及IP地址。


[admin via 研發互助社區 ] 嵌入式系統網路設備的MAC及IP地址設置已經有3167次圍觀

http://cocdig.com/docs/show-post-42173.html