Linux内核移植之DM9000网卡驱动

简介

DM9000是一款低成本的以太网MAC控制器,集成MAC和PHY功能,内部有16K的SRAM,像访问存储芯片一样对DM9000进行操作读写。
Linux3.x内核自带有DM9000驱动,我们需要将DM9000编译进入内核,配置好对应设备树。除此之外,使用到的硬件资源也需要进行相应的初始化。

添加dm9000网卡设备驱动

在根目录下执行make menuconfig,进入配置界面。输入’/’进入搜索界面,可以查找到DM9000的配置位置。
在这里插入图片描述

使能DM9000,使其编译进入内核。(按空格键选中)
在这里插入图片描述

在设备树中添加网卡驱动

在设备树文件中添加DM9000驱动,可参考厂商提供的范例代码(路径:Documentation/devicetree/bindings/net/davicom-dm9000.txt):
在这里插入图片描述

当然你也可以参考其他厂商的配置方法:

将设备树添加到对应的.dts文件中,路径:linux-at91-linux-3.18-at91/arch/arm/boot/dts。
ethernet@05000000 {
compatible = “davicom,dm9000”;
reg = <0x05000000 0x2 0x05000004 0x2>;/0x05000000为4412处理器的srom片选地址,详见手册/
interrupt-parent = <&gpx0>;/继承父节点/
interrupts = <6 4>;/gpx0节点中断中的第6个,4是标志/
local-mac-address = [00 00 de ad be ef];/网卡地址/
davicom,no-eeprom;
}
reg寄存器的配置,硬件DM9000的片选引脚连接的NCS2,在芯片数据手册上,Memory Mapping图中,可查看到NCS2对应的片选首地址为0x5000 0000。
在这里插入图片描述

编译下载

编译设备树,执行make dtbs。
编译下载过后,在/proc/device-tree可以看到相应的设备树配置
在这里插入图片描述

常见错误

1.内核启动时,打印如下错误:dm9000 50000000.ethernet: read wrong id 0x2b2a2928
答:出现该问题,多半是CPU处理器初始化不对,比如通信总线的初始化不对、复位引脚的初始化不对。
2.dm9000初始化成功,但是不能ping通
答:需要确认中断是否配置正确,中断不正确则ping不通。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值