网络设备

网络接口驱动是另外一种常见的设备驱动

  • 配合上层的网络协议栈组件,RT-Thread能够向上层应用提供联网能力的支持:
    • 设备类型:RT_Device_Class_NetIf
  • 因为网络协议非常复杂,所以通常上层只会与lwIP协议栈进行交互,而不会直接接触驱动层
  • 网络接口驱动与其他驱动不相类似的是,它本身拥有独立的驱动类:
struct eth_device {

/* 派生自device类 */

struct rt_device parent;

/* 与以太网驱动相关的属性 */

struct eth_addr *ethaddr; /* 以太网地址 */

struct netif *netif; /* lwip用到的netif接口 */

struct rt_semaphore tx_ack; /* 用于发送完成的信号量 */

/* 以太网驱动的接口:接收、发送 */

struct pbuf* (*eth_rx)(rt_device_t dev);

rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p);

};