lwip比较稳定的版本|LWIP如何建立多个TCP连接

Ⅰ STM32 LWIP连续发送问题请教。

1、要说明用的哪个版本的LwIP,不同版本的LwIP,在发送方面有所不同。2、LwIP是单片机上的TCP/IP协议,不是PC机上的TCP/IP协议,在内存使用方面要注意的。 查看更多答案>>

Ⅱ 如何选择一个ARM CPU嵌入式操作系统

你好,arm是精简指令集,也就是RISC,所有的指令长度都是相同的。 arm处理器,不能直接访问外存,只能通过寄存器来访问外存。所有的指令都是真对那30几个寄存器进行操作的。 这些东西网上有很多的。如果你对这个东西不感兴趣,只是为了考试。

Ⅲ RT-Thread RTOS的RT-Thread 开发者自述

1、诞生 一切东西还得从头谈起。RT-Thread RTOS,Kernel部分完成于2006年上半年,其IPC部分甚至是年中时才具备相应的雏形。最开始时是因为要为朋友做一个小型的手持设备,而我本人起初又是另一国内老牌RTOS:DOOLOO RTOS开发人员,但这个团队在2005年底已经解散。但朋友的系统要上,用ucos吗,一不熟悉,二看不上。答应朋友的事,总得有解决方法吧,即使是原来的DOOLOO RTOS,因为其仿VxWorks结构,导致它的核心太大,包括太多不必要的东西(一套完整的libc库),这些方案都否决了。怎么办?当时朋友那边也不算太急,先自己写一套内核吧。这个就是源头!(后来虽然朋友的项目夭折了,但这套OS则保留下来了,并开源了,万幸)当然RT-Thread和原来的DOOLOO RTOS差别还是很大的。DOOLOO RTOS是一种类VxWorks风格的,而RT-Thread则是一种类NucluesPlus风格的,小型、实时、可剪裁。这三个方面RT-Thread可以骄傲的说做得比DOOLOO RTOS都要好很多,小型:RT-Thread核心能够小到4K ROM,1K RAM;实时:线程调度核心是完全bitmap方式,计算时间是完全固定的;可剪裁性,配置文件rtconfig.h包含多种选项,对Kernel细节进行精细调整,对各种组件(文件系统,使用EFSL、ELM FatFs;网络协议栈,finsh shell)进行可选配置。2、艰难的发展期在第一个公开板发布后(0.1),RT-Thread意识到了一个问题,光有核心不行。别人如何使用:虽然采用了doxygen风格的注释,并自动产生相应的API文档,但能够使用的人寥寥,有这个功底的人不见得认可你的系统,没相应功底的人也玩不转你的系统。所以下一个系列,考虑如何让系统能够支持更多的平台。首选ARM,为什么?应为ARM正处于发展的前期,使用的人也广泛,而RT-Thread第一个支持的平台就是s3c4510,这个是lumit开源项目赠送的平台。在其后,支持了包括s3c44b0,AT91SAM7S64,AT91SAM7X256,s3c2410,AT91SAM9200,coldfire,x86等一系列平台,编译器统一使用GCC,这个时期无疑是最艰难的时期(真的艰难吗?呵呵,但肯定是迷茫的),这个就是0.2.0、0.2.1、0.2.3、0.2.4版本等,不同的版本支持不同的平台。猜猜我这段时间是干什么工作的?不知道大家对这个领域是否熟悉,手机2G,3G协议栈开发。每天都和协议栈打交道,而且最痛苦的是上千页的25.331 RRC协议,都是英文的,所以RT-Thread算做是工作之外的苦中作乐吧。而也正是这个时候,shaolin同学出现了,帮助完成了RT-Thread/x86的移植,他当时还是学生。这其中还有一件郁闷的事,当时RT-Thread团队还有几个人,只不过主要是shaolin和我。当0.2.3发布时,我建议开始微内核的道路,嗯,可能很多人还比较困惑,RT-Thread后面跟着的为什么是“启动下一代RTOS演化”,当时就是因它而感慨:把微内核引入进来,把内核态和用户态分开来,并且建立一个类似于L4的微内核。当然最重要的是,其中有一个强实时核心。而且L4实际上是把页表操作放到内核之外的,如果内核是一个强实时内核将对整个系统的实时性提升很大,而因为微内核的缘故,也能够运行linux的应用程序,并且当时RT-Thread也提出了一种,线程即IPC的概念。。。只是,最后的提案被大家否决了。团队开始有数人,只是能够坚持的没几个。3、一年增加0.0.1本人很早就接触了Linux,算是国内资深的Linux接触者(早期也算一个Linux开发人员吧),KDE 1.0几乎是看着发展起来的(大家有谁用过RedHat 5.1?)。个人算是很多方面有一些自由软件的习惯:软件的版本号是非常重要的一个标志,宁愿增加一个细微的版本号也不轻易的增加一个大的版本号,因为大的版本号是需要对用户负责的。1.0版本更代表了系统的稳定性,健全性。例如mplayer到1.0版本就经历众多小版本,0.99的beta版本亦无数。RT-Thread也把这点体现得淋漓尽致,0.2.2到0.2.3一个版本的增加,整整花了一年多的时间。但这个小版本号的增加,却带来了开源社区嵌入式环境中最完善的TCP/IP协议栈:LwIP。当然,开始时并不算稳定。在这几个版本中,RT-Thread也终于从迷茫中走出来,RT-Thread需要自己的特色,一个单独的RTOS Kernel没太大的用处,因为你并没有上层应用代码的积累,并且一些基础组件也非常重要,有这些基础组件基本上意味着,在这个平台上写代码,这些代码就是你的,甚至是你哪天也可以把它放到另外一个硬件平台上运行。同样,0.2到0.3版本号的变更,花费的时间会更长^-^ 版本号的长短,是和计划的feature实现是密切相关的,没到设定的目标如何可能进行发布呢?4、Cortex-M3的变革RT-Thread的变革因为Cortex-M3而来,因为ST的STM32使用的人太广了,当然还有非常重要的一点。RT-Thread已经开始支持Keil MDK,armcc了。GNU GCC确实好,并且也由衷的推崇它,使用它,只是调试确实麻烦,阻碍了更多人使用它(ARM平台上)。当RT-Thread + Cortex-M3 + Keil MDK碰撞在一起的时候,火花因它而生,越来越多人使用RT-Thread了,当然这和RT-Thread厚积薄发是离不开的,因为这个时候,RT-Thread已经有一个稳定的内核,shell方式的调试利器finsh,DFS虚拟设备文件系统,以及LwIP协议栈。而RT-Thread/GUI则在密集的移植到CM3上,RT-Thread/GUI成型于2008年底,但为了Cortex-M3分支,这个组件停下来很多,但这种停留是值得的。另外就是特别感谢UET赠送的STM32开发板了,RT-Thread/STM32的分支都是在UET赠送的STM32开发板上验证的。5、RT-Thread为什么是对象化的设计方法可能这个话题太偏技术化了,说说其他,呵呵。面向对象编程有它的好处,例如继承。可以让具备相同父类的子类共享使用父类的方法,基本可以说是不用写代码就凭空多出了很多函数,何乐而不为呢。另外,对象的好处在于封装。当一个对象封装好了以后,并测试完成后,基本上就代表这个类是健全的,从这个类派生的子类不需要过多考虑父类的不稳定性。这里着重提提另外一个人,我工作后的第三年,曾向当时的同事也是好友,L.Huray学习面向对象的实时设计方法:Octpus II。深刻体会到了面向对象设计的好处(需求分析,体系结构设计,子系统分析,子系统设计,测试,实时性分析),但鉴于嵌入式系统中C++的不确定性,所以个人更偏向于使用C来实现。所以,L.Huray算是我的老师了,一直希望能够有时间把他老人家的思想更进一步的发扬光大,希望以后有这个机会。(Octpus I最初起源于Nokia,然后由M.Award, L.Huray发展成Octpus II,现在几乎见不到踪影了,唉)。(作者原文:实时线程操作系统(RT-Thread)4年开发历程 乐与苦)

