您的位置:首页 > 其它

学习lwip在stm32应用上的一些总结

2015-10-08 11:54 387 查看
首先对于不是研究型的人来说,大家最关心的还是怎么使用它了。自己用的是神舟系列的开发板,其实它里面用的例程基本上都是从官方移植过来的,网上买的开发板基本上所有的关于lwip学习的例程都是官方的,只不过整合的很好。lwip的结构分为三个部分,与操作系统相关,与硬件相关,与用户程序相关。在tcpip协议栈的设计里面将与操作系统相关的那部分叫做操作系统模拟层,主要包含了以下几个文件:一个与数据结构类型和大小端相关的CC.H的文件,一个和字节对齐相关的文件ARCH.H,还有一个就是操作系统模拟层相关的了sys.h,最后一个是配置文件OPT.H。在stm32官方移植程序里面另外用了一个lwipopts.h文件来做用户的配置。与硬件相关主要是与PHY芯片和STM32的MAC控制器相关。在官方的移植程序中主要是这两个文件:stm32f2x7_eth_bsp.c
这个是PHY芯片的驱动,ethnetif.c 这个主要是lwip和硬件驱动的接口,还有一个是stm32f2x7_eth.c 这个主要是stm32芯片里面的MAC控制器部分的驱动了。一般的tcpip协议栈里面的进程模型有三种:模型1 TCPIP的每种协议作为一个独立的进程存在 模型2 协议栈在操作系统内核中,应用进程通过系统调用与协议栈通信 模型3 tcpip的所用协议在同一个进程当中,以便独立于操作系统内核之外。应用进程既可以在协议栈内也可以作为一个独立的进程。在这种模型中,应用进程和协议栈的通信的方式有:1.在同一个进程内时
使用函数调用当应用程序和协议栈 2.当应用程序作为一个独立的进程的时候,使用更抽象的函数。在“神舟王FreeRTOS操作系统httpserver_socket网页(神舟王STM32F207ZGT-库函数版本) ”中,lwip协议栈使用的是模型3,即tcpip用到的所有协议都在同一个进程中,所以在LwIP_Init();初始化时要用sys_thread_new(TCPIP_THREAD_NAME,
tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);来为lwip协议栈创建一个新的线程。而用户程序使用API的方法来创建,这里用的是netconn而不是我们常使用的socket函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: