正点原子lwIP学习笔记——带操作系统lwIP启动流程

1.带操作系统lwIP启动流程——旧版本

总体流程图
一上来,带操作系统的初始化就略有区别:在创建完任务之后,同样调用lwip_comm_init()函数进入初始化,初始化中首先进行tcpip_init(),而裸机移植是直接调用的lwip_init();当然tcpip_init里面的第一步就是调用lwip_init,然后进行其余操作。

更大的区别在于,裸机的netif->input会直接传递给ethernet_input然后判断是ARP还是ip4;
FreeRTOS则是通过netif->input传递给tcpip_init,然后通过定义的邮箱进行消息传递,交给tcpip_thread这个线程进行判断,判断是ARP还是ip4;这一部分的区别在代码中主要是在添加虚拟网卡这一步的时候,最后一个参数裸机就是ethernet_input,FreeRTOS这边就会换成tcpip_input,然后tcpip_input会判断调用的是ethernet_input还是ip_input,由此把ARP和实际传输给分开。

然后的区别在ethernet_init这边,区别就在最后面的low_level_init;
在RMII以及对应引脚初始化完毕之后,会建立一个二值信号量,然后创建任务ethernetif_input,在这个里面会通过死循环判断是否接收到信号量,接收到了就会进入low_level_input接收消息,然后通过上面讲的发送消息邮箱然后判断是IP还是ARP。

总结

总结来说底层的东西还是要多看代码,大概知道运行的逻辑应该也差不多了。

2.带操作系统lwIP启动流程——新版本

启动流程
新旧版本没有什么区别,就不再做赘述了。

总结

这一部分其实就是带着读一读源码,把大概的框架心里有个概念就差不多了,毕竟也不会考什么当场来写代码对不对?我个人的理解就是,如果要用到了,回来翻翻手册文档以及自己的笔记,再去看看源码;实在看不懂再去看一遍视频过一过也就好了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值