SylixOS -- asm9260中uboot以太网驱动

    xiaoxiao2021-03-25  93

    《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初始化应该放在了其他地方。还可以加一个检测线程检查网口是否连接并设置相应的模式。

    转载请注明原文地址: https://ju.6miu.com/read-14453.html

    最新回复(0)