搜索
bottom↓
回复: 174

实时线程操作系统(RT-Thread)4年开发历程 乐与苦

  [复制链接]

出0入0汤圆

发表于 2010-2-2 23:04:16 | 显示全部楼层 |阅读模式
可能很少有人能够想像到开发一个操作系统能坚持4年,甚至更多,也很难体会到其中的乐与苦。

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,现在几乎见不到踪影了,唉)。

出0入0汤圆

发表于 2010-2-2 23:13:05 | 显示全部楼层
RT-Thread 的作者 ffxz 是最近新遇见的新朋友, 虽然短短时间的交流已经让我对他发自内心的崇敬之情由然而生.

借这个贴子再次表示下敬佩.


先写完再细看贴子......

出0入0汤圆

发表于 2010-2-2 23:13:28 | 显示全部楼层
希望能瓜熟蒂落,终成正果。

出0入0汤圆

发表于 2010-2-3 09:26:51 | 显示全部楼层
最近狂顶你

我说下想用rtt的理由,

一、带lwip,而且听说lwip被你优化了,ram需求少了,速度快了。

二、在用stm32,而rtt又有完备的stm32 的移植,方便啊

其他:没有了

出0入4汤圆

发表于 2010-2-3 09:38:48 | 显示全部楼层
技术牛人!
RTT+STM32,应该就是以后的发展方向了。

出0入0汤圆

 楼主| 发表于 2010-2-3 09:44:27 | 显示全部楼层
回复【4楼】aleyn  煮茶村长
技术牛人!
RTT+STM32,应该就是以后的发展方向了。
-----------------------------------------------------------------------

为什么是RTT + STM32?我不想限制得太死,ST又没给我好处费喽。

技术应该是无派系的,应该说RTT对Cortex-M3支持得都蛮好,Cortex-M0同样也会支持得很好。年后联系下MIPS上海的朋友,看看是否可能找个MIPS的环境来玩玩,有小型的MIPS,也有多核的MIPS,应该玩的花头挺多的。

出0入0汤圆

发表于 2010-2-3 09:51:41 | 显示全部楼层
正在医院排队等待,无聊,顺发几句感言。我是先知道editminus后知道rtt的。一看到rtt的代码后,我就决定彻底抛弃ucos了。等我再测试测试后,准备向熊先生申请商业应用许可(准备应用在电力行业内)。

出0入0汤圆

发表于 2010-2-3 10:03:37 | 显示全部楼层
顶礼膜拜一下先,呵呵!

出0入0汤圆

 楼主| 发表于 2010-2-3 10:04:38 | 显示全部楼层
回复【6楼】oldtom  
正在医院排队等待,无聊,顺发几句感言。我是先知道editminus后知道rtt的。一看到rtt的代码后,我就决定彻底抛弃ucos了。等我再测试测试后,准备向熊先生申请商业应用许可(准备应用在电力行业内)。
-----------------------------------------------------------------------

editminus撤销掉是我心中的痛。

出0入0汤圆

 楼主| 发表于 2010-2-3 10:07:50 | 显示全部楼层
回复【7楼】dragonwww  
顶礼膜拜一下先,呵呵!
-----------------------------------------------------------------------

感谢兄弟一直以来的支持。你的stm32 radio的板子得要到年后了,PCB板能够回来,但是焊接可能来不及,然后就是物流快递。没法,刚好遇到春节。

出0入0汤圆

发表于 2010-2-3 10:13:52 | 显示全部楼层

出0入0汤圆

发表于 2010-2-3 10:13:53 | 显示全部楼层
顶牛人。呵呵。

出0入0汤圆

发表于 2010-2-3 10:17:38 | 显示全部楼层
支持下高手

出0入0汤圆

发表于 2010-2-3 15:11:20 | 显示全部楼层
看到这里,感觉到LZ在RTT上放了很多的心血。

