《asm9260中uboot以太网驱动》
关键词:asm9260,紫芯,以太网驱动,mac驱动,网卡驱动
本文为编写紫芯asm9260以太网驱动前对uboot中实现进行解析。
依照之前经验,网卡驱动应该包含以下部分:
大致知道了驱动框架,开始进入asm9260以太网驱动。
mac9260_eth_initialize函数里设置mac地址,填充了.init,.transmit,.receive函数,注册网络设备。
整体结构差不多。
.init里面并没有操作,初始化放在了mac_init函数中去做。
为发送/接收描述符分配内存空间,为发送/接收缓冲区分配内存空间 使能MAC时钟 管脚复用 设置MII / RMII MAC模块复位 之前为硬件复位,设置软件复位,复位所有MAC,DMA相关寄存器 设置MDC时钟频率 PHY管脚复用 设置mac工作模式(100M,全双工) 设置phy工作模式(100M,全双工) 使能中断(做了很多配置,不仅仅使能中断) 设置MAC地址(开始那步设置mac地址就看看?传参都没传...) 停止所有MMC寄存器操作 TX / RX描述符与相应缓冲区对接,并对描述符初始化并放入队列寄存器 清RX描述符的OWNER位? 使能MAC , DMA
.transmit函数其中内容基本不变:
1.将要发送的消息放置BD对应的缓冲区内,
2.填充描述符内容,
3.开始发送,
4.指向下一个BD描述符。
.receive函数
1.接收到BD后对其设置OWN,
2.错误处理
3.通知CPU接收
4.指向下一个BD描述符
总结:整体框架不变,uboot中虽然开启了RX中断,但是并没有中断函数处理。PHY初始化应该放在了其他地方。还可以加一个检测线程检查网口是否连接并设置相应的模式。