找回密码
 注册
搜索
查看: 41396|回复: 116

[讨论] 展讯平台令我欲哭无泪(连载--个人观点)

[复制链接]
发表于 2006-6-5 10:50:00 | 显示全部楼层 |阅读模式
最近在尝试修改展讯平台的多媒体部分功能,结果看到的代码让我气的是七窍流血啊!
后续有时间我将详细列出一些代码来分析他们有些模块的编程水平简直可以用弱智来形容(话说的重,但是实际确实如此)
说句心理话,如果没有用这个平台的千万不要用,这是我的肺腑之言,当然我的意思不是说展讯平台一无是处,其实他也有很多比较不错的,但是作为开发,如果你看到内部的上层代码,让你觉得这个产品非常的不可靠,当然实际上可能也是可靠的!
今天我就分析下展讯平台中多媒体下载图片的一些代码:
作者是:(不好意思说了,如果展讯有工程师看到下面的模块,自己会知道的)
如果你看到这个函数--LOCAL MMI_RESULT_E HandleDownloadPic(
                                     MMI_WIN_ID_T     win_id,  
                                     MMI_MESSAGE_ID_E    msg_id,
                                     DPARAM              param
                                     )
觉得也并没有什么问题,但是如果你想在这个函数中做些其他功能的时候,你会发现你很难加入相应的代码,比如说我想加入nandflash等类似的操作,你绝对会吐血。
今天太忙了,还得修改模块,没有精力描述了,等时间空的时候,我会单独就展讯d平台的不足之处做详细的阐述!
如有得罪之处,请各位见谅!
 楼主| 发表于 2006-6-7 22:37:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>swork</I>在2006-6-5 11:13:00的发言:</B>
你是指函数内容还是指这个接口有问题,你在仔细看看上下文就知道了,为什么这么定义接口了。我不是展讯的,我也正在负责d平台的多媒体、通话的模块,以后多交流。</DIV>


我指的是函数内容问题,在窗体消息case里代码太多,且不封装成模块函数,另外下载图片的操作与存储驱动结合太密切,缺乏功能扩展的灵活性。等你都看了多媒体部分的,如:拍照,摄像,mp4,truempeg4,mp3,后,你会发现多媒体部分的整体架构设计不到位,冗余代码多,效率低,且不直观,另外truempeg4竟然连简单的OSD都没有,人机交互非常差。以后有什么问题交流交流吧。说句实在话,如果不是怕展讯这边的程序升级问题,我真想自己写多媒体这部分的代码。
点评回复 1 0

使用道具 举报

发表于 2006-6-7 12:51:00 | 显示全部楼层
MMI应该是通过FFS对NAND进行操作的
点评回复 1 0

使用道具 举报

发表于 2006-6-5 11:13:00 | 显示全部楼层
你是指函数内容还是指这个接口有问题,你在仔细看看上下文就知道了,为什么这么定义接口了。我不是展讯的,我也正在负责d平台的多媒体、通话的模块,以后多交流。
点评回复 0 1

使用道具 举报

发表于 2006-6-7 23:17:00 | 显示全部楼层
<P>DIng!</P>
[此贴子已经被作者于2006-6-7 23:55:46编辑过]
点评回复

使用道具 举报

发表于 2006-6-15 14:54:00 | 显示全部楼层
<P>Maybe involve this platform</P>
点评回复

使用道具 举报

发表于 2006-6-15 16:15:00 | 显示全部楼层
<P><b><FONT color=#000066>mikal过来和我一起做设计吧</FONT></b></P><P><b><FONT color=#000066>基本上,你所需要的驱动原码我这里都有</FONT></b></P>
点评回复

使用道具 举报

 楼主| 发表于 2006-6-17 13:48:00 | 显示全部楼层
<B>以下是引用<I>aquasnake</I>在2006-6-15 16:15:00的发言:</B>

<P><B>mikal过来和我一起做设计吧</B></P>
<P><B>基本上,你所需要的驱动原码我这里都有</B></P>



谢谢aquasnake 的赏识啊!
不过由于由于现在公司离不开我,我也不忍心目前抛弃我们的公司,所以希望以后有机会合作!
在这个论坛上,我拜读过你很多经典的文章,觉得您是高手啊,真的希望有机会跟你混!
哈哈!
点评回复