对于应用,有如下建议:
1。推广RTT需要应用,有两种应用:普通工程师的应用,比如在CM3上,有完善的应用,普通工程师仅需改一下配置就可以编程了。(这其中包括硬件配置的程序, 说白了就是傻瓜应用)。当然,CM3 是一个方向。 另外一个应用就是商业应用,某些行业的技术支持是应该收钱的。你收钱,他才心安。
2。就GUI界面而言,CM3 的应用现在很有限,大于QVGA的应用应该把平台建立在LPC2478以上带有LCD接口的。
3。现在国内很多应用LINUX或者cLINUX的,其实不需要那么复杂。RTT可以扮演一个角色,让开发更简单, 当然是带GUI和TCPIP的。
4。通讯方面,不光是TCPIP, CAN和MODBUS也应该有,这两方面,还是利润高的行业。
5。如果是商业应用,应该有具体详细的数据,如任务转换时间,不要用多少倍,而用多少uS; GUI的速度,不要用视频显示,而要用每秒画多少点, 要具体,详细。
5。好的文档非常重要,uCOS 之所以应用这么广泛,原因之一是有某本中文书。 RTT这边,非常简单,太简单了。如果你没有时间,可以搜集建立一本HOWTO,把问题和答案都记录下来,不要让这些用户经验流失,而是应该累计起来当RTT的好的基础。

我相信,有好的文档,和傻瓜应用,才能把RTT的应用带起来,发挥RTT的优势。

就商业而言,不是技术最好的产品成为最后赢家,LZ应该深有感触。问题的关键在于应用!应用!!!

我本人,倒是对RTT的动态内存分配很感兴趣,不会是象其它小型RTOS那种固定大小的内存块分配吧?

出0入0汤圆

 楼主| 发表于 2010-2-3 18:23:48 | 显示全部楼层
回复【13楼】TBN1  
嗯,目前总的感觉是,RT-Thread发展得快了些,文档有所跟不上,得把发展速度降下来,先把该做好的先做好(例如文档,例如商业应用)。

谢谢您的建议,GUI上面可能也可以等STM32的下一版本,或者是一些ARM9也挺不错的。

出0入0汤圆

发表于 2010-2-3 21:42:44 | 显示全部楼层
敬佩,楼主辛苦了!

出0入0汤圆

发表于 2010-2-3 21:49:50 | 显示全部楼层
佩服, 学习

出0入0汤圆

发表于 2010-2-3 22:02:52 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2010-2-4 01:24:25 | 显示全部楼层
顶一下 走的不容易
支持···

出0入0汤圆

发表于 2010-5-20 11:34:52 | 显示全部楼层
这么好的团队,开发出这么好的操作系统。架构是很不错。
    在OURAVR这个良好的技术环境,人气下;肯定能从UCOS中抢走大量的开发项目。
    顶起楼主,顶起RTT,顶起内部团结。
【13楼】 TBN1  建议都非常好,就商业而言,不是技术最好的产品成为最后赢家,LZ应该深有感触。问题的关键在于用户。
    但希望RTT不要太商业化。我们需要一个自己的嵌入式实时OS!

出0入0汤圆

发表于 2010-5-20 14:04:56 | 显示全部楼层
顶一下先。

出0入0汤圆

发表于 2010-5-20 16:18:31 | 显示全部楼层
竟然今天才看到这个帖子。
MARK RTOS
MARK RT-Thread

出0入0汤圆

发表于 2010-6-3 23:40:12 | 显示全部楼层
支持老大

出0入0汤圆

发表于 2010-6-3 23:40:54 | 显示全部楼层
支持老大

出0入0汤圆

发表于 2010-6-24 17:41:32 | 显示全部楼层
今天测了一下,的确很强大,finsh 设计的真不错,准备对此长期测试。

出0入0汤圆

发表于 2010-7-25 23:43:13 | 显示全部楼层
楼主太强大了,支持RT-Thread,希望能将它用在带有简单图形界面的检测类仪器中。

出0入0汤圆

发表于 2010-7-27 16:55:49 | 显示全部楼层
5。好的文档非常重要,uCOS 之所以应用这么广泛,原因之一是有某本中文书。 RTT这边,非常简单,太简单了。如果你没有时间,可以搜集建立一本HOWTO,把问题和答案都记录下来,不要让这些用户经验流失,而是应该累计起来当RTT的好的基础。

