我在QNX上的开发经历

我在QNX从事开发工作接近一年了吧,写了大约有20000行代码,前几日项目总算告一段落。老板让把工作总结一下,好安排后续工作。
现在将我这段时间的感受写出来,供大家参考一下。另外也欢迎大家将自己的想法写出来,相互交流。
去年毕业后,刚到公司,便被派到智能仪器部,让我参与一个嵌入式系统的开发。由于我是从机电专业转过来的,平常对软件比较爱好,下功夫比较多,也比较熟悉;而对硬件只是了解一些很基本的知识(当然这并不影响我对系统结构的理解,因为计算机原理一类的书也曾学习过。为了研究Linux内核,汇编语言一类的东西也看过),就被安排做后台软件的开发。当时恰好公司刚刚购买了一套QNX,就让我学习学习,看看如何用起来。我很高兴,马上将它装了上去。装完之后感到非常震惊,界面可以说非常漂亮!心想公司这十几万块钱可没白花。
接下来嘛,作为一名开发人员,自然最关心的还是它的开发工具了。我快速读了一下附带的那些资料,将IDE开动了起来,写了几个小的程序,感觉还不错,虽然远不如VC++,Qt好用;但对入嵌入式系统来讲,能达到这个程序也可以满意了。于是还快我就进入了工作状态,开始了系统的分析、编码。
但不久之后,就感觉不爽了,因为QNX提供的那套IDE(Momentics)稳定性太差,老出问题,动不动就跳出个exception,真是不胜其烦。好在咱也用过Linux,对控制台命令也知道几个,干脆停掉IDE,用ped编写代码,用qcc编译。好无奈呀!
这个样子过了一段时间,开始图形界面的开发,又遇到问题了。因为我们这个产品已经发展了好多年了。以前的版本都是在Windows下用VC作的,功能说起来也比较多了,图形用户界面也很漂亮的。现在用QNX作,自然也不能要求太差了。但是大家来说一下,QNX提供的那套开发工具,你用着顺手吗?真是暗暗叫苦。于是我又想起了Qt,因为网上的资料说能够在QNX下跑起来的。可我折腾了好些天,也没让它顺顺当当跑起来。因为从网上下载的那个Qt是以二进制的形式给出来的,但是我安装的时候,老提示有几个库文件找不到(路径什么我都设置了,按说明的步骤操作,并且在Linux下,我也装了好多遍,都没问题的)。无奈,看来此路不通,只好再回来用QNX自带的开发工具。IDE是不敢用了,只剩下了PhAB。说句实在话,这个工具运行起来还是很稳定的,基本不会出现莫名其妙的错误;但功能就不能很令人满意了,尤其是无法在项目中加入类定义,调试功能无法准确找出函数库中函数的出错点,一旦出现什么异常或错误,找起来可费死劲了。哎,用这么原始的工具作开发,真是浪费了多少时间和精力呀!看看和我一起写程序的老师,用VC写Windows版的软件,又快又好,真是羡慕!!!
好在,慢慢坚持下来,总算完成产品的几个比较重要的功能(Windows版的程序已经完工,先用着),可以缓口气了。但回想起来这段经历和后面还未完成的工作,可真是不是滋味。为了对得起公司支付给我的工资,还要再受数月的煎熬,真是痛苦。
以上是我个人的经历及感受,请各位多多指教!

QT 运行有何问题?
你下载的可能是我编译的,我运行没啥错啊?

如果用IDE,那还是Windows版或是Solaris版比Neutrino版稳定。

不过,只是编程,调试的话,我还是喜欢用命令行的。 :slight_smile:

