一、简介
本文重点总结spi网卡在linux下的驱动移植以及根据板子的走线如何进行debug,最后定位到具体问题后正常使用的详细过程。
DM9051NP SPI接口网卡芯片是为了方便互联网行业进行以太网通信而开发出的解决方案。DM9051NP芯片是带有行业标准串列外设接口(Serial Peripheral Interface,SPI)的独立以太网控制器。DM9051NP符合IEEE 802.3 规范,它还支持以DMA 模式來传输,以实现资料传送快速。DM9051NP通过1个中断引脚和SPI接口來进行与主控制器/MCU单片机的通信,资料传输规格为10/100M。
二、uboot下移植和调试网卡驱动
2.1 移植驱动
网卡驱动的移植是常规的操作,将厂家发来的驱动正常编译即可,可以参考下面博客:
2.2 调试网卡驱动
spi网卡最重要的就是代码跟开发板上的spi口走线对应上,这时需要查看电路图,从图中可以看到SPI_MISO对应spi引脚10,SPI_MISO对应spi引脚9,依次类推,因为原来的板子evb板spi不一样,所以要重新定义spi引脚。
2.3 读取spi自带eeprom寄存器值查看网卡状态
因为重新定义spi引脚后,设置ip地址后依然会ping不通,因此需要将相关的寄存器值打印出来进行debug。
1、从spi网卡eeprom中读取配置
2、 将配置写进spi网卡eeprom中
3、将eeprom中的寄存器中的值都打出来,便于查看寄存器的值是否有问题,用于debug
4、也可直接将数据写入eeprom中,然后读取数值:
在dm9051.h中根据datasheet已经定义了各个寄存器的偏移地址,具体如下:
datasheet定义部分如下:
![](/qrcode.jpg)
2.4 debug分析过程
通过寄存器值打印显示连接状态寄存器值有问题,此时需要排查一下硬件原因,具体方法有,通过示波器查看时钟信号、万用表测电压值、协议分析仪抓包等,最后排查到VCT电压需要1.8V,实际接了3.3V,而且网卡灯一直不亮,同时百兆的SPI网卡因为采用杜邦线连接,io读写存在问题,需要降低频率到20M才能使用。
#define DM9051_SPI_FREQ (20) //MHz