版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
在MTK平臺(tái)下如何去創(chuàng)建自己的任務(wù)分類(lèi):MTK學(xué)習(xí)資料2012-04-0217:36132人閱讀評(píng)論(0)\o"收藏"收藏\o"舉報(bào)"舉報(bào)MTK平臺(tái)是非常優(yōu)秀的一個(gè)平臺(tái),曾經(jīng)的山寨機(jī)之父,下面我將介紹下在MTK平臺(tái)下如何去創(chuàng)建自己的任務(wù)。
一、基礎(chǔ)知識(shí)
在學(xué)習(xí)如何創(chuàng)建任務(wù)之前,我們需要了解一些基本概念,以及一些和任務(wù)相關(guān)的數(shù)據(jù)結(jié)構(gòu),了解了這些之后,我們就能更好的理解如何去創(chuàng)建任務(wù)了。MTK中關(guān)于任務(wù)的概念有兩個(gè),一個(gè)是TASK,另外一個(gè)則是MODULE,這兩個(gè)有什么區(qū)別呢,task是操作系統(tǒng)層面的概念,MTK使用的是nucleusplus實(shí)時(shí)操作系統(tǒng),其任務(wù)即TASK可以理解為一個(gè)線程,而一個(gè)TASK下面可以有很多的MODULE,MODULE是軟件平臺(tái)設(shè)計(jì)者因?yàn)槟撤N需要而設(shè)計(jì)的。TASK是一個(gè)執(zhí)行單元,MODULE主要是用于傳遞消息,在MTK中,消息傳遞是以MODULE為單位src_mod->des_mod,而不是以TASK為單位。MTK并不支持動(dòng)態(tài)的創(chuàng)建任務(wù),所以任務(wù)的創(chuàng)建是靜態(tài)的,需要事先定義好。而且任務(wù)的創(chuàng)建函數(shù)對(duì)程序開(kāi)發(fā)人員來(lái)說(shuō)是不可見(jiàn)的,MTK提供了幾張數(shù)據(jù)表,讓開(kāi)發(fā)人員來(lái)裝填,裝填好這幾張表之后,系統(tǒng)就會(huì)自動(dòng)創(chuàng)建我們想要?jiǎng)?chuàng)建的任務(wù)了。cunstomer_config.h文件中的枚舉類(lèi)型數(shù)據(jù)結(jié)構(gòu)custom_task_indx_type、custom_module_type,前面一個(gè)枚舉類(lèi)型是用來(lái)定義任務(wù)索引的,后面的一個(gè)枚舉類(lèi)型是用來(lái)定義MOD索引的,開(kāi)發(fā)人員新定義的任務(wù)時(shí),需要在這個(gè)地方添加新的索引。另外一個(gè)文件就是customer_config.c文件中的custom_task_index_type類(lèi)型的變量,custom_mod_task_g變量的裝填,這一步的作用主要就是將一個(gè)MOD和一個(gè)任務(wù)關(guān)聯(lián)起來(lái),即將MOD掛載到TASK上面。
MTK創(chuàng)建TASK的基本結(jié)構(gòu)體:
typedefstruct
{
kal_char*comp_name_ptr;-----任務(wù)的名稱(chēng)
kal_char*comp_qname_ptr;-----任務(wù)所屬隊(duì)列的名稱(chēng)
kal_uint32comp_priority;-----任務(wù)的優(yōu)先級(jí),0~255
kal_uint16comp_stack_size;-----任務(wù)堆棧的大小
kal_uint8comp_ext_qsize;-----外部消息隊(duì)列的大小
kal_uint8comp_int_qsize;-----內(nèi)部消息隊(duì)列的大小
kal_create_func_ptrcomp_create_func;-----task創(chuàng)建函數(shù)
kal_boolcomp_internal_ram_stack;-----是否使用internal_ram_stack
}comptask_info_struct;
comp_internal_ram_stack相對(duì)速度要快,但是數(shù)量有限,一般自己創(chuàng)建的任務(wù)不要去使用,容易引起問(wèn)題。
typedefstruct
{
kal_task_func_ptrcomp_entry_func;----task的入口函數(shù)
task_init_func_ptrcomp_init_func;----task的初始化函數(shù)
task_cfg_func_ptrcomp_cfg_func;----task的配置函數(shù)
task_reset_func_ptrcomp_reset_func;----task的重置函數(shù)
task_end_func_ptrcomp_end_func;----task的終止函數(shù)
}comptask_handler_struct;
task的入口函數(shù)是必須的,這個(gè)函數(shù)告訴系統(tǒng),初始化完相應(yīng)的task控制塊后,就要進(jìn)入該函數(shù)來(lái)運(yùn)行。
task的初始化函數(shù)是在進(jìn)入task入口函數(shù)之前被調(diào)用,用來(lái)初始化可能需要的資源,可選。task終止函數(shù)是,當(dāng)task結(jié)束是要調(diào)用,用來(lái)釋放資源,可選。
二、任務(wù)的創(chuàng)建過(guò)程
有了上面的基礎(chǔ)知識(shí),再創(chuàng)建MTK的任務(wù)時(shí),理解起來(lái)就容易多了,創(chuàng)建任務(wù)主要分為以下的幾個(gè)
步驟:
第一步:增加一個(gè)taskindex到custom_config.h中的枚舉類(lèi)型custom_task_indx_type中。
第二步:增加一個(gè)modeindex到custom_config.h中的枚舉類(lèi)型custom_module_type中。
第三步:把mod和task進(jìn)行關(guān)聯(lián),因?yàn)橐粋€(gè)task可以對(duì)應(yīng)多個(gè)mod,所以需要將mod掛載到
task上,掛載的方法是在custom_config.c中的
custom_mod_task_g[MAX_CUSTOM_MODS]數(shù)組中添加剛剛在第一步中所增加
的那個(gè)taskindex,這樣就能夠通過(guò)modeindex索引到相應(yīng)的taskindex,也就建
立了二者的對(duì)應(yīng)關(guān)系。
第四步:添加task基本信息到custom_config.c中的custom_comp_config_tbl中。
第五步:上面的各種數(shù)據(jù)信息裝填完畢之后,接下來(lái)就開(kāi)始編寫(xiě)自己的任務(wù)的實(shí)現(xiàn)的函數(shù)。
三、任務(wù)創(chuàng)建的舉例說(shuō)明
如果我們想創(chuàng)建一個(gè)任務(wù)名稱(chēng)為FD_TEST4,優(yōu)先級(jí)為219,堆棧大小為4096byte的任務(wù),采用
如下的方法來(lái)創(chuàng)建這個(gè)任務(wù):
第一步:添加TASKINDEX
typedefenum
{
INDX_CUSTOM1=RPS_CUSTOM_TASKS_BEGIN,
INDX_CUSTOM2,
#ifdef__FLAVOR_VENDOR_SDK__
INDX_VS,
#endif
//LXL
INDX_FD_TEST4,-----此處添加TASKINDEX
RPS_CUSTOM_TASKS_END
}custom_task_indx_type;
第二步:添加MODINDEX
typedefenum
{
MOD_CUSTOM1=MOD_CUSTOM_BEGIN,
MOD_CUSTOM2,
#ifdef__FLAVOR_VENDOR_SDK__
MOD_VS,
#endif
MOD_FD_TEST4,-----在此處添加MODEINDEX
MOD_CUSTOM_END
}custom_module_type;
第三步:將MOD掛載到TASK上
custom_task_indx_typecustom_mod_task_g[MAX_CUSTOM_MODS]=
{
INDX_CUSTOM1,
INDX_CUSTOM2,
#ifdef__FLAVOR_VENDOR_SDK__
INDX_VS,
#endif
INDX_FD_TEST4,
INDX_NIL
};
第四步:裝填創(chuàng)建人物的數(shù)據(jù)結(jié)構(gòu)
constcomptask_info_structcustom_comp_config_tbl[MAX_CUSTOM_TASKS]=
{
{"CUST1","CUST1Q",210,1024,10,0,
#ifdefCUSTOM1_EXIST
custom1_create,KAL_FALSE
#else
NULL,KAL_FALSE
#endif
},
{"CUST2","CUST2Q",211,1024,10,0,
#ifdefCUSTOM2_EXIST
custom2_create,KAL_FALSE
#else
NULL,KAL_FALSE
#endif
},
//此處添加TASK任務(wù)的數(shù)據(jù)結(jié)構(gòu)信息
{"FD_TEST4","FD_TEST4_Q",219,1024,30,0,fd_test4_create,KAL_FALSE}
};
第五步:編寫(xiě)任務(wù)的創(chuàng)建函數(shù)fd_test4_create
kal_boolfd_test4_create(comptask_handler_struct**handle)
{
staticconstcomptask_handler_structcustom_handler_info=
{
fd_test4_fun,
NULL,
NULL,
NULL,
NULL,
};
*handle=(compta
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版移動(dòng)辦公設(shè)備采購(gòu)與網(wǎng)絡(luò)配置合同3篇
- 2025年度個(gè)人合伙藝術(shù)創(chuàng)作工作室合作協(xié)議4篇
- 2024石料礦山環(huán)境保護(hù)合同補(bǔ)充協(xié)議范本2篇
- 科技助力下的學(xué)生情緒管理策略
- 寵物教育全解析如何有效溝通與培訓(xùn)
- 校園內(nèi)火災(zāi)應(yīng)急預(yù)案的制定與實(shí)施
- 辦公室文員入職合同范本
- 2025年度智能交通系統(tǒng)個(gè)人勞務(wù)用工合同范本4篇
- 教育與科技的結(jié)合學(xué)校教學(xué)樓電氣優(yōu)化策略
- 教育科技視角下的小學(xué)科學(xué)實(shí)驗(yàn)教學(xué)實(shí)踐案例分享與反思
- 2025屆河南省鄭州一中高三物理第一學(xué)期期末學(xué)業(yè)水平測(cè)試試題含解析
- 個(gè)體工商戶(hù)章程(標(biāo)準(zhǔn)版)
- 七年級(jí)英語(yǔ)閱讀理解55篇(含答案)
- 廢舊物資買(mǎi)賣(mài)合同極簡(jiǎn)版
- 2024年正定縣國(guó)資產(chǎn)控股運(yùn)營(yíng)集團(tuán)限公司面向社會(huì)公開(kāi)招聘工作人員高頻考題難、易錯(cuò)點(diǎn)模擬試題(共500題)附帶答案詳解
- 李克勤紅日標(biāo)準(zhǔn)粵語(yǔ)注音歌詞
- 教科版六年級(jí)下冊(cè)科學(xué)第一單元《小小工程師》教材分析及全部教案(定稿;共7課時(shí))
- 中藥材產(chǎn)地加工技術(shù)規(guī)程 第1部分:黃草烏
- 危險(xiǎn)化學(xué)品經(jīng)營(yíng)單位安全生產(chǎn)考試題庫(kù)
- 案例分析:美國(guó)紐約高樓防火設(shè)計(jì)課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)一 用戶(hù)定位與選題
評(píng)論
0/150
提交評(píng)論