HOWTO 这个建议非常好

出0入0汤圆

 楼主| 发表于 2010-7-27 18:30:51 | 显示全部楼层
回复【27楼】cat_li  
5。好的文档非常重要,ucos 之所以应用这么广泛,原因之一是有某本中文书。 rtt这边,非常简单,太简单了。如果你没有时间,可以搜集建立一本howto,把问题和答案都记录下来,不要让这些用户经验流失,而是应该累计起来当rtt的好的基础。
howto 这个建议非常好
-----------------------------------------------------------------------

在网站上有在收集FAQ,做这些都需要精力啊。编程指南的书刚转换成了Word格式的,希望0.3.1版能够尽快发布出来。

出0入0汤圆

发表于 2010-8-6 09:30:46 | 显示全部楼层
原来学过一点UCOS,后来又用上RT-THREAD,感觉不错。最重要的不仅仅是使用上一个系统,而在从里面学到不少经验,原来没有用过的方法。面向对象以前用过,但一直也没明白。更没有在单片机上实现过。看了作者的源码,学到很多的知识。非常感谢!
    以后打算把这个系统用到公司的设计中,先自己学习一下。
    可惜我的英文比较菜,呵呵。现在是有个问题就是核心出来了,但没有详细的应用文档。可以由大家来写。毕竟这是我们国内自己的系统。用着感觉可靠多了,呵呵。

出0入0汤圆

发表于 2010-8-6 10:29:19 | 显示全部楼层
用ECOS的飘过

出0入0汤圆

发表于 2010-8-9 17:21:17 | 显示全部楼层
在现在中国,人很浮躁,包括我,能像楼主这样潜心做技术,特别是自己做操作系统的人很少,太佩服了!!!

出0入0汤圆

发表于 2010-8-9 18:42:43 | 显示全部楼层
傻瓜好,越傻越好,真正了解windows系统内核的有多少,但大家都会用,

出0入0汤圆

发表于 2010-8-10 11:38:07 | 显示全部楼层
想先去好好看看RTT的开发文档,希望在今后的项目中能用上。

出0入0汤圆

发表于 2010-8-23 10:07:45 | 显示全部楼层
我一直没注意有RT-Tread,直到在djyos的某个帖子中见到有人提到更喜欢用RTT。我还在裸奔,啥时候也os一下。

出0入0汤圆

发表于 2010-9-5 00:37:44 | 显示全部楼层
支持!希望中国的系统发扬光大~

出0入0汤圆

发表于 2010-9-6 10:50:35 | 显示全部楼层
支持国产,死顶!
原来还以为是国外的,
也是从djyos版本看到的,咋不宣传RTT呢?

出0入0汤圆

发表于 2010-9-11 09:10:15 | 显示全部楼层
支持!同时期盼这版的STM32RADIO,早已下订单

出0入0汤圆

发表于 2010-9-17 23:10:04 | 显示全部楼层
今天在深圳展会和熊先生请教了,加油 祝好运!

出0入0汤圆

发表于 2010-9-28 23:15:01 | 显示全部楼层
支持LZ,以后有时间用用看。

出0入0汤圆

发表于 2010-10-6 15:18:32 | 显示全部楼层
非常支持,RTT是必须要有良好的商业应用,要不然我倒是担心明天是否还能看得到它。

出0入0汤圆

发表于 2010-10-6 15:42:57 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-10-10 14:50:49 | 显示全部楼层
能否出中文资料

出0入0汤圆

发表于 2010-10-10 15:39:51 | 显示全部楼层
支持并标记一下

出0入0汤圆

发表于 2010-10-11 00:31:02 | 显示全部楼层
支持,什么时候能够出个支持M0的版本呢?

出0入0汤圆

发表于 2010-10-11 09:37:05 | 显示全部楼层
回复【44楼】fuxiangbo  “BOBO”
支持,什么时候能够出个支持m0的版本呢?
-----------------------------------------------------------------------
M0的不是早已存在了么?

