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.

[参考译文] CC2652R7:移植到 TI-Matter 锁定应用后在 tirtos7上有效的传感器控制器文件不再有效。

Guru**** 2463330 points
Other Parts Discussed in Thread: SYSBIOS

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1219484/cc2652r7-sensor-controller-files-that-work-on-tirtos7-when-ported-to-ti-matter-lock-app-no-longer-work

器件型号:CC2652R7
Thread:SYSBIOS 中讨论的其他器件

摘要:
我们现在有一个 TI-Matter 锁定应用、它通过集成的传感器控制器文件构建。 但是、在系统引导期间、与传感器控制器相关的初始化调用会锁定系统。 我们的直觉是、它似乎与就绪和事件中断相关、并且几乎让人感觉出一连串的不间断中断正在消耗系统带宽。

我注意到、在我们的工作 tirtos7系统中、*。syscfg 文件会生成具有以下逻辑的 ti_sysBIOS_config.c 文件:

void Startup_exec()

   /*启动时的第一个功能*/
   Hwi_initNVIC ();
   Hwi_initStack();
   BIOS_init();
   TI_SysBIOS_family_arm_cc26xx_TimestampProvider_init ();

   /*模块初始化函数*/
   system_init();
   Clock_init();
   Swi_init();
   task_init();
   IDLE_INIT();
   Hwi_init();

   STARTUP_DONE = true;
}

…μ A 然而、TI-Matter chip.syscfg 的处理似乎不会生成类似的例程。 特别是,我们还想知道是否有 hwiP_init*()计数器部件需要添加某个位置来替换上面所示的 Hwi_init*()调用? 下面是我们问题的详细信息。

详细信息#1.
我们有以下在基于 tirtos7的系统中工作的文件集合:

scif.c          
scif.h          
scif_framework.h
scif_framework.c
scif_osal_tirtos.h
scif_osal_tirtos.c

我们有兴趣收集这个实用资料、并将其集成到 TI-Matter 锁定应用中。 在此过程中、我们了解到、在将 scif_osal_tirtos.c 引入 TI-Matter 锁定应用程序时需要手动修改。 具体而言、我们通过如下方式手动过渡了它对功能的依赖:

#include
#include semaphore.h

…改为与此文档所描述的功能相似的功能:

#include "freertos.h"
#include "semphr.h"
#include

详情#2:
启动锁定出现在启动传感器控制器的 MCU 代码块中。 这与我们在 tirtos7系统中成功使用的块相同:

静态空设置 SensorController ()

   scifOsalRegisterCtrlReadyCallback (scCtrlReadyCallback);
   scifOsalRegisterTaskAlertCallback (scTaskAlertCallback);
   scifInit (&scifDriverSetup);  <——不幸的是,此调用从不返回,不知道为什么????
   …μ A
   
   …μ A
   scifStartTasksNbl (BV (SCIF_ADC_DATA_logger_task_ID));
}

详细信息#3:
当我们查看 scifInit ()的内部实现时,即永远不会返回的调用 这是一个由传感器控制器开发工具自动生成的代码块、通过实验、我们注意到、在该例程中注释掉两行会允许 TI-Matter Lock-app 启动(尽管传感器控制器工作不正常)。 以下是我们添加了注释的两行(搜索"TODO"):

