《mtk程序分析》ppt课件

《mtk程序分析》ppt课件

ID:40011714

大小:277.00 KB

页数:32页

时间:2019-07-17

《mtk程序分析》ppt课件_第1页
《mtk程序分析》ppt课件_第2页
《mtk程序分析》ppt课件_第3页
《mtk程序分析》ppt课件_第4页
《mtk程序分析》ppt课件_第5页
资源描述:

《《mtk程序分析》ppt课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、MTK程序分析康勤2005.9程序整体结构程序的封装性,导致能看到的进程不多,很多进程都是以库的形式出现程序员可以通过MTK提供的模版自己新加线程。在custom_config.c中在custom_config.c中,通过MTK提供的模版,我们可以推测的出程序其他进程的创建和实现程序整体结构可以看到custom_comp_config_tbl结构,从这个结构,我们可以看到跟进程创建有关的需要使用到的一些参数:比如进程创建的入口,进程的堆栈空间大小和地址。这个是提供给程序员添加新模块时需要使用到的,从这里我们可以

2、推测其他进程的创建也应该是采用通用的方式以下将举一些可以看到代码的线程进行分析:程序整体结构分析FMT模块。FMT模块和MMI中的MMI_FILEMANAGER有着对应的关系。可以把FMT模块看成是MMI_FILEMANAGER的底层操作模块。MMI_FILEMANAGER是FMT的上层MMI管理。程序整体结构FMT很简单,但麻雀虽小五脏具全,一个进程应该具有的,它都含有,所以很方便分析FMT的开始是从fmt_create开始的,这个可以从刚才讲的结构custom_comp_config_tbl中得到结论。在这

3、个结构中需要传入一个进程的入口函数。FMT进程估计就是把fmt_create函数地址给传进去的。程序整体结构这个fmt_create主要作用还是传递入口函数地址:有如下几个函数:fmt_task_main,/*taskentryfunction*/fmt_init,/*taskinitializationfunction*/NULL,/*taskconfigurationfunction*/fmt_reset,/*taskresethandler*/NULL,/*taskterminationhandler*/

4、程序整体结构我们需要关注的是fmt_task_main函数。这个函数可以说是整个进程的心脏。它里面包含一个消息泵,就是一个无限循环,不停从消息队列中获取消息分发消息:1。从消息队列中获取消息,通过函数receive_msg_ext_q来实现的,这个函数没有给出具体原代码,大家有兴趣可以通过里面的参数来猜想它的实现方式。程序整体结构2。设置当前活动模块stack_set_active_module_id。3。分发消息,通过消息号,找到对应的消息处理函数,同时传入的参数中可能包含一些需要的参数数据,有时可能是具体数

5、值,有时是全局的数据指针。处理完后封一个消息,发完需要回复的模块(一般是消息发起者模块)程序整体结构4。释放返回消息数据内存区域free_ilm。到这时一个完整进程执行过程。这个是一个小的进程的执行过程,其实其他的进行执行过程应该也差不多,虽然表面看起来不同,但实质上应该是一样的我们来看MMI进程。这个进程应该也像普通进程一样通过mmi_create来把入口传入进操作系统。程序整体结构这个入口也包含了一系列的入口函数地址,其中还是那个MMI_task最为关键,可以称之为心脏或消息泵。在这个MMI_task里面,

6、虽然看起来很复杂,而且整个结构跟刚才的看起来一点都不像,但如果再深入点去看看代码,去想想,应该发现这个MMI的实质跟刚才那个简单的FMT进程是一样的。下面对其进行分析:程序整体结构1。从消息队列中获取消息,用到的是OslReceiveMsgExtQ函数,其实那个只是#defineOslReceiveMsgExtQreceive_msg_ext_q这样来的,无非是用了一个#define来把receive_msg_ext_q替换。这样做的好处:MMI用到的是framework,这样使framework很通用,以后要

7、用于别的程序,framework也很好的移植而不需要重写MMI进程程序整体结构2。设置当前活动模块,同上面说的一样,使用了OslStackSetActiveModuleID是stack_set_active_module_id的别名。3。分发消息。这里分发消息,有些是在开机前进行的,需要另外处理,比如长按键开机,USB插入,充电等。另外的一些消息分发处理都是通过ProtocolEventHandler来完成。这个ProtocolEventHandler其实质就是对不同的消息ID,执行相应的处理函数,只是把这些I

8、D和处理函数用了一个统一的数据结构来记录和管理,通过一系列接口来供使用者调度,这样就不需要管它如何处理的。使用者只需要设置ID和其对应的入口函数地址就可以,它的管理程序会把这些都调度好。也是能很好的移植的。程序整体结构4。释放内存OslFreeInterTaskMsg(&Message);不需要再进行解释了,和上面的都一样。对ProtocolEventHandler,还想说一些,就是那

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。