出0入0汤圆

发表于 2010-10-29 12:50:24 | 显示全部楼层
先表示敬佩,呵呵,再求抱大腿。哈哈

出0入0汤圆

发表于 2010-11-1 11:38:07 | 显示全部楼层
致敬!

出0入0汤圆

发表于 2010-12-17 12:10:14 | 显示全部楼层
对ffxz无比敬佩仰慕。
在一无资金支持,二无商业利益的情况下,坚持一路走下来,相当不容易。再想想那些拿着国家大把银子的叫兽、专家、院士们,它们除了骗钱骗色还干过什么?我终于知道中国的科技脊梁不在中科院的猪头里。

出0入0汤圆

发表于 2010-12-17 12:33:19 | 显示全部楼层
这个一定要支持,现在还没看,但一定要看,源码在哪呢。

出0入0汤圆

发表于 2011-1-12 21:21:07 | 显示全部楼层
自己家的东西一定要发扬光大,一定要尽善尽美,勉励!

/* mark rt-thread */

出0入0汤圆

发表于 2011-1-13 17:37:08 | 显示全部楼层
ST应该和你们合作搞点活动才是

出0入0汤圆

发表于 2011-1-27 17:06:13 | 显示全部楼层
mark!
等DIY后在试试RTT
顶下LZ!
佩服LZ的耐心!

出0入0汤圆

发表于 2011-1-27 21:26:47 | 显示全部楼层
鼓掌!

出0入0汤圆

发表于 2011-1-28 09:20:24 | 显示全部楼层
敬佩!!

出0入0汤圆

发表于 2011-1-28 09:28:37 | 显示全部楼层
非常理解楼主。楼主还记得当初找人合作开发rtt吗?好久不见了。我和你联系过,那时候我做的是嵌入式GUI类库。
现在我自己手里也有一个rtos,自己弄了很久。以后还要有问题请教啊。

出0入0汤圆

发表于 2011-1-28 23:06:37 | 显示全部楼层
敬佩!!

出0入0汤圆

发表于 2011-1-29 14:46:23 | 显示全部楼层
崇拜!!!
刚刚在板子上跑了RT-Thread+LWIP,硬件是LM3S,下面是netio测试结果(计算机直连):
NETIO - Network Throughput Benchmark, Version 1.31
(C) 1997-2008 Kai Uwe Rommel

TCP connection established.
Packet size  1k bytes:  505.58 KByte/s Tx,  3890 Byte/s Rx.
Packet size  2k bytes:  509.25 KByte/s Tx,  1266.29 KByte/s Rx.
Packet size  4k bytes:  512.83 KByte/s Tx,  2065.88 KByte/s Rx.
Packet size  8k bytes:  514.33 KByte/s Tx,  2039.71 KByte/s Rx.
Packet size 16k bytes:  514.99 KByte/s Tx,  2061.98 KByte/s Rx.
Packet size 32k bytes:  516.90 KByte/s Tx,  2009.47 KByte/s Rx.
Done.
编程指南还是过于简单了,希望ffxz出个优秀的编程指南,最好印刷成书。

出0入0汤圆

发表于 2011-2-8 21:19:52 | 显示全部楼层
支持下下。
抽时间看看

出0入0汤圆

发表于 2011-2-15 19:26:22 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-4-11 16:15:14 | 显示全部楼层
顶下。

出0入0汤圆

发表于 2011-4-11 18:09:47 | 显示全部楼层
顶。顶咱中国技术。

出0入0汤圆

发表于 2011-4-23 20:08:48 | 显示全部楼层
回复【61楼】shamork 氧化还原合成单片机
-----------------------------------------------------------------------

顶起!!!!!

出0入0汤圆

发表于 2011-4-27 16:16:04 | 显示全部楼层
呵呵 使用rt-thread开发了我们的系统,感觉性能很不错,愿意和它一起发展进步。。。

出0入0汤圆