Ⅳ lwip0是什么设备啊

lwip0是零配置网络。在网络环境下运行相应的应用软件,为网络中的用户提供共享信息资源和服务的设备。

无线零配置(WZC),也称为无线自动配置,或WLAN AutoConfig是一种无线连接管理实用程序,包含在Microsoft WindowsXP及更高版本的操作系统中,作为一项服务,根据用户的偏好动态选择要连接的无线网络,各种默认设置。

这可以用来代替计算机无线网络设备制造商提供的无线网络实用程序,或者不使用无线网络实用程序。无线适配器的驱动程序查询NDIS对象ID并传递可用的网络名称(SSID))到服务。

该服务随后将其列在连接“属性”的“无线网络”选项卡上的用户界面中,或者在可从通知区域访问的“无线网络连接”对话框中列出。甲检查(调试)WZC服务的的生成版本可被开发用于获得由所述服务记录的额外的诊断和跟踪信息。

发展:

无线零配置于Windows XP首次引入。Windows Vista和Windows 7中提供等效功能的服务称为“WLAN AutoConfig”,基于Windows Vista中引入的Native Wi-Fi架构。

早期的Windows XP中没有供开发者创建无线客户端程序和管理配置文件与连接的无线LAN API。在Windows Vista发布后,微软发布了KB918997来为Windows XP SP2增添无线LAN API。它后来也被集成在Windows XP Service Pack 3中。