使用道具 举报

 楼主| 发表于 2006-6-17 15:50:00 | 显示全部楼层
开始探讨基于6600D芯片的7350平台!以下探讨都局限于本人目前对展讯平台的了解,如有不到之处,请各位大侠指正。 </P> <p></p></P>       第一篇:开机篇</P> <p></p></P>       开机,就是手机在上电后的一系列操作,当然这里的开机包括上电和按power键。目前,展讯手机平台开机的操作都是按照如下顺序进行。</P> <p></p></P>1、  手机上电,cpu根据arm的某个pin来决定运行内部mask rom的程序,还是直接跑外部接的flash程序;</P>2、  进入到mark rom中运行,是要下载代码到外部flash中去,也就是程序的升级。</P> <p></p></P>3、  如果进入外部flash中运行,手机将做一些简单的硬件和os的配置,就进入cpu休眠,</P>这个时候只接收power键的中断事件来响应程序。</P> <p></p></P>一、程序升级:</P>手机在没有灌程序的时候,通电,如果检测到的pin为某个值后,就进入mark rom中运行、mark rom的程序是展讯固化在arm中的程序,出厂就烧好了,而且不可擦除。</P>Rom中的程序功能主要是下在FDL程序,然后运行FDl程序,把PS,NV等代码烧到指定的flash中去。这里说明一点的是,rom中的程序是把FDL的程序下载到展讯Arm </P>Cpu的内部ram中的,具体地址是:0x40000000。这里的FDL就是展讯平台所支持的flash的驱动程序。</P>二、程序正常运行:</P>用ASD1.2启动展讯的工程文件,会发现,其entry point是0x0,其表示启动程序地址</P>是从0x00 开始的,有幸的是,开始代码展讯公开了,其文件是:tx_illdb.s;这这个文</P>件中,程序简单配置了些寄存器,然后直接跳到库函数__main中去了,库函数运行c</P>语言的运行环境后就直接调用main.c文件中的mian()函数,最后,程序将运行到文件</P>init.c文件中的PUBLIC uint32 SCI_InitRef(uint32 mode)函数中去,检查程序启动的条件,</P>以便决定cpu是进入休眠还是继续运行。对于程序开始到运行到这里,我想说以下几点:</P> <p></p></P>1、  PUBLIC void SCI_ApplicationDefine(void *first_unused_memory) 函数处理的事情太</P>多,我不明白展讯为什么要这个函数处理这么多事情?处理多事情的坏处就是:你</P>按power键,真正到lcd点亮,居然要6秒的时间之久。</P>2、  PUBLIC void RM_GetRunMode(void)函数内竟然有500ms的延时,对于此函数放在</P>这里是否合适,我也不好说,但是这个函数的耗时这么长,是绝对不好的。(这个</P>函数的功能好像是做校准)</P> <p></p></P>简单的从上面的开机流程看,展讯在开机流程和下载程序方面的总体设计差,欠缺生产方面和实际用户的经验。</P>其需要改进的宗旨是: </P>1、打开下载程序软件,运行这个软件,然后接上手机,按power键就可以直接下载程序了;2、手机上电池后,长按power键,3秒到4秒左右,手机lcd屏亮;</P> <p></p></P>       以上是我对展讯开机流程的了解,欢迎各位高手斧正!
点评回复

使用道具 举报

发表于 2006-6-19 17:27:00 | 显示全部楼层
<P>楼主关于展迅D平台的开机流程介绍的不错!</P><P>只是一只没看到为什么展迅平台让你欲哭无泪的原因,是真有其事,还是哗众取宠,又或是楼主根本就是枪手一个?</P>
点评回复

使用道具 举报

 楼主| 发表于 2006-6-20 13:09:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>shadyu</I>在2006-6-19 17:27:00的发言:</B>

<P>楼主关于展迅D平台的开机流程介绍的不错!</P>
<P>只是一只没看到为什么展迅平台让你欲哭无泪的原因,是真有其事,还是哗众取宠,又或是楼主根本就是枪手一个?</P></DIV>


哈哈,送你一个笑话,认真看看吧!
MM:请问java有前途还是.net有前途?
GG:说过多少次,重要的是思想而不是语言。
MM:那java的思想重要还是.net的思想比较重要?
GG:事实上老板定薪水的思想比较重要!
点评回复