文件: scif_framework.c
例程:
SCIF_RESULT_T scifInit (const SCIF_DATA_T* pScifDriverSetup){

   //执行完整性检查:传感器控制器不能已处于活动状态
   如果(HWREG (AUX_SCE_BASE + AUX_SCE_O_CTL)& AUX_SCE_CTL_CLK_EN_M){
       返回 SCIF_ILLEGAL_OPERATION;
   }

   //复制驱动程序设置
   memcpy (&scifData、pScifDriverSetup、sizeof (SCIF_DATA_T));

   //重置唤醒事件源和标志,并设置传感器控制器矢量表
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_WUGATE)= 0;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_PROGWU0CFG)= 0x0000;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_PROGWU1CFG)= 0x0000;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_PROGWU2CFG)= 0x0000;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_PROGWU3CFG)= 0x0000;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_WUFLAGSCLR)= 0x00FF;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_WUFLAGSCLR)= 0x0000;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG0)= AUX_SYSIF_VECCFG0_VEC_EV_SW_WU0;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG1)= AUX_SYSIF_VECCFG5_VEC_EV_SW_WU1;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG2)= AUX_SYSIF_VECCFG1_VEC_EV_PROG_WU0;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG3)= AUX_SYSIF_VECCFG2_VEC_EV_PROG_WU1;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG4)= AUX_SYSIF_VECCFG3_VEC_EV_PROG_WU2;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG5)= AUX_SYSIF_VECCFG4_VEC_EV_PROG_WU3;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG6)= AUX_SYSIF_VECCFG6_VEC_EV_SW_WU2;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_VECCFG7)= AUX_SYSIF_VECCFG7G_VEC_EV_NONE;
   HWREG (AUX_SYSIF_BASE + AUX_SYSIF_O_WUGATE)= 1;

   //上传 AUX RAM 映像
   memcpy ((void*) AUX_RAM_BASE、scifData.pAuxRamImage、scifData.auxRamImageSize);

   //选择 SW_WU0作为复位矢量
   HWREG (AUX_SCE_BASE + AUX_SCE_O_CTL)= 0 << AUX_SCE_CTL_RESET_VECTOR_S;

   //执行驱动程序设置特定的初始化
   scifData.fptrDriverSetupInit();

   //设置就绪事件(到 MCU 域)
   HWREG (AUX_EVCTL_BASE + AUX_EVCTL_O_SWEVSET)= AUX_EVCTL_SWEVSET_SWEV0_M;

   //系统 CPU 将在出现警报事件时唤醒
   scifSetMcuwusel (OSAL_task_alert_MCUWUSEL_WU_EV_INDEX、AON_EVENT_MCUWUSEL_WU0_EV_AUX_SWEV1);

   //启动传感器控制器
   HWREG (AUX_SCE_BASE + AUX_SCE_O_CTL)|= AUX_SCE_CTL_CLK_EN_M;

   //寄存器,清除并启用中断
   osalRegisterCtrlReadyInt();
   osalClearCtrlReadyInt();
#if 0 /* TODO:0 ==临时实验以允许完全启动。 */
   osalEnableCtrlReadyInt();
#endif
   osalRegisterTaskAlertInt();
   osalClearTaskAlertInt();
#if 0 /* TODO:0 ==临时实验以允许完全启动。 */
   scifOsalEnableTaskAlertInt();
#endif

   返回 SCIF_SUCCESS;

}// scifInit

摘要:
我们感觉在开发修改后的 TI-Matter 锁定应用程序的尝试中陷入了僵局。 我们所做的与 MCU 工作相关的一切都很好、剩下的最后一件事就是使系统的传感器控制器部分正常工作。 同样、我们让它都在 tirtos7系统中工作。 有什么建议吗?

提前感谢!
Steve K.

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

    Steve、您好!

    老实说、这是一个未经探讨的用例、因为我不知道有任何开发人员使用过 SCS 和 FreeRTOS。  我知道、鉴于 Matter 仅支持 FreeRTOS、需要对此进行进一步调查。  

     您似乎在尝试修改 SCS TI-RTOS OSAL 源文件、以便为 Matter FreeRTOS 环境进行补偿。 请注意、您可以在 SCS 中选择 TI 驱动程序移植层(DPL)、而不是从 SCS GUI 的主项目窗口中选择 TI-RTOS:

      

    我建议您尝试该方法以确定它是否更适合 Matter 项目。

    此致、
    Ryan

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

    感谢 Ryan、感谢您及时回复。 您的建议成功了。 我们现在推出了修改后的 TI-Matter Lock-app、该 app 已经过扩展、包括额外的 MCU app 逻辑以及在传感器控制器(SC)上运行的特殊代码、以便将事件/数据正确传送到 MCU。 我确实注意到了一些关于可用 RAM 空间的问题、但我会将这些问题作为单独的帖子提交。

    再次感谢您!