首先應該看下源碼包中的doc/rawapi.txt,這篇文檔中介紹了初始化流程。
初始化過程的前半部分主要針對lwip的內存管理和各個協議層,在src/core/init.c中有一個lwip_init()函數已經為我們做好了,直接調用即可;
初始化過程的后半部分初始化網絡接口,依次調用以下函數:
netif_add(如果有多個接口則需多次調用)
netif_set_default
netif_set_up
dhcp_start
調用netif_add函數時我們需要提供一個init函數指針,這個指針指向我們自己的硬件接口初始化函數,一般來說就是ethernetif.c中的ethernetif_init()。