RT-Thread 网卡驱动学习

一 入口 (drv_eth.c)

      drv_eth.c是对下挂接具体的硬件操作,对上挂接了网络协议层,承上启下。

    INIT_DEVICE_EXPORT(rt_hw_stm32_eth_init);

从代码可以看出,这里的重要数据结构就是stm32_eth_device,其抽象出来的初始化、open等接口会具体挂接到某一个stm32的板子。以初始化为例:

 

 在rt_stm32_eth_init接口里面会完成指定CPU的以太网控制器的初始化(时钟、复位等)

接下来还会  通过 eth_device_init(&(stm32_eth_device.parent), "e0");

rt_err_t eth_device_init(struct eth_device * dev, const char *name)
{
    rt_uint16_t flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP;

#if LWIP_IGMP
    /* IGMP support */
    flags |= NETIF_FLAG_IGMP;
#endif

    return eth_device_init_with_flag(dev, name, flags);
}

 

二、挂接以太网对下的接口层。etherretif.c

 struct netif* netif;这个是以太网的协议的重要数据结构。这就挂接到协议去了,从协议到操作硬件的道路就打通了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值