版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
MTKMMI啟動過程分析分類:MTK學(xué)習(xí)資料2012-04-0814:5236人閱讀評論(0)\o"收藏"收藏\o"舉報"舉報在取得MTK的06B版本代碼后,開始進(jìn)行了艱苦的代碼分析工作,我的工作是把一個手機的MTK的代碼移植到另外一個手機上,在改了custom部分代碼后,系統(tǒng)雖然可以正常啟動,但LCD是白屏,沒有任何界面顯示。由于沒有仿真器可以使用,只能通過閱讀代碼和調(diào)試進(jìn)行,尤其是和硬件有關(guān)的信息也需要更多功夫去理解。略去硬件平臺的定制代碼,因為那是custom里所定義的一些驅(qū)動初始化的工作,最復(fù)雜的部分還是在plutommi這個代碼目錄里。MMI啟動過程:系統(tǒng)在TaskInit.c里創(chuàng)建了MMI的主要任務(wù)表:constosl_task_create_infotask_create_tbl[TOTAL_TASKS]={{"DUM1TASK","DUM1Q",127,128,0,Dummy_task},{"DUM2TASK","DUM2Q",127,128,MAX_PRT_NODES,Dummy_task},{"MMITASK","MMIQ",127,4096,MAX_PRT_NODES,MMI_task},{"DUM3TASK","DUM3Q",127,128,0,Dummy_task},};接著發(fā)生了如下的函數(shù)調(diào)用過程:1.plutommi\mmi\Framework\Tasks\TasksSrc\MMITask.c->MMI_task,整個界面是由一個任務(wù)函數(shù)啟動,MMI_Task函數(shù)不斷介紹ps層的消息,在收到MSG_ID_MMI_EQ_POWER_ON_IND消息后,如果是鍵盤開機會調(diào)用mmi_bootup_entry_disk_check(),這個調(diào)用最終會做一系列的程序初始化工作。。2.plutommi\mmi\MiscFramework\MiscFrameworkSrc\BootupApp.c->mmi_bootup_entry_disk_check,在系統(tǒng)上電后執(zhí)行這個函數(shù)。3.plutommi\mmi\MiscFramework\MiscFrameworkSrc\BootupApp.c->mmi_frm_power_on_init_procedure4.plutommi\mmi\Framework\Tasks\TasksSrc\MMITask.c->InitializeAll,嘿嘿,又繞回來到這個模塊來了。這個函數(shù)實現(xiàn)了很多平臺初始化的工作,我加了函數(shù)讓系統(tǒng)直接進(jìn)入工程模式(可能有其它更好的辦法。)接著是應(yīng)用程序初始化:在BootupApp過程里,首先是做disk的檢查,然后接著開始檢查飛行模式,緊接著是啟動動畫顯示,接著發(fā)生如下過程(可以在BootupApp.c從上看到下):1.plutommi\mmi\MiscFramework\MiscFrameworkSrc\BootupApp.c->mmi_bootup_entry_nand_check_query()2.plutommi\mmi\MiscFramework\MiscFrameworkSrc\SimDetection.c->PowerOnBatteryIndicationComplete()3.plutommi\mmi\MiscFramework\MiscFrameworkSrc\BootupApp.c->mmi_bootup_exit_nand_check_query()4.plutommi\mmi\MiscFramework\MiscFrameworkSrc\BootupApp.c->mmi_bootup_entry_security_check()5.plutommi\mmi\MiscFramework\MiscFrameworkSrc\SimDetection.c->PowerOnBatteryIndicationCompletePhase2()6.SimDetectionmodule:plutommi\mmi\MiscFramework\MiscFrameworkSrc\SimDetection.c->EntryScrEnterPhoneLock(),phonelock屏幕入口plutommi\mmi\MiscFramework\MiscFrameworkSrc\SimDetection.c->SimPasswdReqResponse(void*inMsg),密碼請求響應(yīng)被調(diào)用plutommi\mmi\MiscFramework\MiscFrameworkSrc\SimDetection.c->mmi_ready_to_idle_screen_ind_hdlr(void*msg),即將進(jìn)入idlescreen時調(diào)用處理。plutommi\mmi\MiscFramework\MiscFrameworkSrc\SimDetection.c->mmi_bootup_entry_security_check(),啟動時的安全檢查。7.plutommi\mmi\IdleScreen\IdleScreenSrc\MiscFunctions.c->goto_opening_screen()8.plutommi\mmi\Framework\Tasks\TasksSrc\MMITask.c->InitAllApplications()以下開機過程都是在simulator上跑時得出的結(jié)論第一步:啟動simulator的時候,直接進(jìn)入:MMI_task()1.iacMemInit();2.進(jìn)入一個while(1)循環(huán)。以后的過程都是通過消息機制,即:一直在這個循環(huán)中讀取消息,然后做相應(yīng)的處理。第一次進(jìn)入while(1)之后,OslReceiveMsgExtQ(qid,&Message)就讀取到一個消息:PRT_MMI_TIMER_IND。然后就一直在這個循環(huán)中讀消息。第二步:PowerOn讀取到消息:MMI_EQ_POWER_ON_INDcaseMMI_EQ_POWER_ON_IND:gdi_init();switch(p->poweron_mode)//判斷poweron的模式{casePOWER_ON_KEYPAD://用戶按下開機鍵OslMemoryStart(TRUE);g_charbat_context.PowerOnCharger=0;//不是因為充電而開機的InitializeAll();//初始化,重點學(xué)習(xí)OslDumpDataInFile();//這個函數(shù)不能進(jìn)入,直接跳過InitNvramData();//加載保存在NVRAM中的設(shè)置的參數(shù)mmi_pwron_entry_animation_screen();//開機動畫break;casecasePOWER_ON_PRECHARGE:casePOWER_ON_CHARGER_IN:g_pwr_context.PowerOnMode=p->poweron_mode;InitializeChargingScr();break;casePOWER_ON_ALARM://定時開機AlmInitRTCPwron();break;casePOWER_ON_EXCEPTION://ForabnormalresetwheninvalidSIMOslMemoryStart(TRUE);SetAbnormalReset();InitializeAll();OslDumpDataInFile();ClearInputEventHandler(MMI_DEVICE_ALL);ClearKeyHandler(KEY_END,KEY_LONG_PRESS);InitNvramData();AlmReInitialize();InitAllApplications();mmi_pwron_exception_check_display();break;}執(zhí)行過開機之后,就不會進(jìn)入這里了。第三步、在模擬器上隨便按鍵,就進(jìn)入defalt這里:default:ProtocolEventHandler((U16)Message.oslMsgId,(void*)Message.oslDataPtr,(int)Message.oslSrcId,(void*)Message.oslPeerBuffPtr);break;以上是總體的開機過程。下面學(xué)習(xí)藍(lán)色部分具體內(nèi)容:InitializeAll(){InitUnicodeSupport();//設(shè)置使用的編碼函數(shù)gdi_init();//圖形庫初始mdi_audio_init();//音頻初始化jdi_audio_init();InitProtocolEvents();//初始化協(xié)議事件(函數(shù)是空的)InitFramework();//初始化事件的處理函數(shù),以及histroy等。{InitEvents();//InitializeeventhandlersInitProcessKeyEvent();//InitializekeyprocessInitHistory();//Initializehistory}InitHardwareEvents();//設(shè)置一些硬件事件的protocolhandler。InitTime();InitMMI_App();setup_UI_wrappers();//初始化圖形界面相關(guān)的參數(shù)PopulateResData();//裝載資源包括:menu,string,image{增加applicationsADD_APPLICATION(APP_MAINMNNU,APP_IDLEAPP,APP_BOOTUP,APP_SIMTOOLKIT,APP_GLOBALDEFS,APP_CHARGER,APP_UIFRAMEWORK,APP_HONEBOOK,APP_SHORTCUTS,APP_SERVICES,APP_ORGANIZER,APP_MESSAGES,APP_CHAT,APP_SETTINGS,APP_CALLMANAGEMENT,APP_DEMOAPP,APP_CLLHISTORY,APP_CALLSETUP,APP_PROFILES,APP_NEWORKSETUP,APP_DATAACCOUNT,APP_PHONESETUP,APP_TODOLIST,APP_INPUTMETHOD。。。。。。);裝載每一個application的資源(MUNE,IMAGE,STRING)(1)PopulateNFBProgressImg();//0—9及其他的image(2)PopulateGlobalData();裝載全局資源:主要就是加載字串ADD_APPLICATION_STRING2和加載圖像ADD_APPLICATION_IMAGE2。注意:有很多image的圖像是空的,即在顯示時,即使設(shè)置了顯示的imageID,但還是沒有圖片。只有STRING。(3)PopulateMainMenuRes();在代碼中有3個此函數(shù),利用宏的控制以達(dá)到不同的應(yīng)用。GW606進(jìn)入的是中間的這個函數(shù),即:宏__MMI_BI_DEGREE_MAIN_MENU_STYLE__關(guān)閉,宏__MMI_VERSION_2__打開。加載左軟件開始進(jìn)入的九宮圖MENU。ADD_APPLICATION_MENUITEM((IDLE_SCREEN_MENU_ID,0,9,MAIN_MENU_PHONEBOOK_MENUID,MAIN_MENU_MESSAGES_MENUID,MAIN_MENU_CALL_HISTORY,MAIN_MENU_SETTINGS_MENUID,MAIN_MENU_MULTIMEDIA_MENUID,MAIN_MENU_FILE_MNGR_MENUID,MAIN_MENU_PROFILES_MENUID,MAIN_MENU_EXTRA_MENUID,MAIN_MENU_SERVICES_MENUID,0,INSERTABLE,MATRIX_MENUMAIN_MENU_MENU_TEXT,MAIN_MENU_PHONEBOOK_ICON));裝載電話簿的MENU(SIM卡有效)ADD_APPLICATION_MENUITEM((MAIN_MENU_PHONEBOOK_MENUID。。。裝載電話簿的MENU(SIM卡無效)ADD_APPLICATION_MENUITEM((MAIN_MENU_PHONEBOOK_NO_SIM_MENUID。。。裝載通話記錄的MENUADD_APPLICATION_MENUITEM((MAIN_MENU_CALL_HISTORY。。。裝載功能設(shè)置的MENUADD_APPLICATION_MENUITEM((MAIN_MENU_SETTINGS_MENUID。。。裝載沒有SIM卡時,電話設(shè)置的MENUADD_APPLICATION_MENUITEM((MAIN_MENU_SETTINGS_NO_SIM_MENUID,MENU_SIM_OPTION_ID,。。。裝載多媒體娛樂的MENUADD_APPLICATION_MENUITEM((MAIN_MENU_MULTIMEDIA_MENUID裝載文件管理的MENUADD_APPLICATION_MENUITEM((MAIN_MENU_FILE_MNGR_MENUID。。。裝載網(wǎng)絡(luò)服務(wù)的MENUADD_APPLICATION_MENUITEM2((MAIN_MENU_SERVICES_MENUID。。。裝載工具箱的MENUADD_APPLICATION_MENUITEM((MAIN_MENU_EXTRA_MENUID。。。到這里,就裝載了九宮圖的MENU,以及其其大部分MENU的childMENU。紅色的兩個:MAIN_MENU_MESSAGES_MENUID(信息)MAIN_MENU_PROFILES_MENUID(情景模式)沒有裝載其childMENU。加載以上MENU中需要使用的STRING和IMAGE。(4)PopulateIdleMenuRes();加載IDLEapplication使用的資源{PopulateStatusIconResources();加載IDLE界面的imagePopulateCommonCategoryResources();PopulateThemeResources();}(5)PopulatePbResData();Populatephonebookresourcedata加載【電話簿】中的每個EMNU的childmenu,stirng,image。(6)PopulateMainDemoRes();PopulatingMainDemoResources(7)populateSettingMenu();PopulatingSettingResources加載【功能設(shè)置】中的每個childmenu的各種資源。包括:話機設(shè)置,通話設(shè)置,網(wǎng)絡(luò)設(shè)置,GPRS連接設(shè)置,安全設(shè)置,恢復(fù)出廠值,音效,藍(lán)牙。{加載[話機設(shè)置]的childmenu,string和image,以及下一層…的childmenu,stirng,image。ADD_APPLICATION_MENUITEM((MENU9102_INITIAL_SETUP。。。PopulateNetworkSetupResData();//加載【網(wǎng)絡(luò)設(shè)置】資源populateManageCalls();//加載【通話設(shè)置】資源PopulatePhoneSetupResData();//剛進(jìn)入populateSettingMenu()的時候,加載了【話機設(shè)置】中一部分的資源。更多的資源是在這個函數(shù)中加載的。populateSecuritySetup();//加載【安全設(shè)置】資源PopulateLanguageStrings();#ifdef__MMI_SOUND_EFFECT__PopulateSoundEffectResData();#endif#ifdef__FLIGHT_MODE_SUPPORT__PopulateFlightModeResData();PopulateConnectSetting();#endif}(8)populateFunAndGamesMenu();PopulatingFun&GamesResources(9)PopulateSimDetectionMenuRes();PopulatingSIMDetectResources(10)PopulateChgrPwrOnScrRes();PopulatingChargerPowerOn(11)PopulateCommonScreensResData();PopulatingCommonScreen(12)PopulateEMSObjectResources();PopulatingEMSobjectResources(13)PopulateCmResData();PopulatingCMResources加載通話過程中使用的各種資源首先加載來電時,各種狀態(tài)下的資源:MENU,STIRNG,IMAGE然后調(diào)用PopulateCmOutResData();加載呼出電話時各種資源(14)PopulateQuickAccessData();PopulatingQuickAccessResources(15)PopulateInputMethodRes();PopulatingInputMethodResources(16)PopulateprofileMenu();PopulatingProfilesResources。。。。。。}//加載資源結(jié)束PopulateResGetBaseIDTable();PowerAndEndKeyHandler();//setspowerkey&endkeyhandlers//開始初始化InitCallManagement();//InitializetheCallManagementApplicationCallmanahementneedstobeinitializedherebecauseofSOScallsconcept{InitIncomingCall();初始來電時protocolevent以及各MENU的響應(yīng)函數(shù)InitOutGoingCall();初始呼出時protocolevent以及個MENU的響應(yīng)函數(shù)memset(cm_p,0,sizeof(cm_context_struct));主要的全局變量ResetGlobalValues();初始化全局變量}initialize_UI_demo();InitNetWorkBootUpEventsCallBack();initializesallnetworkrelatedprotocolhandlersInitProfileApp();InitSimDetection();InitService();InitCPHS();InitHWBacklightTest();InitCallLogs();ATHandlerInit();。。。。。。很多根據(jù)宏來控制的初始化函數(shù)}AllowstheapplicationstoreadtheirNVRAMdatavoidInitNvramData(void){InitDownloadNVRAM();PmgInitExtMelodyStruct();;PhnsetReadWallpaper();//讀取墻紙信息,并設(shè)置為當(dāng)前墻紙PhnsetReadGPIOSetting();//PhnsetReadPwrOnOffDisp();PhnsetInitSetTimeNDateNvram();PhnsetReadNvramScrSvrSettings();InitNvramCallerId();//從NVRAM中讀取callerID,并發(fā)送到L4層。LoadIPNumbers();//讀取IP號碼的設(shè)置以及號碼LoadBlackListNum();//讀取黑名單的設(shè)置以及號碼initnvramprofapp();//InitializeNVRAMforProfileInitSettingNVRAM();//InitialiseSettingsReadValueCityNVRAM();InitAlarmFrameWork();SetModeSpeechVolume();InitServiceWapSetup();InitDataAccountNVRAM();wap_bookmark_nvram_init();}開始SHOW開機動畫voidmmi_pwron_entry_animation_screen(void){(1)判斷在SHOW開機動畫時是否已經(jīng)被中斷,如果是,則進(jìn)入:PowerOnBatteryIndicationComplete(),然后直接返回。(2)獲取要SHOW的動畫資源,類型(3)下面開始SHOW畫面if(res_type==FMGR_GROUP_IMAGE)SHOW的是圖片{ShowCategory166Screen(disp_id,大屏幕filename_ptr,mmi_pwron_show_image_callback);ShowCategory310Screen()orShowCategory313Screen()小屏幕playRequestedTone(POWER_ON_TONE);播放開機聲音}elseif(res_type==FMGR_GROUP_VIDEO)SHOW的是動畫{//entryvideoplayscreenShowCategory224Screen(mmi_pwron_play_video_callback);}elseif(res_type==FMGR_GROUP_SWFLASH)//不知道這是什么{ShowCategory229Screen(mmi_pwron_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度小區(qū)物業(yè)環(huán)境整治與垃圾分類統(tǒng)一管理合同3篇
- 2025年電梯安裝工程設(shè)計與施工質(zhì)量保證合同2篇
- 二零二五年度寶雞購房合同補充協(xié)議參考范本3篇
- 二零二五年度智能家居系統(tǒng)智能安防報警與處理服務(wù)合同
- 二零二五年度佛山旅游企業(yè)員工勞動合同書(旅游服務(wù)責(zé)任)3篇
- 二零二五年度基本建設(shè)借貸合同-生態(tài)環(huán)保工程3篇
- 2025年度科研試驗與推廣合同3篇
- 2025年度知識產(chǎn)權(quán)質(zhì)押融資合同(專利權(quán))3篇
- 二零二五年度外墻保溫施工技術(shù)咨詢合同3篇
- 二零二五年度智能倉儲物流技術(shù)服務(wù)分包合同范本2篇
- 2025年1月八省聯(lián)考河南新高考物理試卷真題(含答案詳解)
- 安徽省蕪湖市2023-2024學(xué)年高一上學(xué)期期末考試 物理 含解析
- 2023年吉林電力股份有限公司招聘筆試題庫及答案解析
- 皮帶崗位題庫解讀
- 食品企業(yè)產(chǎn)品出廠檢驗報告
- 鍋爐本體水壓試驗記錄
- 綜治工作中心信訪穩(wěn)定和矛盾糾紛排查化解工作流程圖
- 牛初乳知識課件
- 鼻出血鼻孔填塞-臨床實踐能力訓(xùn)練考核標(biāo)準(zhǔn)
- 初中中考英語總復(fù)習(xí)《代詞動詞連詞數(shù)詞》思維導(dǎo)圖
- 煤氣化工藝路線的比較
評論
0/150
提交評論