Barebox for Tiny6410(网卡驱动移植)
一、目的
为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机发来的数据并通过串口打印出来,如下图所示。