2008年9月29日星期一

在uclinux平台开发的一些体会

在闪联来了后,一直从事的uclinux的开发,硬件是sigmadesign公司的8624芯片。内存是128M。这个芯片没有MMU,支持很多种视频格式,比如avi,wmv,h264, mpeg2, mp4等格式。用它来做高清播放机还是个不错的选择。

和它对应的是sigmadesign的8634系列,内存是256M,有MMU,支持的格式差不多,不过价格比8624贵一点,好像是100左右。也有不少公司选择它做高清播放器。

除了sigmadesign系列的芯片外,还有Ti,C2等方案,他们主要是面向rm/rmvb的播放,但高清能力系列可能不如sigma芯片。

在8624的uclinux平台上开发是一个很折磨人的工作,它没有MMU,也就是没有内存保护,也就是说,任何程序错误可能导致系统崩溃,另外,它不支持dll,所以每个程序都比较大,而且它使用的是flat文件格式,这个格式基本上没有什么资料。另外,内存128M,播放器最少需要48M才支持h264,也就是剩下80M给系统和应用程序,而且uclinux对内存回收比较慢,如果使用通常的new/delete方法,可能产生很多哦内存碎片,在开发过程中,经常出现内存不足的现象(分配不到内存),即使这时候用free看还有不少内存,但可能没有连续的内存了。

在刚到闪联来的一年多的时间内,做DMA产品,这个是从联想的类似软件移植过来的,由于联想
采用的8634,所以这个软件在8634上表现正常,但是在8624上出各种各样的严重问题,比如内存不足(8624比8634小了128M,另外,8634是linux系统,而且支持MMU),另外一个是GPF(一般保护性)错误。内存不足的问题花了很大功夫,经过调整,修改代码,基本上可以保证不容易出,但是GPF就麻烦了,不知道什么地方出现的,为什么会出现,主要是我们几个人对DMA的代码也看不太懂,所以只是试着修改,有时候找不到,只能尽量规避。另外,联想的产品也没有达到上市的程度,也有不少bug,而我们要修改这个产品要达到上市的程度,这样软件产品的质量就可想而知了。

这样的结果是领导要求我们不断加班,晚上和周末经常去加班,但是也没有太大效果,虽然可以解决部分bug,但是最根本的稳定性问题根本无法解决。另外,由于和合作厂商没有谈好,所以最终这个产品没有上市,到现在也没有办法上市。

在这个项目的中期,有个文化部的需求提出,它只需要本地播放功能,不需要网络播放,所以分出一个人来做这个工作,后来大家陆陆续续的加入了这个项目,DMA基本处于停滞阶段。大家为这个项目做了不少的定制工作,最后到2007年10月左右这个产品终于上市销售了。这也是在闪联出来的第一个产品。也算是对DMA项目的一个交代吧。

个人感觉DMA项目做的有问题的主要原因有:
1.选择了8624平台,对开发人员要求太高。而我们的开发人员,都没有这方面的经验
2.把联想的8634移植到8624,没有自己重新开发。很多代码,比如pc端软件,DMA部分也有不少代码依赖联想,联想支持的不是很理想。
3.由于项目没有成功的希望,所以前期的开发人员也基本上走光了,这个是最可惜的。
4.由于公司性质决定,我们不能做长期的技术积累,都是和一些厂商合作,所以项目不能上市的话,对研发部分的人就会下手砍人了。

1 条评论:

匿名 说...

感同身受 ! 我們公司用的是 8620 ! RAM 更少 只有64M , 還要作一大堆功能呢 !