《吕家振-CherryUSB 在 RT-Thread 上的 USB 网卡应用(2).pptx》由会员分享,可在线阅读,更多相关《吕家振-CherryUSB 在 RT-Thread 上的 USB 网卡应用(2).pptx(15页珍藏版)》请在三个皮匠报告上搜索。
1、CherryUSB 在在 RT-Thread 上的上的 USB 网卡应用网卡应用主讲人:吕家振(sakumisu)content01USB网卡介绍网卡介绍02网卡移植网卡移植03对接过程分析对接过程分析04性能优化性能优化 USB网卡介绍网卡介绍Part/01常见的常见的 USB 网卡类网卡类年度抽盘年度抽盘CDC ECMCDC NCMCDC RNDIS私有类:ASIX,RTL,QC手机(USB 共享)各个网卡之间的区别各个网卡之间的区别年度抽盘年度抽盘以太网:E;特殊包:HCDC ECM:最原始的网络数据传输协议,没有其他负载,纯以太网数据包,一次 USB 传输只能发送一个以太网数据。(WI
2、NDOWS 不支持),常见的使用ECM的设备 LAN/WAN适配器一次USB 传输:ECDC NCM:在 ECM 上的改进,支持一次传输发多个以太网数据包,USB 数据中携带 NCM 传输块(NTB-16,NTB-32),常见的使用NCM的设备是 支持3.5G/4G网络(例如 HSPA+和 LTE)的无线适配器一次USB 传输:H1+E+E+E+.+E+H2,H1+H2+E+E+E+.+ECDC RNDIS:微软定义的接口,也是 ECM 的改进(LINUX 后面不再使用或者默认关闭)一次USB 传输:H1+E+H1+E+H1+E+H1+E.ASIX:跟 ECM 差不多RTL:跟 RNDIS 差
3、不多网卡移植网卡移植Part/02CherryUSB 主机支持的网卡类主机支持的网卡类年度抽盘年度抽盘CherryUSB 移植移植年度抽盘年度抽盘芯片初期的移植:https:/cherryusb.readthedocs.io/zh-cn/latest/对接过程分析对接过程分析Part/03对接过程对接过程 class 枚举完成:usbh_xxx_run xxx_dev.parent.control=rt_usbh_xxx_control;-class-mac xxx_dev.eth_rx=NULL;xxx_dev.eth_tx=rt_usbh_xxx_eth_tx;-usbh_xxx_link
4、output xxx_dev.parent.user_data=xxx_class;分配 netif eth_device_init(&xxx_dev,u0);eth_device_linkchange(&xxx_dev,RT_TRUE);创建线程:usbh_xxx_rx_thread -LWIP_NO_RX_THREAD/LWIP_TCPIP_CORE_LOCKING_INPUT class 拔出:usbh_xxx_stop 删除netif eth_device_deinit(&xxx_dev);性能优化性能优化Part/04性能优化性能优化统一对各个分公司进行年度抽盘,发现其中的不足之处。
5、年度抽盘年度抽盘CPU 主频编译选项 O2memcpyram 的位置工具链USB 本身驱动(dma 支持,硬件分包支持),USB 不同长度的速度USB class 驱动设计(每次只收一个 dma 1次100字节 和 dma 100次每次1字节USB CLASS 协议应用、USB、net 优先级分配CONFIG_USBHOST_xxx_ETH_MAX_RX_SIZE-影响 rxCONFIG_USBHOST_xxx_ETH_MAX_TX_SIZE(由于LWIP 设计问题,修改不会有提升)LWIP_TCPIP_CORE_LOCKING_INPUT-影响 rxMEM_SIZE-全局影响TCP_SND_
6、BUF-影响txTCP_WND-影响 rxTCP_MSS-影响 tx,rxTCP_QUEUE_OOSEQLWIP 本身设计问题LWIP 本身问题本身问题统一对各个分公司进行年度抽盘,发现其中的不足之处。年度抽盘年度抽盘LWIP 本身问题本身问题统一对各个分公司进行年度抽盘,发现其中的不足之处。年度抽盘年度抽盘为什么以太网速度很快?第一,以太网的 IP 是以多个描述符的形式,异步的形式。USB 是以阻塞的形式,需要等上个包完成第二,以太网描述符每个包最大长度是固定的(1514),最高速率基本也是固定的。但是 USB 根据传输长度的不同,速率也是不同的(举例发1K 是4MB/S,8K 是 32MB/S),而由于 lwip 的限制,我们是做不到发很长的包。