TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F: 多任务的创建

Part Number:CC2640R2F

你好,我想问一下多任务的创建中遇到了一些问题

在APP程序ble5_simple_peripheral_cc2640r2lp_app_FlashROM_StackLibrary.opt设置的ICALL_MAX_NUM_ENTITIES=6   ICALL_MAX_NUM_TASKS=3,

1.ICALL_MAX_NUM_TASKS=3是stack任务,gap任务和用户自定义的任务,一共是三个,但ICALL_MAX_NUM_ENTITIES为什么是6?(3个任务客户端 和 1个icall服务端不应该是4吗?)

2.必须满足 OSAL_MAX_NUM_PROXY_TASKS +1  =ICALL_MAX_NUM_TASKS 吗?其中+1代表的是什么?我设定OSAL_MAX_NUM_PROXY_TASKS 为2,ICALL_MAX_NUM_TASKS 是4,程序还能运行,所以 请问OSAL_MAX_NUM_PROXY_TASKS +1  是<=ICALL_MAX_NUM_TASKS 的关系吗?

3.但是我在ble5_simple_peripheral_cc2640r2lp_app这个例子中,并没有看到向simple_peripheral_cc2640r2lp_app这样的3个任务的初始化,他只显式的给出了两个,请问这是为什么?

4.创建多任务时ICALL_MAX_NUM_ENTITIES、ICALL_MAX_NUM_TASKS、和OSAL_MAX_NUM_PROXY_TASKS都应该修改+1,但是如果我创建的任务的任务函数没有执行Event_pend,没有用到ICall_SyncHandle,或者调用SimplePeripheral_enqueueMsg,使用的是已经存在的ICall_SyncHandle,是不是不用+1?

Yolande Wang:

您好,

您先参照这个用户指南:https://dev.ti.com/tirex/content/simplelink_cc2640r2_sdk_2_40_00_32/docs/blestack/ble_user_guide/html/ble-stack-3.x/creating-a-custom-bluetooth-low-energy-application.html#creating-additional-icall-enabled-tasks

您的问题比较复杂,我将升级到E2E咨询一下更了解这个协议栈的工程师,请等候一下。

,

Yolande Wang:

我们将调查此事并尽快回复您。为了帮助我们更好地支持,请您帮我回答以下的问题:

您使用的是哪个版本的 SDK?

另外,您使用的完整部件号以及这是否是汽车级设备?

,

jiang chuanli:

您好 使用的是 simplelink_cc2640r2_sdk_4_20_00_04,不是汽车设备

,

Yolande Wang:

好的,已经跟进您的问题,有进展立即回复您。

,

Yolande Wang:

您好,

jiang chuanli 说:1.ICALL_MAX_NUM_TASKS=3是stack任务,gap任务和用户自定义的任务,一共是三个,但ICALL_MAX_NUM_ENTITIES为什么是6?(3个任务客户端 和 1个icall服务端不应该是4吗?)

ICALL_MAX_NUM_ENTITIES 保存使用 ICall 的最大实体数,包括服务实体和应用程序实体。您可能需要查看有关堆栈配置的文档以获取更多详细信息。https://software-dl.ti.com/simplelink/esd/simplelink_cc2640r2_sdk/5.30.00.03/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/stack-configuration-cc2640.html#stack-配置

jiang chuanli 说:2.必须满足 OSAL_MAX_NUM_PROXY_TASKS +1  =ICALL_MAX_NUM_TASKS 吗?其中+1代表的是什么?我设定OSAL_MAX_NUM_PROXY_TASKS 为2,ICALL_MAX_NUM_TASKS 是4,程序还能运行,所以 请问OSAL_MAX_NUM_PROXY_TASKS +1  是<=ICALL_MAX_NUM_TASKS 的关系吗?

主要要求是确保访问 ICall 的任务和实体的数量保持正确(即访问 ICall 的任务数量不超过预定义槽的数量)。 

将 ICALL_MAX_NUM_TASKS 设置为 4,您基本上定义了不会使用的其他插槽。因此该程序预计可以运行,但会浪费一些 RAM 内存。

jiang chuanli 说:3.但是我在ble5_simple_peripheral_cc2640r2lp_app这个例子中,并没有看到向simple_peripheral_cc2640r2lp_app这样的3个任务的初始化,他只显式的给出了两个,请问这是为什么?

我想这一点之前已经得到了回答 – 并非所有 ICall 实体都是任务。

jiang chuanli 说:4.创建多任务时ICALL_MAX_NUM_ENTITIES、ICALL_MAX_NUM_TASKS、和OSAL_MAX_NUM_PROXY_TASKS都应该修改+1,但是如果我创建的任务的任务函数没有执行Event_pend,没有用到ICall_SyncHandle,或者调用SimplePeripheral_enqueueMsg,使用的是已经存在的ICall_SyncHandle,是不是不用+1?

换句话说,如果任务访问 ICall 结构,则它应该启用 ICall,这意味着应该调用 ICall_registerApp(),并且 ICALL_MAX_NUM_ENTITIES、ICAALL_MAX_NUM_TASKS 和 OSAL_MAX_NUM_PROXY_TASKS 的值递增。正如您所指出的,某些 ICall API 可能“隐藏”在 SimplePeripheral API 中。

另外,可以点击此链接查看 E2E 的回复:https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1311681/cc2640r2f-some-issues-with-multitasking-creation/4987442#4987442

希望能够帮助到您。

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F: 多任务的创建
分享到: 更多 (0)