在MTK平台下如何去建立自己的任務

2021-06-05 12:17:44 字數 2479 閱讀 5402

mtk平台是非常優秀的乙個平台,曾經的山寨機之父,下面我將介紹下在mtk平台下如何去建立自己的任務。

一、基礎知識

在學習如何建立任務之前,我們需要了解一些基本概念,以及一些和任務相關的資料結構,了解了這些之後,我們就能更好的理解如何去建立任務了。mtk中關於任務的概念有兩個,乙個是task,另外乙個則是module,這兩個有什麼區別呢,task是作業系統層面的概念,mtk使用的是nucleus plus實時作業系統,其任務即task可以理解為乙個執行緒,而乙個task下面可以有很多的module,module是軟體平台設計者因為某種需要而設計的。task是乙個執行單元,module主要是用於傳遞訊息,在mtk中,訊息傳遞是以module為單位src_mod -> des_mod,而不是以task為單位。mtk並不支援動態的建立任務,所以任務的建立是靜態的,需要事先定義好。而且任務的建立函式對程式開發人員來說是不可見的,mtk提供了幾張資料表,讓開發人員來裝填,裝填好這幾張表之後,系統就會自動建立我們想要建立的任務了。cunstomer_config.h檔案中的列舉型別資料結構custom_task_indx_type、custom_module_type,前面乙個列舉型別是用來定義任務索引的,後面的乙個列舉型別是用來定義mod索引的,開發人員新定義的任務時,需要在這個地方新增新的索引。另外乙個檔案就是customer_config.c檔案中的custom_task_index_type型別的變數,custom_mod_task_g變數的裝填,這一步的作用主要就是將乙個mod和乙個任務關聯起來,即將mod掛載到task上面。

mtk建立task的基本結構體:

typedef struct

comptask_info_struct;

comp_internal_ram_stack相對速度要快,但是數量有限,一般自己建立的任務不要去使用,容易引起問題。

typedef struct

comptask_handler_struct;

task的入口函式是必須的,這個函式告訴系統,初始化完相應的task控制塊後,就要進入該函式來執行。

task的初始化函式是在進入task入口函式之前被呼叫,用來初始化可能需要的資源,可選。task終止函式是,當task結束是要呼叫,用來釋放資源,可選。

二、任務的建立過程

有了上面的基礎知識,再建立mtk的任務時,理解起來就容易多了,建立任務主要分為以下的幾個

步驟:第一步:增加乙個task index到custom_config.h中的列舉型別custom_task_indx_type中。

第二步:增加乙個mode index到custom_config.h中的列舉型別custom_module_type中。

第三步:把mod和task進行關聯,因為乙個task可以對應多個mod,所以需要將mod掛載到

task上,掛載的方法是在custom_config.c中的

custom_mod_task_g[ max_custom_mods ]陣列中新增剛剛在第一步中所增加

的那個task index,這樣就能夠通過mode index索引到相應的task index,也就建

立了二者的對應關係。

第四步:新增task基本資訊到custom_config.c中的custom_comp_config_tbl中。

第五步:上面的各種資料資訊裝填完畢之後,接下來就開始編寫自己的任務的實現的函式。

三、任務建立的舉例說明

如果我們想建立乙個任務名稱為fd_test4 ,優先順序為219,堆疊大小為4096 byte的任務,採用

如下的方法來建立這個任務:

第一步:新增task index

typedef enum

custom_task_indx_type;

第二步:新增mod index

typedef enum

custom_module_type;

第三步:將mod掛載到task上

custom_task_indx_type custom_mod_task_g[ max_custom_mods ] =

;第四步:裝填建立人物的資料結構

const comptask_info_struct custom_comp_config_tbl[ max_custom_tasks ] =,,

// 此處新增task任務的資料結構資訊

};第五步:編寫任務的建立函式fd_test4_create

kal_bool fd_test4_create(comptask_handler_struct **handle)

;*handle = (comptask_handler_struct *)&custom_handler_info;

return kal_true;

}注意此函式的返回值,入口函式是固定的,因為這個函式是在任務建立時由系統自動

呼叫的,而我們想要實現的功能,則在函式fd_test4_fun中實現。

四、結束

上面就是mtk任務的建立過程,我也是剛開始接觸這個平台,還有很多不懂的地方,如果有說的

不對的地方,希望大家能夠指出來,一起進步。

MTK平台學習 TASK的建立

分類 mtk平台 mtk平台是非常優秀的乙個平台,曾經的山寨機之父,下面我將介紹下在mtk平台下如何去建立自己的任務。一 基礎知識 在學習如何建立任務之前,我們需要了解一些基本概念,以及一些和任務相關的資料結構,了解了這些之後,我們就能更好的理解如何去建立任務了。mtk中關於任務的概念有兩個,乙個是...

pip在不同平台下的安裝

pip類似redhat裡面的yum,安裝python包非常方便。本節詳細介紹pip的安裝 以及使用方法。要先安裝python和easy install,這樣安裝其他軟體就方便了很多。windows下安裝 python的指令碼路徑放入了path中 1 用easy install安裝pip。在cmd中輸...

easy install在不同平台下的安裝

為什麼要裝easy install?python setup.py install 來進行安裝。這樣是不是很繁瑣呢?如果我們直接命令列執行 easy install twisted 就把最新版的twisted包裝上去了,是不是很爽呢?所以easy install就是為了我們安裝第三方擴充套件包更容易...