虽然MTK手机,是feature phone(功能机),不像symbian 6 那样可以同时运行多个应用。但是MTK还是 有许多task组成。平时MTK的后台播放MP3就是一由一个task 完成的。具体以后分析。现在来看看MTK 最主要的task,MMI task,MTK 的应用程序都是在该task里面运行,它有一整套开发MTK 应用的framework。
先来看创建MMI task的函数
kal_bool mmi_create(comptask_handler_struct **handle) { /*----------------------------------------------------------------*/ /* Local Variables */ /*----------------------------------------------------------------*/ static comptask_handler_struct mmi_handler_info = { MMI_task, /* task entry function */ MMI_Init, /* task initialization function */ NULL, NULL, /* task reset handler */ NULL, /* task termination handler */ }; /*----------------------------------------------------------------*/ /* Code Body */ /*----------------------------------------------------------------*/ *handle = &mmi_handler_info; return KAL_TRUE; }这个函数的结构,是MTK 创建task的基本结构,系统初始化时,会调用该函数。看里面的结构体
typedef struct { kal_task_func_ptr comp_entry_func; //task 的入口函数 task_init_func_ptr comp_init_func; //task 的初始化函数 task_cfg_func_ptr comp_cfg_func; //task 的配置函数 task_reset_func_ptr comp_reset_func; //task 的重置函数 task_end_func_ptr comp_end_func; //task 的终止函数 } comptask_handler_struct;task 的入口函数是必须的,这个函数告诉系统,初始化完相应的task 控制块后,就要进入该函数来运行。
task 初始化函数,是在进入 task 入口函数之前被调用,用来初始化可能需要的资源,可选。
task 终止函数是,当task 结束是要调用,用来释放资源,可选。
其他两个函数我也不清楚干什么,希望知道的共享下
先看MMI task 的初始化函数.
MMI_BOOL MMI_Init(task_indx_type task_indx) { //创建一个mutex(互斥体) mmi_mutex_trace = kal_create_mutex("mmi_trace"); //这个是初始化 2step 按键, 2step 按键是指 有一些按键具有半按下状态 //比如照相功能,按下一半进行聚焦,再按下一半拍照 mmi_frm_get_2step_keys(); //初始化timer,具体可以看
MTK task 小结 2
最新推荐文章于 2016-08-15 15:33:50 发布