学习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函数。
这个是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函数。
相关文章推荐
- Android Studio如何发布APK
- Java Web项目性能测试 - JMeter测试网站吞吐量、反应时间百分比、流量
- poj 3597
- Inside the Gigablast
- KMP算法
- Android网络编程之Socket通信实现简单聊天室
- jQuery常用函数 eq_next等
- BNUOJ 24253 (弱校联盟第7天E题)
- 基于Triplet loss 函数训练人脸识别深度网络
- 关于导航条
- jsp九大隐含对象的运用方法总结
- Android获取设备或应用基本信息
- 如何利用iis的缺陷配置system权限的asp后门 - tk
- 一个简单排序
- 雅虎的卓越性能团队已经确定了23个军规
- Linux系统下Qt的基本安装和配置
- 指针赋值、自增自减、组合和关系运算
- action响应bug
- 通过 ARP 协议获取局域网内指定 IP 地址的机器的 MAC 地址
- 使用mutt及msmtp来发送邮件