[转]MTK6252 11B添加模块、task实例
原网址 http://blog.sina.com.cn/s/blog_6b2328a201014l26.html
###############模块的添加##################
1.添加新模块文件
code\jt
jt文件夹
jt\src\main.c
jt\inc\main.h
2.option.mak中
COMPLIST += jt
CUS_REL_SRC_COMP += jt
3.make文件中添加
make\jt\jt.mak
# Define source file lists to SRC_LIST
SRC_LIST = jt\src\main.c
# Define include path lists to INC_DIR
INC_DIR = jt\inc
# Define the specified compile options to COMP_DEFS
COMP_DEFS =
# Define the source file search paths to SRC_PATH
SRC_PATH = jt\src
##################### task添加 ##################################
1.app_task_config.h
task_index(INDX_JT)
task_module_map(INDX_JT, MOD_JT)
task_name("JT")
task_queue_name("JT Q")
task_priority(TASK_PRIORITY_MMI + 1)
task_stack_size(4096)
task_create_function(jt_task_create)
task_stack_internalRAM(KAL_FALSE)
task_external_queue_size(50)
task_internal_queue_size(0)
task_boot_mode(NORMAL_M)
2.user_msgid_app.h定义消息范围
#ifdef KAL_MSGID_EXPANSION
#if !defined(__L1_STANDALONE__)
#include "jt_sap.h"
#endif
MSG_ID_NAME(JT)
#else
MSG_ID_RANGE(JT, 1000)
#endif
// #define MSG_ID_RANGE(MSGNAME, MSGRANGE) \
// MSG_ID_##MSGNAME##_CODE_BEGIN, \
// MSG_ID_##MSGNAME##_CODE_TAIL = MSG_ID_##MSGNAME##_CODE_BEGIN +
MSGRANGE,
3.interface\jt\jt_sap.h 定义消息
MSG_ID_JT_STARTUP_REQ = MSG_ID_JT_CODE_BEGIN,
4.option.mak把消息定义头文件加入到公共的
COMMINCDIRS += interface\jt
5.main.c的实现
#include "main.h"
#include "syscomp_config.h"
#include "task_config.h"
static void jt_task_main(task_entry_struct * task_entry_ptr);
kal_bool jt_task_create(comptask_handler_struct **handle)
{
static const comptask_handler_struct my_handler_info =
{
jt_task_main,
NULL,
NULL,
NULL,
NULL,
};
*handle = (comptask_handler_struct
*)&my_handler_info;
return KAL_TRUE;
}
void jt_main(ilm_struct *ilm_ptr)
{
if (ilm_ptr->msg_id == MSG_ID_JT_STARTUP_REQ)
{
//消息处理
}
}
static void jt_task_main(task_entry_struct * task_entry_ptr)
{
kal_uint32 my_index;
ilm_struct current_ilm;
kal_get_my_task_index(&my_index);
while (1)
{
receive_msg_ext_q(task_info_g[task_entry_ptr->task_indx].task_ext_qid,¤t_ilm);
stack_set_active_module_id( my_index, current_ilm.dest_mod_id
);
jt_main((void*)¤t_ilm);
free_ilm(¤t_ilm);
}
}
6.发送消息给自己创建的task
ilm_struct *ilm_ptr = NULL;
ilm_ptr = ilm_ptr = allocate_ilm(MOD_MMI);
ilm_ptr->msg_id = (msg_type)
MSG_ID_JT_STARTUP_REQ;
ilm_ptr->local_para_ptr =
NULL;//(local_para_struct*) local_data;
ilm_ptr->peer_buff_ptr = NULL;
SEND_ILM(MOD_MMI, MOD_JT, MMI_L4C_SAP, ilm_ptr);[
[转]MTK6252 11B添加模块、task实例的更多相关文章
- Linux下Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
- Maven--多模块依赖实例解析(五)
<Maven--搭建开发环境(一)> <Maven--构建企业级仓库(二)> <Maven—几个需要补充的问题(三)> <Maven—生命周期和插件(四)&g ...
- Linux下,Nginx的安装、升级及动态添加模块
系统基于ubuntu server 14.04.4 amd64 安装 第一步 下载并解压Nginx压缩包 从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.or ...
- Ansible运维自动化工具19个常用模块使用实例【转】
一.模块列表 1.setup 2.ping 3.file 4.copy 5.command 6.shell 7.script 8.cron 9.yum 10.service 11.group 12.u ...
- Android单片机与蓝牙模块通信实例代码
Android单片机与蓝牙模块通信实例代码 参考路径:http://www.jb51.net/article/83349.htm 啦啦毕业了,毕业前要写毕业设计,需要写一个简单的蓝牙APP进行交互,通 ...
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- centos 7下nginx搭建流媒体服务器【动态添加模块】
1.安装nginx依赖包 yum install gcc gcc-c++ openssl-devel zlib-devel pcre pcre-devel yamdi 2.下载解压nginx_mod_ ...
- Python添加模块路径
1.用函数临时添加 1 import sys #导入sys模块 2 3 4 sys.path.append(r'/tmp/test') #要用绝对路径 5 print(sys.path) #查看模块路 ...
- 基于NCF的多模块协同实例
简介 这次给大家带来的内容是基于NCF的多模块协同实例 主要讲解的内容是NCF的模块Xncf之间相互调用,相互协作的能力 这里可以把Xncf比作乐高玩具,一个Xncf就是你拥有的乐高玩具的类型,比如你 ...
随机推荐
- [Ms SQL] 基本創建、修改與刪除
##創建 table student, 內涵 id ,name ,tel三種columne,設定id為primary key create table student ( id int primary ...
- Qt creator使用笔记
设置头文件的搜索路径编辑项目文件 xxx.pro INCLUDEPATH = /src/doip \ /src/doip/utils \ /src/doip/pduR \ /src/doip/uds1 ...
- adb截图机顶盒
操作命令如下 1.adb connect 192.168.1.14(连接电视) 2.adb shell /system/bin/screencap -p /data/1.png(截图并命名并存储) 3 ...
- Java高级特性 第9节 Socket机制
一.Socket简介 1.Socket概述 Java最初是作为网络编程语言出现的,它对网络的高度支持,使得客户端和服务器流畅的沟通变成现实.而在网络编程中,使用最多的就是Socket,每一个实用的网络 ...
- 18.22 sprintf函数功能
函数功能:把格式化的数据写入某个字符串 函数原型:int sprintf( char *buffer, const char *format [, argument] … ); 返回值:字符串长度(s ...
- 17.3 删除没用的project
1.删除某一个或多个无用的project(历史project) 用十六进制编辑器打开"C:\Users\Baymax\Documents\Source Insight 4.0\Project ...
- Java使用算数运算符实现两个整数互换
有很简单的方法可以实现,不过还是用一步一个脚印的方法来试试 首先分析一下流程 这里有两个变量. int a = 10,b = 40; //此时 a 为10,b 为40 然后我们开始走路,在不依靠第三者 ...
- 开始转变方向,学习Linux——《Linux就该这么学》
三十而立,四十不惑. 我呢,未立将不惑. 苦恼之余,决定拓展就业范围,正式学习Linux,准备考取RHCE证书. 考证需要报名培训机构,这是一个明智的选择,毕竟中国人善于考试,善于钻研考试. 联系培训 ...
- webpack打包vue -->简易讲解
### 1. 测试环境: 推荐这篇文章:讲的很细致 https://www.cnblogs.com/lhweb15/p/5660609.html 1. webpack.config.js自行安装 { ...
- CentOS 7.x 如何关闭 numa
CentOS7.x中发现 numactl --interleave=all 执行失败. CentOS7.x中可以通过下面的方式关闭 numa: 1. 编辑 /etc/default/grub 文件,如 ...