原版LwIP和RT-Thread中LwIP的对应关系

所比较的LwIP版本为2.0.2

原版(ethernetif.c) RT-Thread中LwIP 功能
low_level_init rt_stm32_eth_init       (drv_eth.c) 调用以太网驱动函数,初始化 STM32F4xx以太网外设
low_level_output rt_stm32_eth_tx      (drv_eth.c) 调用以太网驱动函数以发送以太网包
low_level_input  rt_stm32_eth_rx        (drv_eth.c) 调用以太网驱动函数以接收以太网包
ethernetif_init 

rt_hw_stm32_eth_init    (drv_eth.c)

--->eth_device_init

--->eth_device_init_with_flag 初始化网卡设备,并向系统注册网卡设备

(为网卡添加名称,IP、子网掩码、网关,网卡设备使用的发包和收包接口函数等)

初始化网络接口结构 (netif)并调用 low_level_init 以初始化以太网外设
netif_add netifapi_netif_add     (ethernetif.c)  
ethernetif_input

eth_system_device_init_private    (ethernetif.c)

--->eth_rx_thread_entry

调用low_level_input来接收包并将包提供给LwIP协议栈
     

RT-Thread中将lwIP应用起来主要包括三个核心步骤:
1. 创建收发包线程,调用接口eth_system_device_init()。
lwip_system_init
    --->eth_system_device_init_private //创建收发包线程
 
2. 提供网卡驱动,调用网卡初始化函数,注册网卡设备。(驱动不同相应的接口函数可能不同)
rt_hw_stm32_eth_init
    --->eth_device_init
        --->eth_device_init_with_flag //初始化网卡设备,并向系统注册网卡设备

3. 初始化lwIP,创建lwIP线程,调用接口lwip_sys_init()(实际调用的lwip_system_init())。
lwip_system_init
    --->tcpip_init
至此,三个步骤完成之后,应用层便可以直接与外界通讯

参考资料:

  • https://www.bookstack.cn/read/rtthread-manual-doc/14.5.md
  • http://www.bdtic.com/download/st/zh.dm00103685.pdf
  • https://www.st.com/content/ccc/resource/technical/document/user_manual/65/e8/20/db/16/36/45/f7/DM00103685.pdf/files/DM00103685.pdf/jcr:content/translations/en.DM00103685.pdf
  • http://www.zhongruitech.com/989615096.html

你可能感兴趣的:(STM32,rtthread,LwIP)