用RT-Thread 做产品的风险问题
从其面向对象的编程模式看,RT-Thread 确实是个好的OS,再者开源的RTOS很多,RT-Thread 作为比较年轻的OS应该借鉴了其他RTOS的优点,摒弃缺点。从这点应该是其优势所在。本人想用RT-Thread 做产品,就不知会有什么风险?RT-Thread (包括RT/GUI)成熟度怎样?FFXZ最了解自己的系统,能否给个客观详细的评估?技术支持及RT-Thread 的生命周期问题等。 如果你把RT-Thread搞清楚了,就没什么风险;如果你搞不清楚,风险永远存在。2003年的时候,我公司有个合作伙伴,开发了一套POS机终端设备,是基于ucLinux的。但该公司没把ucLinux完全搞明白,就依据网上移植方法,移植到该POS机中,结果是POS机设备在用了一段时间之后,丢弃数据。该公司花了半年查原因,而不是去把ucLinux搞清楚,结果是项目失败。这就是风险。
2006年,我在VIA杭州软件公司,开发视频会议系统。该系统是基于NetMeeting的,并使用了开源的H.323库、PWLIB库、免费的QT库,结果是问题层出无穷。究其原因,也是一样,没把这些开源、免费的库搞明白。在开发了2年半之后,项目失败。我当时在VIA杭州软件公司当QA部门经理。
技术最先进不是最主要的,关键是你要搞明白。比如,我想在我的项目中使用KEIL的RTX这个操作系统,我现在已经把它改得面目全非,所有接口函数(API)全部被我改成习惯的PC端软件的形式(我是从PC端软件开发出身的,Windows下的编程技术,基本上全会,包括驱动程序的开发、MMX、SSE2优化等),同时修复了几个容易出错的地方。今后,在基于Cortex-M系列的开发中,我就可以放心大胆地使用被我改造、优化过的RTX(现在,在我这里,改得连RTX的老娘都不认识了)。 回复【1楼】wuzhujian 吴助建
-----------------------------------------------------------------------
RTX能看到源码吗,我没看到啊 可以到超前科技去下载,有最新版V4.05。
连接 :http://www.mcu123.com/ 回复【1楼】wuzhujian 吴助建
-----------------------------------------------------------------------
如果你把RT-Thread搞清楚了,就没什么风险;如果你搞不清楚,风险永远存在。
2003年的时候,我公司有个合作伙伴,开发了一套POS机终端设备,是基于ucLinux的。但该公司没把ucLinux完全搞明白,就依据网上移植方法,移植到该POS机中,结果是POS机设备在用了一段时间之后,丢弃数据。该公司花了半年查原因,而不是去把ucLinux搞清楚,结果是项目失败。这就是风险。
2006年,我在VIA杭州软件公司,开发视频会议系统。该系统是基于NetMeeting的,并使用了开源的H.323库、PWLIB库、免费的QT库,结果是问题层出无穷。究其原因,也是一样,没把这些开源、免费的库搞明白。在开发了2年半之后,项目失败。我当时在VIA杭州软件公司当QA部门经理。
技术最先进不是最主要的,关键是你要搞明白。比如,我想在我的项目中使用KEIL的RTX这个操作系统,我现在已经把它改得面目全非,所有接口函数(API)全部被我改成习惯的PC端软件的形式(我是从PC端软件开发出身的,Windows下的编程技术,基本上全会,包括驱动程序的开发、MMX、SSE2优化等),同时修复了几个容易出错的地方。今后,在基于Cortex-M系列的开发中,我就可以放心大胆地使用被我改造、优化过的RTX(现在,在我这里,改得连RTX的老娘都不认识了)。
谢谢 wuzhujian,搞清楚分两种情况,一是对其使用方法清楚,二是对其内部实现细节清楚。作为OS的使用者,只对前者清楚即可,因为对于每个OS,其系统调用(API)就是对使用者的承诺,使用者不必也不应该清楚其内部实现,只要系统调用的接口说明足够清楚;否则每个使用者都去研究其内部实现,这种重复劳动无益于整个社会劳动效率提高。也违背了原作者的意愿(请相信我,我写好了你尽管放心使用吧),当然这是对使用者而言的,如果是开源项目的参与者或者希望对该开源项目贡献者则应该搞清楚其内部实现细节。我楼主位的提问是从使用者的角度提出的,也就是想明确RT_Thread整个系统架构及各系统调用内部实现的成熟度,任何系统都会存在BUG的,有轻重多少之分,使用者肯定希望RT_Thread的BUGS少,才会敢于使用的产品上。 回复【3楼】wuzhujian 吴助建
可以到超前科技去下载,有最新版V4.05。
连接 :http://www.mcu123.com/
-----------------------------------------------------------------------
太好了,终于找到可以请教的人了。
比如说函数os_tsk_create,
定义如下:
#define os_tsk_create(tsk,prio) _os_tsk_create((U32)rt_tsk_create,tsk,prio,NULL,NULL)
extern OS_TID _os_tsk_create (U32 p, void (*task)(void), U32 prio_stksz,
void *stk, void *argv) __SVC_0;
在源码和编译时出现的原型函数都是:rt_tsk_create
而函数_os_tsk_create 我在哪里都找不到。
想请教一下,这个从os_tsk_create 到实际函数 rt_tsk_create是怎样联系起来的呢? 回回复【5楼】TBN1
回复【3楼】wuzhujian 吴助建
可以到超前科技去下载,有最新版V4.05。
连接 :http://www.mcu123.com/
-----------------------------------------------------------------------
太好了,终于找到可以请教的人了。
比如说函数os_tsk_create,
定义如下:
#define os_tsk_create(tsk,prio) _os_tsk_create((U32)rt_tsk_create,tsk,prio,NULL,NULL)
extern OS_TID _os_tsk_create (U32 p, void (*task)(void), U32 prio_stksz,
......
-----------------------------------------------------------------------
_os_tskcreate()只不过是个包装函数,关键是后缀__SVC_0。它把函数rt_tsk_create()的地址加载到R12,调用“SVC 0”指令,把线程由用户态切换到系统态,同时,R0~R3,R12,R13(LR),R15(PC),PSR压在用户线程堆栈(PSP),进入SVC服务,SP切换为MSP。
在HAL_CM3.C中,有个嵌入函数叫SVC_Handler()。它也是包装函数,调用到R12的地址去执行,也就是调用rt_tsk_create()。rt_tsk_create()执行完毕,返回到SVC_Handler(),有可能会引起线程切换。下面那段代码就是判断是否进行线程切换及如何进行线程切换的。
上述就是由用户线程调用SVC系统服务的全过程。 谢谢
我知道SVC0是放在这个函数最后来切换任务的。
我只是不明白 _os_tsk_create是如何包装rt_tsk_create的。以前从来没有看到过这种用法。 回复【7楼】TBN1
-----------------------------------------------------------------------
查看MDK的关键字__svc_indirect说明,就明白了。 回复【8楼】wuzhujian 吴助建
-----------------------------------------------------------------------
灰常灰常感谢。高人啊,一句话就点醒我了。 以后还有问题请教的话,望吴老师不吝赐教。 呵呵,你们讨论得很热闹啊,今天过完年回来啦!
回复【楼主位】mikebuqi
从其面向对象的编程模式看,RT-Thread 确实是个好的OS,再者开源的RTOS很多,RT-Thread 作为比较年轻的OS应该借鉴了其他RTOS的优点,摒弃缺点。从这点应该是其优势所在。本人想用RT-Thread 做产品,就不知会有什么风险?RT-Thread (包括RT/GUI)成熟度怎样?FFXZ最了解自己的系统,能否给个客观详细的评估?技术支持及RT-Thread 的生命周期问题等。
-----------------------------------------------------------------------
使用RT-Thread自然是有它的好处,否则lz也不会有这个念头:-)
关于RT-Thread及周边组件的稳定性,总结如下:
1. 内核是非常稳定的。
2. BSP不见得稳定,因为每个用户的开发板不尽相同。
3. 稳定性密切和RT-Thread所支持的平台相关联,总体来说,STM32、LM3S和AT91SAM7X比较稳定,S3C2440也不错(仅限于mini2440,目前已经有反馈说因为其他2440开发板使用的LCD不同,而导致一些相关操作出错)。LPC2148也不错
4. 文件系统的bug有一些反馈,不过我们目前正在切换到fatfs去,已经好些了。
5. 网络方面,请注意netutils组件并没真正发布过,所以稳定性不太好(关键是缺少相应的需求,这些已经属于应用层面的,或许我们会把它关闭掉)。网络协议本身还是比较稳定,并且对它的参数做了一些调整,速度也有相应的改善;我们后续计划对其性能再进行一些调整。
6. finsh,已经有部分反馈,主要是输入一些冗长数据,非法数据处理不对,因为主要用于调试,关系不太大。
7. RT-Thread/GUI已经发布,文档中完善中,相信这是一款非常不错的GUI组件,如果对它的代码有过接触,应该也能发现它的特色。因为是beta版,所以bug会有一些。
上面 wuzhujian 吴助建 也说了,是否稳定关键是对其理解如何,对其掌握如何。而RT-Thread的优势是,开发是土生土长在国内的,有任何问题反馈上来也会协助排查。这个应该从RT-Thread的论坛也能够看得出来,有什么问题都在帖子上说(也有通过邮件寻求RT-Thread方面的技术支持,在能够处理及时的情况下,我们建议使用论坛),是bug就是bug,RT-Thread不会逃避,不会删除相应的记录以掩盖什么。
另外,为了协助用户排查代码(用户代码、系统代码)问题,我们已经着手在线系统行为分析工具的开发,这个对问题的排查、系统优化非常有利。 谢谢阿莫!
其实,接触Cortex-M3也是最近2、3个月的事。因为自己产品的需要,认为Cortex-M3能满足我的要求,所以才学习Cortex-M3的。
首先,通读了一遍《ARM Cortex-M3权威指南》,再就是买了半壶水的开发板(原因是:项目中需要在TCP/IP协议中添加转发功能)。
在2003年的时候,我就已经拜读了邵贝贝的《嵌入式操作系统μC/OS-II》,也是在2003年,通读了《用TCP/IP进行网际互联》(共三卷)和《TCP/IP详解》(共三卷),对TCP/IP的原理及实际机制是清楚的,只是要自己实现的话,要花的代价比较而已(自己实现一个TCP/IP协议栈也未尝不可)。
至于操作系统原理,早在1995年的时候就已经分析过DOS 3.30的源代码,以及CC-DOS 2.0的源代码,2000年的时候分析过Linux,同时对80X86的变迁,指令的增加,MMX、SSE、SSE2等,也很熟,包括P4为什么是高频低能,Window XP和Windows 2003、Linux2.6.09及后续版本是如何利用最新的指令来改善P4的线程切换性能的,我都清楚。
所以,一得到RL-ARM的源码,马上对其改进。同时,在其中,应用了我以前开发网络游戏时的内存池技术,作为改进版的RTX的内存分配方案(很高效的)。RTX的代码量,由原来的4K,目前已经减到了3.2K,功能增强了,代码减少了。
目前,uIP已经分析清楚了,正在分析lwIP,同时学习STM32F10x的外围设备编程(正在改进STM32F10x的CMSIS库,多定义宏,少实现函数)。 牛人。。。呵呵。 回复【13楼】wuzhujian 吴助建
-----------------------------------------------------------------------
程序男。。。。。。 是不是把总工都挤兑跑了的那位? 挤跑个把二个总工,正常现象。
自己当总工,也不止在一家、二家公司。 吴大哥现在做MES? 回复【18楼】icer1阿客
-----------------------------------------------------------------------
你怎么知道的? rtx不是有TCPIP栈么,为何还研究uIP和LWIP? 什么叫mes? MES:制造执行系统。
RTX的TCP/IP是没有源码的。没有源码是不可能完成我的任务的。 回复【22楼】wuzhujian吴助建
MES:制造执行系统。
RTX的TCP/IP是没有源码的。没有源码是不可能完成我的任务的。
-----------------------------------------------------------------------
呵呵,其实这个也是做RT-Thread的初衷,为人鱼肉不如握入己手,有了一个好的开放平台,可以共同推动它完善它 回复【23楼】ffxz
-----------------------------------------------------------------------
同道中人。 牛人 都是牛人 回复【1楼】wuzhujian 吴助建
如果你把RT-Thread搞清楚了,就没什么风险;如果你搞不清楚,风险永远存在。
2003年的时候,我公司有个合作伙伴,开发了一套POS机终端设备,是基于ucLinux的。但该公司没把ucLinux完全搞明白,就依据网上移植方法,移植到该POS机中,结果是POS机设备在用了一段时间之后,丢弃数据。该公司花了半年查原因,而不是去把ucLinux搞清楚,结果是项目失败。这就是风险。
2006年,我在VIA杭州软件公司,开发视频会议系统。该系统是基于NetMeeting的,并使用了开源的H.323库、PWLIB库、免费的QT库,结果是问题层出无穷。究其原因,也是一样,没把这些开源、免费的库搞明白。在开发了2年半之后,项目失败。我当时在VIA杭州软件公司当QA部门经理。
技术最先进不是最主要的,关键是你要搞明白。比如,我想在我的项目中使用KEIL的RTX这个操......
-----------------------------------------------------------------------
下次别人公司都不敢要你了,去哪里哪里失败,呵可,开玩笑,推荐本WIN驱动开发的书行不?入门到实用级的 回复【27楼】liurangzhou
-----------------------------------------------------------------------
现在,我还有必要跟别人打工吗?再说,项目的成功与失败,关我屁事,又不是我主管的。
开发Win驱动的书有:《WDM驱动程序模型设计》、《windows 2000驱动程序开发大全(DDK)》、《Windows WDM设备驱动程序开发指南(DDK)》、《windows WDM驱动程序开发(DriverWorks)》。
驱动程序的开发对于网络游戏来说,非常重要。比如游戏数据重定向,多游戏服务器动态平衡,甚至是DNS重定向等,都可以在设备驱动层完成。 强帖留名 吴总的公司有网站么? 回复【30楼】acer
-----------------------------------------------------------------------
目前在筹备阶段,也是研发阶段,没有网站。在产品没完善之前,要保持低调。 回复【31楼】wuzhujian 吴助建
回复【30楼】acer
-----------------------------------------------------------------------
目前在筹备阶段,也是研发阶段,没有网站。在产品没完善之前,要保持低调。
-----------------------------------------------------------------------
就这个意思 mark 回复【28楼】wuzhujian 吴助建
回复【27楼】liurangzhou
-----------------------------------------------------------------------
现在,我还有必要跟别人打工吗?再说,项目的成功与失败,关我屁事,又不是我主管的。
开发Win驱动的书有:《WDM驱动程序模型设计》、《windows 2000驱动程序开发大全(DDK)》、《Windows WDM设备驱动程序开发指南(DDK)》、《windows WDM驱动程序开发(DriverWorks)》。
驱动程序的开发对于网络游戏来说,非常重要。比如游戏数据重定向,多游戏服务器动态平衡,甚至是DNS重定向等,都可以在设备驱动层完成。
-----------------------------------------------------------------------
驱动程序不是我的主要,只要业余水平就可以了,最后一本应该可以,但网上没有找到这本书,你是在哪里买的? 好多牛人济济一堂 牛人 MARK 这个讨论好,认真学习! mark,都是我学习的标榜啊~ wuzhujian 吴助建
----------------
只不会多做了几个项目而已
不见得是个牛人。 回复【28楼】wuzhujian 吴助建
-----------------------------------------------------------------------
我估计你主持的项目也不一定能成功... 虽然你技术比较牛.. 【41楼】 PSP2000
积分:5
派别:
等级:------
来自:
wuzhujian 吴助建
----------------
只不会多做了几个项目而已
不见得是个牛人。
【42楼】 Swordman
积分:120
派别:
等级:------
来自:
回复【28楼】wuzhujian 吴助建
-----------------------------------------------------------------------
我估计你主持的项目也不一定能成功... 虽然你技术比较牛..
那是自然,PSP2000 才是牛人,而主持项目非Swordman莫属. 复【22楼】wuzhujian吴助建
MES:制造执行系统。
RTX的TCP/IP是没有源码的。没有源码是不可能完成我的任务的。
-----------------------------------------------------------------------
呵呵,其实这个也是做RT-Thread的初衷,为人鱼肉不如握入己手,有了一个好的开放平台,可以共同推动它完善它
FFXZ:有志气,有毅力。愿你能多多影响你身边的人,让他们也加入你的行列。
回复【27楼】liurangzhou
-----------------------------------------------------------------------
现在,我还有必要跟别人打工吗?再说,项目的成功与失败,关我屁事,又不是我主管的
WUZHUJIAN:有个性,真直爽。 回复【1楼】wuzhujian 吴助建
如果你把rt-thread搞清楚了,就没什么风险;如果你搞不清楚,风险永远存在。
2003年的时候,我公司有个合作伙伴,开发了一套pos机终端设备,是基于uclinux的。但该公司没把uclinux完全搞明白,就依据网上移植方法,移植到该pos机中,结果是pos机设备在用了一段时间之后,丢弃数据。该公司花了半年查原因,而不是去把uclinux搞清楚,结果是项目失败。这就是风险。
2006年,我在via杭州软件公司,开发视频会议系统。该系统是基于netmeeting的,并使用了开源的h.323库、pwlib库、免费的qt库,结果是问题层出无穷。究其原因,也是一样,没把这些开源、免费的库搞明白。在开发了2年半之后,项目失败。我当时在via杭州软件公司当qa部门经理。
技术最先进不是最主要的,关键是你要搞明白。比如,我想在我的项目中使用keil的rtx这个操......
-----------------------------------------------------------------------
这个回答有点偷换概念。我想楼主问的是RTT和RTGUI的成熟度及可靠性问题,而不是如何修改系统。再者说模块化开发的初衷就是让工作本地化,也就是说你不必了解接口以外的东西。当然,嵌入式系统有它的局限性,有时不得不修改底层的东西。但是,最好也不要改的面目全非,因为如果这样做了,当原软件有更新版本的时候,岂不是要重新改起。
我也说的跑题了。呵呵
PS 保证可靠性不一定非要了解其内部,关键是要测试。 mark mark 关注RT-Thread 唉!中国的技术之所以没有积累!
是因为N人很多都去做管理了,很多自己的经验和技术都在自己肚子里面!
但是也没办法,中国特色!
在中国你是看不到一个50多岁的工程师,你看到的都是管理者!
呵呵! 牛人群出。 留意 mark 其实,接触Cortex-M3也是最近2、3个月的事。因为自己产品的需要,认为Cortex-M3能满足我的要求,所以才学习Cortex-M3的。
首先,通读了一遍《ARM Cortex-M3权威指南》,再就是买了半壶水的开发板(原因是:项目中需要在TCP/IP协议中添加转发功能)。
在2003年的时候,我就已经拜读了邵贝贝的《嵌入式操作系统μC/OS-II》,也是在2003年,通读了《用TCP/IP进行网际互联》(共三卷)和《TCP/IP详解》(共三卷),对TCP/IP的原理及实际机制是清楚的,只是要自己实现的话,要花的代价比较而已(自己实现一个TCP/IP协议栈也未尝不可)。
至于操作系统原理,早在1995年的时候就已经分析过DOS 3.30的源代码,以及CC-DOS 2.0的源代码,2000年的时候分析过Linux,同时对80X86的变迁,指令的增加,MMX、SSE、SSE2等,也很熟,包括P4为什么是高频低能,Window XP和Windows 2003、Linux2.6.09及后续版本是如何利用最新的指令来改善P4的线程切换性能的,我都清楚。
所以,一得到RL-ARM的源码,马上对其改进。同时,在其中,应用了我以前开发网络游戏时的内存池技术,作为改进版的RTX的内存分配方案(很高效的)。RTX的代码量,由原来的4K,目前已经减到了3.2K,功能增强了,代码减少了。
目前,uIP已经分析清楚了,正在分析lwIP,同时学习STM32F10x的外围设备编程(正在改进STM32F10x的CMSIS库,多定义宏,少实现函数)。
吴建助是个高手 今天翻出这个页面出来了 mark!!! 说的很对,确实如此,搞不懂原理只会失败 正在努力学习RTT,打算以后在产品上用RTT替换ucos,不过确实感觉使用内置的文件系统编译出来的代码要比我移植FATFS大很多,另外就是建议将手册在完善一下,现在很多地方间的不是特别清楚,而且很多API函数并没有详细介绍。
另外GUI很不错,感觉使用起来非常舒服。
最后希望RTT能越来越好,希望4.0能够早日发布。 关注一下。 一群牛人,我只有旁观的份,向牛人学习! 向牛人学习,希望自己以后也可以。 总结一下就是,了解得越深入越没有风险!使用的人越多风险越低!RTT正在向这个方向迈进啊~ 关注牛人 mark,向牛人学习 hj mark 支持 RL-ARM 已经有4.12版
http://www.mcu123.com/ 又找到4.13版
http://www.mcu123.com/down/view.asp?id=127 高人,可望而不可及,可遇而不可求! 牛人 本帖最后由 桐溪山农 于 2012-4-19 01:18 编辑
不谈那些在中软做过COSIX项目以及在国防科大从0做OS的老头们,在中国经历过DOS转向WIN 3*在转到WIN 9*时代的那一代两代乃至三代软件工程师,如果不是大懒鬼,基本上个个都搞得通硬件HDL设计/N种操作系统原理和相关驱动甚至偶尔去写一个小系统/系统工具编程/以及大型上层系统的...这个事情,并不单独发生在WUZHUJIAN身上,而是普遍发生在那个年代那个阶段工作的大多数软件工程师当中.这是当时的环境造成的,几个OS的体系在不断变化,硬件接口驱动的模式在不断变,如果对硬件/OS没有深刻的认识,早就挂掉了.
不过手指头点来,哪怕是上个世纪90年代末MS WIN9*转向WIN 2K阶段最后锻炼出的一批通吃软硬件的那帮人,年纪都已经多少了?这些人,假如还在做技术,要转到嵌入式很容易的嵌入式对他们来说只是换了个MCU/MPU,有些转到游戏桌面或服务器和杀软安全领域去了,有些在电信设备类公司带人.所以这些家伙即使依然在上班继续搞技术工作,即使不是什么大公司管理人员和什么拿分红的总监,手头都已经积累了不少项目,随时有机会自己搞几下....至于是高是矮,是牛,还是马,还是驱赶牛马的人,反倒不重要了.
经历过几个OS变迁并有实际经验的人都会清楚,这个世界根本不存在完美的(OS)系统,哪怕是通用OS领域最健壮的IBM 商业主机的系统,胡乱编程,一行代码就可以把系统搞挂,当然,IBM的监控系统可能会自动帮你关掉这个线程/进程,阻止这个进程的泄漏蔓延到其它进程/CPU管理的内存,保存内存映像数据,然后清空相关内存,并帮你/或提示你是否需要重启这个进程,但过一阵再启动还不是玩完? 别的系统可能就没这么聪明了. ..这意味着,再健壮的系统你想要把它搞崩溃,太容易.
既然最健壮的IBM主机系统都那么轻易出问题,RTT的健壮性又如何? 重点慢慢地转移到: RTT系统也不是完美的,那么它的各类接口函数,除了本身不完美留下的隐患,在用户设置错误/不适当的参数输入/不恰当的时机应用时,也会出错,反而是平常事.
前面有朋友也说过有问题正常,解决的方法呢?一般无非,多些学习原理知识,养成良好的编程习惯,参考文档的BUG LIST,及自己多做极限测试.还有别的办法? 估计一扯,都能扯到风水好不好问题去了,呵呵.
要好好学学。 maaaaaaaark 尽是牛人啊!!!!!{:funk:}{:funk:} 强贴,好厉害啊。好好学习。 全这么牛的人,我白忙活了。顶。 都是牛人呀 额,都是大哥啊,虚心学习 MARK,MARK ,MARK 认真学习·~·· 望尘莫及~~~~~~~~~~~ 我现在也准备在公司机器人产品上使用rt thread 正想用rt thread 为人鱼肉不如握入己手 随着硬件性能不断提高,功耗不断降低,价格不断下降,小体积OS会不会受到挑战?好像用Linux的人比较多。 牛人这么多啊,忒自卑了 操作系统选择还是狠重要的
页:
[1]