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

CC1310: 关于CC1310-SENSOR 例程中 OSALPort 应用程序 TI 15.4 STACK 通讯架构的问题。

Part Number:CC1310

各位专家大家好: 现在我正在分析 SENSOR 例程中,关于应用程序 OSALPort   TI 15.4 STACK  进行任务通讯的流程,通过分析源码和文档了解到。TI 创建了 OSALPort   架构用于和 TI 15.4 STACK 进行任务通讯。

以确保各任务间通过事件、信号量、队列进行进程间的同步和共享资源的使用。

查看源码分析:

_macTaskId = macTaskInit(macUser0Cfg); 创建MAC 任务。并向OsalPort_registerTask 注册MAC任务,信号量

*ApiMac_init(uint8_t macTaskIdParam, bool enableFH) 向OsalPort_registerTask  注册SENSOR应用任务

问题A: 以上是否就是向OsalPort 注册了两个任务同时为任务目标设置不同信号量,用于唤醒不同任务处理。

SENSOR 任务处理中是 通过  ApiMac_processIncoming(); 进行信号等待,Semaphore_pend(appSemHandle, BIOS_WAIT_FOREVER )  获取信号量后进行处理。

发送POLL 包具体分析:

Util_setEvent(&Jdllc_events, JDLLC_POLL_EVT);设置事件

/* Wake up the application thread when it waits for clock event */
Semaphore_post(sensorSem);唤醒SENSOR 任务,Jdllc_process 发送POLL 包,sendPollReq–> ApiMac_mlmePollReq(&pollReq); 发送完成后 ApiMac_processIncoming(); 等待信息响应唤醒。

问题2:在sendPollReq–> ApiMac_mlmePollReq(&pollReq) 后,应该是将此命令发送到OsalPort  模块并路由到TI 15.4 ,协议栈响应后由OsalPort 路由到 SENSOR 应用并唤醒处理。

我不清楚sendPollReq 后,是如何向OsalPort  发送信息并路由到TI 15.4 STACK. 跟踪源码没由找到ApiMac_mlmePollReq 的具体实现。我的理解sendPollReq  应该是设置POS MAC 任务 信号量,唤醒MAC TASK 进行处置。

MAC TASK 函数static void macTaskFxn(UArg a0, UArg a1)

请帮忙说明以上两个问题,谢谢。

 

Kevin Qiu1:

消息传递使用消息队列,线程同步用的是信号量

自由飞翔 说:问题A: 以上是否就是向OsalPort 注册了两个任务同时为任务目标设置不同信号量,用于唤醒不同任务处理。

是否看过https://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_4_10_01_01/docs/ti154stack/html/ti154stack/application-overview.html

它详细说明了OSAL框架的使用

问题2:MAC层不开源,因此看不到具体的实现过程,这个我需要再确认一下之后回复你

,

自由飞翔:

上面的文档已经看过。

在调用APIMAC 请求时,是如何传递到OsalPort  中的?是否由MAC TASK 任务函数处理 static void macTaskFxn(UArg a0, UArg a1),那么是如何通过APIMAC  唤醒MAC TASK 任务函数的,一定要进行MAC TASK  信号量的POST ,要不怎么能唤醒另一各任务。

,

Kevin Qiu1:

和上面的过程类似,上面的链接中General Application Architecture部分大致介绍了OSAL和应用层处理的过程

会通过内部事件变量发布信号量事件和回调函数找到正确的MAC API

赞(0)
未经允许不得转载:TI中文支持网 » CC1310: 关于CC1310-SENSOR 例程中 OSALPort 应用程序 TI 15.4 STACK 通讯架构的问题。
分享到: 更多 (0)