MTK架构分析汇.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK架构分析汇

MTK架构分析 Framework介绍 启动流程 Queue相关 Event相关 History相关 启动流程 在InitApplication();函数中创建了几个线程,用这几个线程来模拟手机中的不同的任务线程。并且为这些任务创建了不同的消息队列。 这些创建的线程中其中有一个是主要的,此线程的入口函数是MMI_task 。 启动流程 函数MMI_task主要完成的是不停的读取protocol task中的消息,然后根据消息和参数进行相应的处理函数 。 在函数MMI_task里读取了消息后,用一个switch语句来选择处理方式 。 当系统收到这个消息MSG_ID_MMI_EQ_POWER_ON_IND时候,系统根据当前系统的状态来决定启动的方式 启动流程 正常启动(用户按键盘启动)中首先调用了函数InitializeAll,这个是系统启动的初始化函数。 接着函数InitNvramData,让一些需要读nvram的模块读出nvram中的数据,以此来初始化这些需要用到nvram中的数据来初始化的模块。 启动流程 初始化后调用函数fast_openscreen,这个函数就是系统启动后进入主屏幕的函数。 在fast_openscreen里开始就播放开机动画及声音,点亮显示屏,并且设置好当开机画面播放完后需要执行的回调函数。当动画播放结束就直接调用此回调函数。 启动流程 最后进入EntryIdleScreen函数,这个函数就是程序的初始界面。并且在里面把左软键设置为进入主菜单,右软件设置为进入电话本。 到这里,一个启动过程总算结束了,以后的事情都交给注册好的事件响应函数和菜单响应函数去做。 Queue相关 在InitApplication()时,我们创建不同的线程,同时创建不同的线程所对应的消息队列。 全局数组task_info_g1是一个osl_task_info类型的数组,此类型有个成员变量task_ext_qid,它是oslMsgqid类型的。就是这个变量保存着消息队列指针。 Queue相关 发消息函数OslIntMsgSendExtQueue向协议栈写入消息。这个函数向协议栈写入一个MYQUEUE类型的消息,这个消息是由用户自己定义的。 操作接口函数:从队列中收消息OslReceiveMsgExtQ和向队列发消息OslMsgSendExtQueue,消息是一个MYQUEUE结构类型,它包含发出消息者和消息要到达的地方。 Queue相关 一般来讲消息发起者和消息要到达的地方是FRAMEWORK或者PROTOCO STACK/L4,前者发出消息让硬件执行某些操作,而后者的消息是硬件发出来的,需要软件来进行响应,比如按键按后需要执行的操作。 MYQUEUE结构类型除了包含发起和接收者外,还包含消息类型号,用于指示消息的用途的,还有一个oslDataPtr指针,它是一些数据块的指针,指向响应函数需要用到的数据。 Queue相关 Event相关 按照event对消息响应的不同,我们可以把它分为两大类:一类是对协议栈和硬件中断消息的响应,一类是对菜单高亮时和显示提示时进行消息响应。看这两类消息的来源,我们也可以说这两类事件分别响应的是硬件消息和软件消息。 Event相关 协议栈和硬件中断event这类事件的管理主要是对两个结构数组的管理,也可以认为是两条链。它们的结构类型都只是包含了两个成员变量,一个是ID,一个是入口函数指针。这两个数组的名称分别是protocolEventHandler和interruptEventHandler。 Event相关 在发消息前往往常常会用到这个函数SetProtocolEventHandler。这个函数的作用是设置一个函数对某个硬件消息进行响应。 道ExecuteCurrProtocolHandler函数完成了其响应过程。当有消息到时,有时还会有对应消息的ExecuteCurrProtocolHandler函数根据消息ID在两个数组中检索相应的响应函数指针,当检索得到函数指针后把参数MsgStruct传给函数指针让其去执行,这样就完成了对消息的响应过程。 Event相关 对菜单高亮和显示提示的消息响应的管理也是通过一个数组来完成的。这个数组是maxHiliteInfo,它是一个hiliteInfo结构类型,其中只包含两个响应函数入口地址,一个是菜单高亮显示时需要转到的入口,一个是提示出现时需要转入的入口。 它和protocolEventHandler不同,它的结构里面不包含索引用的ID,而是以它的下标作为索引,而且都是以菜单资源的ID号来做下标。 Event相关 用SetHiliteHandler函数把菜单和菜单

文档评论(0)

liwenhua00 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档