找回密码
 注册
搜索
查看: 2149|回复: 16

[讨论] MT6260D 11B添加task问题

[复制链接]
发表于 2014-7-10 08:16:21 | 显示全部楼层 |阅读模式
各位大神,我用下面的方法添加task后,然后按照步骤6给自己定义的模块发送消息,为什么只要我发送消息就会导致死机,是什么原因啊。

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,&current_ilm);
stack_set_active_module_id( my_index, current_ilm.dest_mod_id );

jt_main((void*)&current_ilm);

free_ilm(&current_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);
 楼主| 发表于 2014-7-14 08:09:04 | 显示全部楼层
自己顶一下啊。
点评回复

使用道具 举报

 楼主| 发表于 2014-7-14 08:09:25 | 显示全部楼层
大神们看看啊,谢谢!
点评回复

使用道具 举报

发表于 2014-7-14 09:42:21 | 显示全部楼层
还在搞屌丝机呀,大神都转方向了。
点评回复

使用道具 举报

 楼主| 发表于 2014-7-18 18:05:44 | 显示全部楼层
帮我看看啊,谢谢。
点评回复

使用道具 举报

发表于 2014-7-28 15:22:11 | 显示全部楼层
task加在哪里了,要加在最后一个MOD_MTKTASKEND后面
点评回复

使用道具 举报

 楼主| 发表于 2014-8-13 13:56:25 | 显示全部楼层
erbaor 发表于 2014-7-28 15:22
task加在哪里了,要加在最后一个MOD_MTKTASKEND后面

程序是加在MOD_MTKTASKEND的后面啊。
点评回复

使用道具 举报

发表于 2014-8-14 11:31:05 | 显示全部楼层
jt_task_main 里面的那个循环没有出口 跑成死循环了 死循环导致死机
点评回复

使用道具 举报

 楼主| 发表于 2014-8-14 14:31:38 | 显示全部楼层
very 发表于 2014-8-14 11:31
jt_task_main 里面的那个循环没有出口 跑成死循环了 死循环导致死机

谢谢。这个free_ilm(&current_ilm)是不是出口啊,如果不是那该怎样添加出口呢?非常感谢。
点评回复

使用道具 举报

发表于 2014-8-15 11:16:43 | 显示全部楼层
出口需要return
点评回复

使用道具 举报

 楼主| 发表于 2014-8-15 11:47:10 | 显示全部楼层

是这样的吗?谢谢。
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,&current_ilm);
stack_set_active_module_id( my_index, current_ilm.dest_mod_id );

jt_main((void*)&current_ilm);

free_ilm(&current_ilm);
return;
}
}
点评回复

使用道具 举报

发表于 2014-8-16 09:44:40 | 显示全部楼层
你这样加 循环等于没用
点评回复

使用道具 举报

 楼主| 发表于 2014-8-18 10:47:12 | 显示全部楼层
very 发表于 2014-8-16 09:44
你这样加 循环等于没用

那请问我该如何添加啊。非常感谢。
点评回复

使用道具 举报

 楼主| 发表于 2014-8-27 14:33:02 | 显示全部楼层
very 发表于 2014-8-16 09:44
你这样加 循环等于没用

请问一下大哥,我该如何添加退出函数啊,非常感谢,弄了很久还是没弄好。
点评回复

使用道具 举报

发表于 2014-10-13 19:18:42 | 显示全部楼层
为什么我在 app_task_config.h中添加一个task , 函数入口都一样,一编译就出错呢
点评回复

使用道具 举报

发表于 2014-10-30 00:41:57 | 显示全部楼层
暂时还没看明白,以后再看留爪
点评回复

使用道具 举报

发表于 2014-11-8 19:49:33 | 显示全部楼层
没看明白……
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-11 09:54 , Processed in 0.048903 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表