一、目的
為Barebox移植基於Tiny6410的網卡(DM9000)驅動,並編寫相關的網絡收發命令進行測試。
二、主要內容
1.1 Barebox已經實現了通用的DM9000網卡驅動,因此只要在板文件里修改數據和命令的基地址參數即可。
1.2 編寫netinfo命令查看網絡信息,如本機IP地址和MAC地址等。
1.3 Barebox自帶ping命令,但目標板只能ping主機,主機不能ping目標板。因此編寫一個recping命令,實現主機也能ping目標板。
1.4 編寫基於UDP協議的發送命令udp_send,實現目標板通過網口發送數據給主機。
1.5 編寫基於UDP協議的接收命令udp_rec,實現主機通過網口發送數據給目標板。
1.6 在主機端編寫基於Qt的測試程序,用來發送數據給目標板和接收來目標板的數據。
三、開發環境
主機:WIN7 32位旗艦版
虛擬機:VMware Workstation 7.0
Linux:Ubuntu 12.04
編譯器:arm-linux-gcc-4.5.1-v6-vfp-20101103
開發板:Tiny6410(256M Nand Flash,128M DDR)
四、步驟
4.1 下載BareBox最新版本
http://www.barebox.org/download/
我下載的是barebox-2013.05.0.tar.bz2這個版本。
4.2 給Barebox打補丁
把barebox-1.5.1.patch文件放到和barebox-2013.05.0.tar.bz2文件的同一個目錄下。
tar jxf barebox-2013.05.0.tar.bz2
進入barebox源碼根目錄
cd barebox-2013.05.0
打補丁
patch -p1 < ../barebox-1.5.1.patch
4.3 使用已經配置好的文件
cp tiny6410_defconfig .config
4.4 編譯
執行make,即可在源碼根目錄下生成barebox.bin文件,將它燒寫到開發板的Nand Flash中,然后從Nand Flash啟動。
4.5 測試
Barebox啟動后,通過netinfo命令可以查看當前的網絡信息,如下圖所示。

可以看到IP地址、子網掩碼和MAC地址都為0,因此使用命令eth0.ipaddr=192.168.0.11設置IP地址,使用eth0.netmask=255.255.255.0設置子網掩碼。然后ping主機,返回信息host 192.168.0.100 is alive表示ping通了主機,再通過netinfo查看網絡信息,如下圖所示。

先運行recping命令,再由主機來ping目標板,返回下圖紅色框中的信息表示主機能ping通目標板。先運行Qt寫的測試程序,再運行udp_send 192.168.0.100 helloPC命令,可以看到udp軟件上顯示出helloPC。

運行udp_rec命令,然后在udp軟件中輸入1234567890,再點“Send”按鈕,可以看到目標板收到了PC機發來的數據並通過串口打印出來,如下圖所示。