谢谢两位老师的指导。
今天上午我将QNX从6.2.0PE升级到了6.2.1NC,总算将Qt安装好,让它跑起来了。下午试了一下,感觉不是太稳定,比较容易出现异常退出的情况。不知是我配置得有问题,还是系统本来就不太成熟?
我觉得QNX要想和Windows CE、VxWorks等系统相比更有竞争力,一定要加强开发工具的开发和支持。应该说,QNX操作系统本身的品质很好(微内核结构,实时性好等),——这从网站上那篇评测报告可以看得出来。但是对于程序员来讲,简化应用程序的开发还是非常重要的。因为,如果操作系统的特性只要能满足应用的需求,大家一般会选择易用性好和性能价格比低的系统。因为如果开发工具不够强大,软件部分的开发成本和维护成本都会增加很多,弄不好还会延迟产品的上市时间。
就拿Windows CE和QNX来说,虽然CE的综合评测指标不如QNX,但是如果它能满足应用的需求,因为CE的开发工作简单的多,在价格差不多的情况下,我倾向于选择CE.
不知两位老师能否向QSSL公司提一下建议,不再让程序员如此痛苦。另外,两位老师能否说一下你们的观点?
另外,QNX能否专门成立一个部门专门负责对Qt等软件进行支持(可以收取一定的费用)?

IDE在Neutrino上的不稳定,主要是JAVA VM不够稳定。(IBM 的J9)如果你试过Windows/Solaris版的话,就知道IDE还是挻好用的。

Eclipse是一个很不错的平台,VxWorks也于日前宣布将要支持Eclipse平台。QNX在Eclipse上增加的调试功能,也很强大。当然,要完全熟悉Eclipse系统需要时间。这个其实是与WinCE最大的差距,任一个在Windows上使用过VC++的人都可能成为WinCE的开发者。

关于GUI的开发,传统的嵌入式领域要求还不是太高。必竟用QNX做router的人不会用到太多的GUI开发。phAB同VC++在原理上也已经差不多了,只是开发的人要熟悉所有的Widget及其使用要花时间。phAB有可能同IDE结合起来,这样或许可以更好用一点。

至于QSSL直接支持Qt恐怕可能性不大,不过你应该可以在www.openqnx.com上得到帮助。不少把3rd party软件移植过来的人都在那个论坛上。

我一直用QCC,觉得很好用,IDE不好用就干脆别用它。phab开发出来的东西很适合于嵌入式系统,我觉得它和VC没有可比性,再说phab开发出来的东西也很漂亮呀。

其实,我觉得qnx关键的问题不在于它的开发工具好不好用(老实说PhAB使用起来还是可以的),主要问题在于它的开发文档有时候写得确实简单了些,这让初学者往往感到很困惑,另外qnx的网上可利用资源也少了些,这都可能是qnx在中国不能形成大的应用群体的部分理由吧,不知道我的观点几位同不同意呀。

我个人认为PhAB作一般的简单界面还是可以的。但是应用稍微复杂一些,应付起来可就吃力了。主要原因是:在PhAB项目中无法加入类的定义。
在这个面向对象的技术盛行的年代,从分析到设计,再到编码,哪一样离得开它?尤其是向其中加入设计模式一类的东西,类的数量更会骤增。如果不能定义类,如何应付?我增试着按照书上讲的方法用C语言来模拟实现类,以及类之间的继承关系。但试过之后,就再也不想用了。一是太罗嗦,二是手工维护这些代码太容易出错。返回来之后,当然没有别的选择,只好在PhAB项目中将这些东西去掉。
现在,我都是先在外面将与界面无关的东西封装好(写成类文件),然后将这些文件编译成动态链接库文件。然后在PhAB项目中将.h包含过来,编译的时候将生成的动态链接库文件加上。
但是,这个方法有个严重的缺点:如果错误是发生在.so文件中,调试的时候无法确切追踪到出错点。只能回来一点一点地研究代码。有时候这样一个小问题能浪费好些天的时间。
大家做这一类程序的时候都怎么办哪?有没有什么好办法?请不吝赐教。

你好 :我刚刚进入嵌入式开发领域 用的是qnx的os IDE却是不敢恭维 PHab才解决了汉字显示的问题,没有进入到实质的开发过程 。我非常希望你能帮助我提高,把你的经验传授一下 不胜感激 我的邮箱:gaol@ydelec.com 我现在正在作再嵌入式平台中播放DVD的工作。