1. 完善BSP设置
1.1 网卡驱动完善
将上一章节封装出来的三个接口分别填入网络驱动操作集函数中调用:
static int netifInit(struct netdev *pnetdev) { emacInit(pnetdev); return 0; } static int netifTransmit(struct netdev *pnetdev, struct pbuf *pbuf) { int ret; ret = emacTransmit(pnetdev, pbuf); return ret; } static void netifReceive(struct netdev *pnetdev, int (*input)(struct netdev *, struct pbuf *)) { emacReceive(pnetdev, input); return; } static struct netdev_funcs netif_funcs = { .init = netifInit, .transmit = netifTransmit, .receive = netifReceive, };
1.2 添加映射
在bspMap.h中添加网卡驱动中用到的寄存器映射:
1.3 添加初始化调用
在 halNetifAttch 中添加网卡驱动的初始化接口调用:
static VOID halNetifAttch (VOID) { /* * TODO: 加入你的处理代码 */ netifProbe(); }
2. 网络测试
重新编译BSP镜像,重启开发板,通过以下几个小测试来验证网络是否正常。
2.1 连接状态打印
首先查看启动过程中是否有连接状态打印:
如果有打印的话基本表示PHY寄存器读写是正常工作的。
2.2 中断查看
通过ints命令查看网卡驱动是否有中断产生:
如果有中断计数,基本表示MAC初始化设置是基本没啥问题的。
2.3 ifconfig查看网卡信息
通过ifconfig命令查看网卡的信息:
主要是看网卡的收发数据计数值是否有,如果为0的话就表示收发有问题了,从图里还能看到网卡的ip地址、掩码等等信息。
2.4 ping测试
如果开发板的网卡ip和电脑不在一个网段,首先以下命令来设置网卡的ip地址和掩码:
其中en1就是通过ifocnifg查看到的网卡名,设置完后再次通过ifconfig命令确认设置生效了,然后通过ping电脑ip来确定是否能ping通:
如果是上图这样的,基本说明网络是通畅的没什么问题。
2.5 ftp传输文件
使用ftp工具登录到开发板,用户名和密码都为root,传输一个文件到板子上,确保传输过程不会中断停止并且串口中断上没有错误打印,则基本说明网络传输功能正常。
2.6 ifparam.ini设置
在系统启动的时候,会尝试去/etc目录下寻找ifparam.ini配置文件用来设置网卡ip地址,这个配置文件的内容如下:
[emac] enable=1 ipaddr=192.168.1.32 netmask=255.255.255.0 gateway=192.168.1.1 default=1 mac=55:44:33:22:11:00
- [emac]:要设置的网卡设备名,可以通过ifconfig查看得到:
- enable:是否使能该网卡,如果设置为0,则该网卡不会发送任何数据包出去。
- default:如果有多个网卡,用于指定默认从哪个网卡发送数据。
- 其他的就是ip地址、掩码等设置,应该很好理解。
设置好ifparam.ini文件后,将其传输到/etc目录下,重启系统,通过ifconfig查看网卡的ip地址是否被改变为和配置里一样的设置:
支持网络的最小系统BSP源码可以在这下载:https://pan.baidu.com/s/1qdkCVNMiVI4NS97EoMna3g?pwd=dqx6。
评论