发表于 2011-5-10 14:03:25 | 显示全部楼层
RTT,国产RTOS的希望,虽然现在在学ucos,但迟早会转向RTT的

出0入17汤圆

发表于 2011-5-10 14:28:42 | 显示全部楼层
景仰楼主的dedication

出0入0汤圆

发表于 2011-5-11 17:12:40 | 显示全部楼层
mark

出10入0汤圆

发表于 2011-5-11 17:32:55 | 显示全部楼层
膜拜一下

出0入0汤圆

发表于 2011-5-23 00:54:42 | 显示全部楼层
支持rt-thread,刚入门RTOS,初步研究了两天,拿STM32的代码试用了一下,不过RTGUI编译有点问题没有,本来打算修改下放到自己的板子运行GUI,还没看懂就先放下了。mini2440怎么不提供完整工程呢...就一个空的。0.4.x的RT-thread 加上FTK,实现应用程序动态加载的话,我看这大概不会再支持STM32这样的平台了,我想同时也应该继续发展微型的嵌入式系统和GUI吧。

出0入0汤圆

发表于 2011-7-4 19:35:55 | 显示全部楼层
支持rt-thread

出0入0汤圆

发表于 2011-7-7 12:45:46 | 显示全部楼层
兴奋,越来越喜欢RTT了。

出0入0汤圆

发表于 2011-9-15 16:45:25 | 显示全部楼层
学习中

出0入0汤圆

发表于 2011-10-1 12:34:27 | 显示全部楼层
牛人,鼎力支持!!

出0入0汤圆

发表于 2011-10-10 09:39:16 | 显示全部楼层
太牛了 !!!,

出0入0汤圆

发表于 2011-10-13 08:48:13 | 显示全部楼层
支持版主,技术太高了。中国的JOBS诞生了

出0入0汤圆

发表于 2011-10-16 15:29:54 | 显示全部楼层
牛人,先checkout一个,使用一下

出0入0汤圆

发表于 2011-10-23 22:33:27 | 显示全部楼层
强人!  支持RT-thread!!

出0入0汤圆

发表于 2011-10-24 13:56:51 | 显示全部楼层
回复【楼主位】ffxz
-----------------------------------------------------------------------

ffxz:
  您好!
  我现在做了一项目,主要是通过ucos+lwip+dm900来做一套网络控制模块:一个模块做服务器,多个模块做客户端。
        遇到的问题是:客户端开机后会去连服务器,但若是服务器未开机等原因而没连上,则客户端就会循环着执行连接函数,直到连上为止。问题出现在:当客户端循环执行连接函数几百次后,对连接函数的执行时间会拉长,这时再打开服务器已经连接不上了!请问这是什么原因啊?该怎样解决啊?
    我现在在修改:
lwip_connect(hSocket,(struct sockaddr *)(&server_addr),sizeof(struct ockaddr))
函数,您看思路对吗?若对,该怎样修改啊?
   
其中,循环执行连接函数,直到连接上为止的程序段如下:

while(1)//先连接到服务器,成功后就开始通信
{
       hSocket = lwip_socket(AF_INET,SOCK_STREAM,0); //>0 创建Socket //AF_INET:IPv4;      SOCK_STREAM:TCP   //在socket.c中有定义//返回值是整形   
  if(hSocket == -1) //error
  {
   lwip_close(hSocket); //断开连接
   continue;
  }
  
  lwip_setsockopt(hSocket,SOL_SOCKET,SO_REUSEADDR,&intOptlen,sizeof(int));//如果服务器  终止后,服务器可以第二次快速启动而不用等待一段时间  
  lwip_setsockopt(hSocket,SOL_SOCKET,SO_REUSEPORT,&intOptlen,sizeof(int));//否则,服务器关闭再启动后可能就连不上了
  //lwip_setsockopt(hSocket,SOL_SOCKET,SO_DONTLINGER, ( const char* )&bDontLinger, sizeof( char ) );
  
  if(lwip_connect(hSocket,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr)) == -1) //这里判断是否连接上
  {
        lwip_close(hSocket); //断开连接
       continue;
  }
  else
  {
   ClientCommunicationT(hSocket);  //和服务器通信,入口参数是socket描述符
   //break;
  }
   
}
                           非常感谢您!

