下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MTK內(nèi)存、任務(wù)管理和定時(shí)器消息機(jī)制 轉(zhuǎn)MTK內(nèi)存、任務(wù)管理和定時(shí)器消息機(jī)制(轉(zhuǎn))2010年11月16日15:401內(nèi)存管理。平臺(tái)不提供動(dòng)態(tài)分配內(nèi)存的方式;應(yīng)用程序需要使用動(dòng)態(tài)分配內(nèi)存時(shí),可以采用以下幾種方式:與系統(tǒng)其他模塊共享內(nèi)存,典型的是使用MED模塊的內(nèi)存;定義一個(gè)靜態(tài)數(shù)組,交給系統(tǒng)adm托管,然后調(diào)用kal_adm_alloc、kal_adm_free等內(nèi)存操作函數(shù)實(shí)現(xiàn)動(dòng)態(tài)內(nèi)存分配;定義一個(gè)靜態(tài)數(shù)組,應(yīng)用自己實(shí)現(xiàn)基于此數(shù)組的分配和管理,也就是實(shí)現(xiàn)自己的內(nèi)存管理模塊。在MTK的資料中,介紹了它的內(nèi)存管理機(jī)制,有3種:ADM、Control buffer、System Memory。后兩個(gè)
2、是系統(tǒng)使用的,與上層應(yīng)用無(wú)關(guān)。但是我對(duì)kal_system_alloc也做了初步分析。sys_mem_ptr,其估計(jì)應(yīng)該指向的是System_Mem_Pool,debug_mem_ptr,其估計(jì)應(yīng)該指向的是debug_Mem_Pool。經(jīng)過(guò)初步分析,kal_system_alloc就是從System_Mem_Pool做簡(jiǎn)單的加法操作,sys_mem_left_size就是System_Mem_Pool還剩下多少。kal_system_alloc從sys_mem_ptr開(kāi)始來(lái)計(jì)算要取的內(nèi)存。ctrl_buf是通過(guò)kal_system_alloc的內(nèi)存,然后再通過(guò)NU_Create_Partiti
3、on_Pool創(chuàng)建POOL。系統(tǒng)的一些task stack.等也都是通過(guò)kal_system_alloc來(lái)分配的。也就是說(shuō),Control buffer、System Memory用的都是System_Mem_Pool的空間。而System_Mem_Pool可以查到,是在custom_configmem函數(shù)中配置。ADM就完全沒(méi)有使用操作系統(tǒng)提供的內(nèi)存管理算法,是平臺(tái)自創(chuàng)了一套。開(kāi)發(fā)者,可以自己開(kāi)辟一個(gè)POOL,自己在這個(gè)池用ADM提供的內(nèi)存管理API完成內(nèi)存的動(dòng)態(tài)管理。具體的分配算法,就沒(méi)有再細(xì)看,跟一些通用的內(nèi)存分配算法應(yīng)該一致。但是在以前調(diào)試一個(gè)問(wèn)題的時(shí)候,應(yīng)該是可以斷定,ADM在每一個(gè)
4、alloc node前后都加了GAP調(diào)試區(qū),來(lái)判斷是否被overwrite。至于系統(tǒng)中,到底是用了多少塊內(nèi)存用于ADM,各塊內(nèi)存又是讓哪些應(yīng)用在共享,開(kāi)發(fā)者可能更清楚。在系統(tǒng)中是否建立了對(duì)內(nèi)存動(dòng)態(tài)分配的監(jiān)控機(jī)制,比如查詢內(nèi)存泄漏、動(dòng)態(tài)內(nèi)存使用效率等等。3少于2K使用get_ctrl_buffer。大于2K使用adm get_ctrl_buffer是在系統(tǒng)定義的一塊區(qū)域申請(qǐng)空間。這段空間被分為好多塊均等大小。好像有以下幾種方式:2個(gè)1K*2 4個(gè)0.5K*4 6個(gè)0.25K*8申請(qǐng)的話,按首適應(yīng)算法。這就是你所說(shuō)的小塊內(nèi)存管理。adm主要是你自己定義的一塊全局?jǐn)?shù)組比如400K.你可以使用它的ad
5、m相關(guān)函數(shù)去動(dòng)態(tài)申請(qǐng)釋放這400K大小的區(qū)域,維護(hù)也靠你自己。2.任務(wù)管理任務(wù)管理。系統(tǒng)任務(wù)采用靜態(tài)創(chuàng)建方式,靜態(tài)配置任務(wù)優(yōu)先級(jí)、棧大小、任務(wù)全局唯一ID等;不提供動(dòng)態(tài)創(chuàng)建Task的方式;任務(wù)內(nèi)部以及任務(wù)之間的通信通過(guò)內(nèi)部事件隊(duì)列和外部事件隊(duì)列完成Application_Initialize中的mainp函數(shù),負(fù)責(zé)任務(wù)的創(chuàng)建。我們?cè)诖a中見(jiàn)不到任務(wù)創(chuàng)建的函數(shù),只需要維護(hù)任務(wù)初始化參數(shù)數(shù)據(jù)結(jié)構(gòu)。對(duì)于系統(tǒng)的那些task信息,都保存在sys_comp_config_tbl變量中,我們看不到。但是MTK提供給客戶的custom_comp_config_tbl,客戶是可以修改的,在這里用戶可以定義自己的
6、task。關(guān)于任務(wù),需要關(guān)心數(shù)據(jù)結(jié)構(gòu)comptask_handler_structcomptask_handler_struct成員的執(zhí)行順序,應(yīng)該是:comp_init_func在系統(tǒng)還未schedule即在Application_Initialize中完成,然后task schedule后執(zhí)行comp_entry_func。comp_cfg_func、comp_reset_func、comp_end_func我認(rèn)為無(wú)太多意義。MTK6235Custom_config.h中對(duì)于添加一個(gè)Task如下注釋:Steps to add component task 1.add component t
7、ask's index(Please add before system service)添加Task索引(在系統(tǒng)服務(wù)之前)2.add component task's module id definition(Please add before system service)添加Task模塊ID(在系統(tǒng)服務(wù)之前)3.add module to task transformation in syscomp_config.c在syscomp_config.c中添加Task轉(zhuǎn)換模塊4.add and implement component task's create han
8、dler添加并實(shí)現(xiàn)Task創(chuàng)建句柄另外用戶定義Task不超過(guò)16個(gè)3.定時(shí)器消息機(jī)制MTK定時(shí)器消息機(jī)制分析1.數(shù)據(jù)結(jié)構(gòu)(1).stack_timer_struct定時(shí)器類型的信息結(jié)構(gòu)其主要作用似乎是用以裝載待發(fā)送的定時(shí)器消息數(shù)據(jù)(2).TIMERTABLE定時(shí)器隊(duì)列節(jié)點(diǎn)結(jié)構(gòu)其由主要元素mmi_frm_timer_type結(jié)構(gòu)及鏈表指針兩個(gè)元素組成(3).event_scheduler隊(duì)列信息結(jié)構(gòu)(4).mmi_frm_timer_type定時(shí)器信息結(jié)構(gòu)2.L4定時(shí)器初始化(1).步驟創(chuàng)建MMI Task-設(shè)置MMI Task初始化函數(shù)在該函數(shù)中調(diào)用L4InitTimer(2).作用初始化定時(shí)
9、器隊(duì)列并設(shè)置基本定時(shí)器1,2 3.發(fā)送定時(shí)器消息(1).步驟StartTimer-L4StartTimer(2).兩種類型的定時(shí)器MTK中有兩種類型的定時(shí)器a.NO_ALIGNMENT非隊(duì)列式的,即要求立即執(zhí)行的定時(shí)器,時(shí)間到了就自動(dòng)被reset.b.ALIGNMENT隊(duì)列式的,即可以通過(guò)隊(duì)列操作,有一定的延時(shí)容忍的定時(shí)器.其基本執(zhí)行流程執(zhí)行定時(shí)器超時(shí)?-保存timer id,event id-timer stop|no event?-END;c.除了觸摸屏和手寫,其他情況下的定時(shí)器一般都是隊(duì)列式的.(3).L4StartTimer的作用判斷將要發(fā)送的定時(shí)器ID,根據(jù)是否是隊(duì)列類型傳遞給不同的
10、隊(duì)列結(jié)構(gòu)(event_sheduler1/event_sheduler2);(4).TimerExpiry這是作為參數(shù)傳遞給L4StartTimer的回調(diào)函數(shù),由于MTK做了一定的封裝,因此其內(nèi)部具體回調(diào)觸發(fā)過(guò)程無(wú)法得知,但根據(jù)猜測(cè),應(yīng)該是在定時(shí)時(shí)間一到,以中斷的方式發(fā)出消息(MSG_ID_TIMER_EXPIRY),并將其寫到MMI的循環(huán)隊(duì)列.該函數(shù)可能是在L4CallBackTimer中調(diào)用的,L4CallBackTimer的作用如下a.重置當(dāng)前定時(shí)器信息結(jié)構(gòu)(mmi_frm_timer_type);b.執(zhí)行定時(shí)器到點(diǎn)后的執(zhí)行函數(shù)(TimerExpiry);c.將Timer消息寫到MMI循環(huán)隊(duì)列中.4.與StartTimer對(duì)應(yīng)的StopTimer(1).具體實(shí)現(xiàn)通過(guò)調(diào)用L4StopTimer操作.(2).作用找出指定要停止的定時(shí)器ID在隊(duì)列中的位置,然后使用evshed_cancel_even
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)轎車子午胎全鋼貼花兩半模具數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)汽車液壓雙缸舉升機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)化妝水?dāng)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)盲球清市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)雙盤粉腸爐市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)L板(升降)沾漿機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2025年度數(shù)據(jù)中心設(shè)施租賃合同范本3篇
- 二零二五年度水庫(kù)大壩安全監(jiān)測(cè)與水質(zhì)監(jiān)測(cè)服務(wù)合同3篇
- 2025年度住宅小區(qū)防水檢測(cè)評(píng)估合同樣本
- 2025年度電梯安全風(fēng)險(xiǎn)評(píng)估與預(yù)警系統(tǒng)開(kāi)發(fā)合同4篇
- 2025福建新華發(fā)行(集團(tuán))限責(zé)任公司校園招聘30人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 山東鐵投集團(tuán)招聘筆試沖刺題2025
- 真需求-打開(kāi)商業(yè)世界的萬(wàn)能鑰匙
- 2025年天津市政集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- GB/T 44953-2024雷電災(zāi)害調(diào)查技術(shù)規(guī)范
- 2024-2025學(xué)年度第一學(xué)期三年級(jí)語(yǔ)文寒假作業(yè)第三天
- 2024年列車員技能競(jìng)賽理論考試題庫(kù)500題(含答案)
- 心律失常介入治療
- 《無(wú)人機(jī)測(cè)繪技術(shù)》項(xiàng)目3任務(wù)2無(wú)人機(jī)正射影像數(shù)據(jù)處理
- 6S精益實(shí)戰(zhàn)手冊(cè)
- 展會(huì)場(chǎng)館保潔管理服務(wù)方案
評(píng)論
0/150
提交評(píng)論