使用道具 举报

发表于 2006-6-20 14:38:00 | 显示全部楼层
<P>HandleDownloadPic这个函数很复杂吗?</P><P>如果你习惯了window下的SDK编程就会觉得这点代码根本不算什么。</P><P>还有不知道你想加些什么代码,NAND Flash和Norflash的操作本身就差不多。自己写一个文件系统抽象接口就可以完事了。</P>
点评回复

使用道具 举报

发表于 2006-6-20 17:51:00 | 显示全部楼层
非常不爽展讯的window风格编程,跟英飞凌的apoix差不多,感觉是不是参考apoix做的呢。。。。嵌入式和window还是区别很大的。。这点展讯确实应该向国外大的平台供应商学习,好的东西拿过来,说归说,大家还是要支持国货
点评回复

使用道具 举报

发表于 2006-6-20 22:08:00 | 显示全部楼层
<DIV class=quote><B>以下是引用<I>fx_wang</I>在2006-6-20 17:51:00的发言:</B>
非常不爽展讯的window风格编程,跟英飞凌的apoix差不多,感觉是不是参考apoix做的呢。。。。嵌入式和window还是区别很大的。。这点展讯确实应该向国外大的平台供应商学习,好的东西拿过来,说归说,大家还是要支持国货</DIV>


基本上现在的embedded software engineer都是从PC的VC学起转型的,很少是从硬件转型的。所以思路不一样。
PC的软件工程师,多不考虑资源的限制(因为PC可以升级嘛,你跑不动是你电脑配置差)。但是嵌入式系统资源有限,如何在有限的资源下使硬件性能发挥到极限是很考验设计者功力的。很多情况下是先在PC机上模拟跑起来,再porting到Target,虽然这样加速了软件开发速度,但是却埋没了优秀程序员的成长
看到很多代码,全局变量到了滥用的地步,虽然这样可能程序员是感觉写的比较顺,但是代价就是额外支出了RAM的使用量(空间不优化)。另外过多的全局变量也使得模块的对外接口过多,增加了模块之间耦合性,降低了可移植性,增加了代码修改所需要耗费的精力
点评回复

使用道具 举报

发表于 2006-6-21 09:57:00 | 显示全部楼层
<P>展讯采用类windows的消息机制本身没有什么问题,也不是衡量embeded software system和pc software syetem的本质区别。</P><P>不过展讯在写应用的时候,全局变量到了泛滥的地步,确实很令人难受。</P><P>还有很多很弱智的宏,看了也让人很不爽。</P>
点评回复

使用道具 举报

 楼主| 发表于 2006-6-22 17:00:00 | 显示全部楼层
<P>一个手机软件平台有太多的pc 软件工程师参与做嵌入式软件开发,表征了现在的嵌入式软件工程师比较缺乏。另外就是如今的人力成本问题,造成找不到好的嵌入式软件工程师!</P><P>另外,我个人认为展讯看是采用了windows的消息机制,但是实际上差的太远了;理论上分析是心有余,而力不足啊!</P><P>一大堆控件合成的机制漏洞百出!</P>
点评回复

使用道具 举报

发表于 2006-7-27 16:33:00 | 显示全部楼层
请教, 6600D 会被6600M 替代吧?不知6600D 还会存在多久?如果被替代,研究6600D 的程序对6600M 有价值吗?   无知之处,望包涵.
点评回复

使用道具 举报

发表于 2006-7-28 13:00:00 | 显示全部楼层
1、  PUBLIC void SCI_ApplicationDefine(void *first_unused_memory) 函数处理的事情太

多,我不明白展讯为什么要这个函数处理这么多事情?处理多事情的坏处就是:你

按power键,真正到lcd点亮,居然要6秒的时间之久。


关于这点我深有体会,展讯的TD手机就是这副德性,开机半天,还以为坏了。
点评回复

使用道具 举报

发表于 2006-7-28 21:03:00 | 显示全部楼层
6600M=6600D+多媒体处理模块
点评回复

使用道具 举报

发表于 2006-7-29 11:02:00 | 显示全部楼层
不过展讯在写应用的时候,全局变量到了泛滥的地步,确实很令人难受。
----------
这点,你要是看了MTK平台后,不止是难受。。。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-11-26 11:10 , Processed in 0.761338 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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