出0入0汤圆

发表于 2011-10-29 13:23:36 | 显示全部楼层
挺好 RT-Thread

出0入0汤圆

发表于 2011-11-4 17:49:55 | 显示全部楼层
mark一下!

出0入0汤圆

发表于 2011-11-9 11:20:36 | 显示全部楼层
虽然接触很晚,但是还是要顶一下!

出0入0汤圆

发表于 2011-11-25 20:47:42 | 显示全部楼层
支持国产,mark!

出0入0汤圆

发表于 2011-11-26 13:08:19 | 显示全部楼层
回复【楼主位】ffxz
-----------------------------------------------------------------------

熊工,野火一定支持你。

出0入0汤圆

 楼主| 发表于 2011-11-29 12:00:01 | 显示全部楼层
回复【84楼】fire  野火
回复【楼主位】ffxz
-----------------------------------------------------------------------
熊工,野火一定支持你。
-----------------------------------------------------------------------

和野火稍微聊了聊,野火还是很踏实的人。

出0入0汤圆

发表于 2011-11-29 14:50:13 | 显示全部楼层
mark.//

出0入0汤圆

发表于 2011-11-30 13:39:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-30 21:08:38 | 显示全部楼层
支持国产实时操作系统,感谢老熊的奉献,mark一下~

出0入0汤圆

发表于 2011-12-5 21:19:24 | 显示全部楼层
感觉rt与lwip结合的很好

出0入0汤圆

发表于 2011-12-6 14:37:56 | 显示全部楼层
飘过

出0入0汤圆

发表于 2011-12-6 16:40:57 | 显示全部楼层
我也MARK!

出0入0汤圆

发表于 2011-12-7 12:50:55 | 显示全部楼层
今天我第一次知道有RT-Thread,还是国产的,庆祝一下!
准备上系统,本来打算上uCOS,在网上搜uCOS材料,看到了RT-Thread。
再则我两样的基础都没有,决定选择RT-Thread 。

出0入0汤圆

发表于 2011-12-14 22:53:10 | 显示全部楼层
有空下来看看,应该是好事。有点疑惑不知道这个系统下一步的发展方向是怎样?有个提议,我们做嵌入式有两个工作最费时间,一个是协议栈,另外一个是GUI,GUI方向的发展能否做得像现在的组态软件一样,把主流的TFT,触摸屏都支持了。

出0入0汤圆

发表于 2011-12-21 08:28:38 | 显示全部楼层
还不知道支持哪些芯片, 只支持ARM7,9;还是8051也可用?

出0入0汤圆

发表于 2011-12-21 09:48:51 | 显示全部楼层
我也MARK!

出0入0汤圆

发表于 2011-12-21 13:00:05 | 显示全部楼层
mark 一下

出0入0汤圆

发表于 2012-1-2 11:54:58 | 显示全部楼层
支持RTT!

出0入0汤圆

发表于 2012-1-5 23:26:08 | 显示全部楼层
支持

出0入0汤圆

发表于 2012-1-6 00:08:28 | 显示全部楼层
顶一个

出0入0汤圆

发表于 2012-1-7 19:05:50 | 显示全部楼层
回复【48楼】taishan
-----------------------------------------------------------------------

不要一捆子打死一船人,中科院的老师很多是很朴实的,听老师(芯心参与者)说他们做龙芯的时候,那个过程_真是令人热血沸腾~~~

出0入0汤圆

发表于 2012-1-7 19:11:11 | 显示全部楼层
这些天看ucos,然后我也想过用面向对象的实时设计方法,但是封装之后(相比于过程)的实时性(当然也包裹可预测性)会不会大打折扣?

出0入0汤圆

发表于 2012-1-12 23:06:55 | 显示全部楼层
正准备入门,敬佩。大虾们,你们就是我的目标啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 04:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表