This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RTOS/CC2640R2F:如果要添加自定义任务、我是否应增大 ICALL_MAX_NUM_TASks 的值

Guru**** 2577385 points
Other Parts Discussed in Thread: BLE-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/590780/rtos-cc2640r2f-shall-i-increase-the-value-of-icall_max_num_tasks-if-i-want-to-add-my-custom-task

器件型号:CC2640R2F
Thread 中讨论的其他器件:BLE-STACK

工具/软件:TI-RTOS

你(们)好,先生

我的项目基于 simplelink_cc2640r2_sdk_1_30_00_25中的示例 multi_role。

此示例包含3个任务:stack、 GAP_Role、MULTI_Role、 ICALL_MAX_NUM_TESS 的值为3、该值在命令行中定义。

现在,如果我将应用程序任务添加到项目中, 如果应用程序任务不使用与 iCall 相关的 API,是否应将 ICALL_MAX_NUM_TASks 的值增加到4?

我在 http://processors.wiki.ti.com/index.php/Adding_Custom_RTOS_Task 上找到了文档 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很抱歉、我的资源管理器出现问题、找不到任何条目来编辑我的帖子。 或者、有人可以告诉我在哪里编辑我的帖子?

    让我们继续...
    您知道、我在 processors.wiki.ti.com/.../Adding_Custom_RTOS_Task 上找到了 doc 文件、其内容为"ICALL_MAX_NUM_TASks 定义了将向 iCall 注册的任务数"。

    我今天进行了几次测试、发现即使我的应用任务根本不会调用 iCall_xxx、我仍然需要将 ICALL_MAX_NUM_TASks 的值增加到4。 否则、我的应用程序任务不会由 RTOS 重新启动。

    是否有人可以帮助我确认此结果?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    如果您未使用 iCall、则不必增加 ICALL_MAX_NUM_TASks 的值。 请参阅 蓝牙低功耗+传感器 BoosterPack SimpleLink Academy 模块 、了解向 BLE 项目添加非 ICall 任务的步骤。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    奇怪的是、我的测试结果与您说的不同。 我必须增大 ICALL_MAX_NUM_TASks 的值才能运行我的任务...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您添加的任务中是否有使用 BLE-Stack 的内容、或者它是否是与温度传感器类似的独立任务? 以下是软件开发人员指南中 ICall 部分的链接、以了解详情: software-dl.ti.com/.../index.html
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    唯一的区别是我使用信标。  

    这是我的任务、非常简单

    静态 int task_init (struct task_struct *任务)

    返回0;

    静态 int task_MSG_POST (struct message *msg)

    struct message_queue * mq;
    struct mblue_semaphore *sem;

    MQ = ts->MQ;
    sem = ts->msg_sem;
    _assert (MQ && SEM);

    if (!(mq->add (mq、msg))){
    SEM->POST (SEM);

    返回0;
    `μ A

    void task_proc (UARg a0、UARg A1)

    bool ret;
    struct task_struct *任务;
    struct message *msg;
    struct mblue_semaphore * msg_sem;
    struct message_queue * mq;

    任务=(struct task_struct *) a0;
    _assert (任务&&任务->msg_sem &&任务->MQ);
    MSG_SEM =任务->MSG_SEM;
    MQ =任务->MQ;

    Task_init (task);
    while (1){
    RET = msg_sem->pend (msg_sem、Semaphore_pend_forever);
    如果(!ret){
    MSG =(结构消息*) MQ->remove(MQ);
    if (task->mproc){
    (task->mproc)(task、msg);



    我认为信标与 iCall 没有关系。 如果我不增加宏的值,则不会调用函数 task_init()。