Ⅳ LWIP如何建立多个TCP连接

原始版本的lwip忘光了,提供我修改的,希望有帮助/*线程空间池*/typedef struct tagNETTHREAD{BOOL state;//状态int prio; //任务prioOS_STK threadStk[NET_THREAD_STK_LEN];//堆栈空间}NETTHREAD, *PNETTHREAD;/*初始化线程空间*/static BOOL ThreadSpaceInit(void){int i;if ((NET_THREAD_MAX_NUM + 8 + 1) > OS_MAX_TASKS){ //线程任务最大数目超过OS_MAX_TASKSreturn FALSE;}for (i = 0; i < NET_THREAD_MAX_NUM; i ++){NetThreads.state = THREAD_SPACE_STATE_FREE; //状态为freeNetThreads.prio = NET_RECV_TASK_PRIO – 1 – i; //任务prio分配为tcp主循环任务的上NET_THREAD_MAX_NUM个}return TRUE; }/*每accept一个socket分配一个线程*/int NetThreadCreate(void * s){int i;for (i = 0; i < NET_THREAD_MAX_NUM; i ++){ //搜索线程池,首先释放已经销毁的线程资源if (NetThreads.state == THREAD_SPACE_STATE_DELING)//线程状态是否为delif (OSTaskDel(NetThreads.prio) == OS_TASK_DEL_ERR){//若是,判断任务是否已经删除NetThreads.state = THREAD_SPACE_STATE_FREE;//若任务已经删除,则释放线程资源}} for (i = 0; i < NET_THREAD_MAX_NUM; i ++){//搜索线程池,看是否有可用的线程资源OS_ENTER_CRITICAL();if (NetThreads.state == THREAD_SPACE_STATE_FREE){NetThreads.state = THREAD_SPACE_STATE_USED;OS_EXIT_CRITICAL();/*创建线程任务,server是scoket里面的任务服务函数,所以首先需要添加socket里面的域,并在建立服务期线程connect成功的时候给你赋值*/if (OSTaskCreate(((PSOCKET)s)->server, s, &NetThreads.threadStk[NET_THREAD_STK_LEN – 1], NetThreads.prio)){return (int)&NetThreads; //返回线程id,必须在socket里面在添加一个域用来保存}NetThreads.state = THREAD_SPACE_STATE_FREE;}else{OS_EXIT_CRITICAL();}}return ERROR;}/*销毁一个线程*/void NetThreadDel(void * s){PNETTHREAD pt;//根据socket得到线程id(pt),//线程空间的state要设置为del pt->state = THREAD_SPACE_STATE_DELING;//在根据次id得到线程任务prio,删除任务OSTaskDel(pt->prio); }

Ⅵ rt-thread lwip使用哪个比较稳定

个人认为RT-Thread是一个非常好的系统。和其他系统比较,除了RTOS内核以外,它把开发需要的很多构件都已经纳入。比如TCP/IP协议(他移植了lwIP),GUI等等。这些非常必要,而普通开发者又无力自行搞定的构件已经可以之间使用。对于开发小型系统而言,非常方便、省心。

Ⅶ lwip0是什么设备

是零配置网络。在网络环境下运行相应的应用软件,为网络中的用户提供共享信息资源和服务的设备。

服务器的构成与微机基本相似,有处理器、硬盘、内存、系统总线等,但服务器是针对具体的网络应用特别制定的,因而服务器与微机在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在很大的差异。

通常情况下,服务器比客户机拥有更强的处理能力、更多的内存和硬盘空间。服务器上的网络操作系统不仅可以管理网络上的数据,还可以管理用户、用户组、安全和应用程序。

(7)lwip比较稳定的版本扩展阅读:

网络上,储存了所有必要信息的计算机或其它网络设备,专用于提供特定的服务。例如,数据库服务器中储存了与某些数据库相关的所有数据和软件,允许其它网络设备对其进行访问,并处理对数据库的访问。

文档服务器就是计算机和储存设备的组合,专用于供该网络上的任何用户将文档储存到服务器中。打印服务器就是对一台或多台打印机进行管理的设备,而网络服务器就是对网络传输进行管理的计算机。

Ⅷ 如何查看lwip源码的当前版本

在Linux内核的顶层Makefile中,顶端就有,格式为 VERSION = 3 PATCHLEVEL = 0 SUBLEVEL = 8 EXTRAVERSION = NAME = Sneaky Weasel 以上的版本号就是3.08

Ⅸ 单片机TCP/IP开发板的如何选择

2. 1 各类开发板目前单片机TCP/IP一般有面向16位和32位的单片机的LWIP、面向8位单片机的uIP、面向51单片机的ZLIP等。目前51单片机上的TCP/IP协议栈以uIP和ZLIP为主,目前uIP的最高版本为V1.0,ZLIP的最高版本为ZLIP增值版V1.0。2. 2 选择注意事项作为单片机上网技术学习者,选择一款合适的开发板对于学习是事半功倍的,选择开发板时应该注意以下问题:1. 价格考虑。TCP/IP开发板的最主要的东西在于TCP/IP协议栈本身,硬件的成本可以做得很低,所以不要因为低价而忽略了核心软件。对于TCP/IP协议栈可以从如下方面考虑:a) 稳定性:商家提供的TCP/IP协议栈是否有全面的测试,是否在连续PING的情况下不断线,是否在发送接受大数据量(例如10M以上)时不丢失任何字节?对于使用者来说如果协议栈不稳定,那么对于项目的顺利开发将带来很大麻烦。b) 易用性:使用单片机TCP/IP开发板的用户一般都对于嵌入式TCP/IP的使用不太了解,这就需要开发板提供更加完善的资料和使用手册。包括函数定义、更多的例子程序等。c) 厂家的技术:某些厂家只是仿冒他人的开发板,用户在使用中遇到的问题根本无法给于解答。这就需要用户问清楚该协议栈是否是厂家自己设计的。2. 外包装和质量保证:外包装不好可是使得用户收到时,开发板已经在运输过程中受损而无法使用。


赞 (0)