TI E2E™ 英文论坛海量技术问答的中文版全新上线,可点击相关论坛查看,或在站内搜索 “参考译文” 获取。

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.

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)

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