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.

[参考译文] SIMPLELINK-CC13X2-26X2-SDK:使用 SimpleLink 6.30.00.84读取属性时因 software_failure 而失败

Guru**** 2465890 points
Other Parts Discussed in Thread: SIMPLELINK-CC13XX-CC26XX-SDK

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1166669/simplelink-cc13x2-26x2-sdk-reading-attributes-with-simplelink-6-30-00-84-fails-with-software_failure

器件型号:SIMPLELINK-CC13X2-26X2-SDK
主题中讨论的其他器件:SIMPLELINK-CC13XX-CC26XX-SDK

我正在尝试将路由器固件从6.20升级到 6.30.00.84、但似乎属性读数损坏。

问题很容易重现:

-从 (SIMPLELINK-CC13XX-CC26XX-SDK_6_30_00_84)在 ZR_genericapp_CC26X2R1_LAUNCHXL_tirtos7_ticlang 项目中加载

-在 CC2652R1 Launchpad 上构建并刷写 FW

-对群集基本端点8的 zclVersion 属性进行配对和读取

-路由器在读取响应(0xc1)中返回一个 software_failure 错误

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

    尊敬的 Koen:

    您可以查看对 zcl.c 所做的更改、该更改会影响您描述的行为。

    //V6.30
        //Validate the attribute is found and the access control
        if ( ( attrFound == TRUE ) &&
             (  (attrRec.attr.accessControl & ACCESS_GLOBAL) ||
                (GET_BIT( &attrRec.attr.accessControl, ACCESS_CONTROL_MASK ) == pInMsg->hdr.fc.direction ) ) )
        {
          if ( zcl_AccessCtrlRead( attrRec.attr.accessControl ) )
          {
            if ( zcl_AccessCtrlAuthRead( attrRec.attr.accessControl ))
            {
              statusRec->status = zclAuthorizeRead( pInMsg->msg->endPoint,
                                                            &(pInMsg->msg->srcAddr), &attrRec );
            }
            else
            {
              statusRec->status = zclReadAttrDataUsingCB( pInMsg->msg->endPoint, attrRec.clusterID, attrRec.attr.attrId, attrRec.attr.dataPtr, &len );
            }
    

    //V6.20
        //Validate the attribute is found and the access control
        if ( ( attrFound == TRUE ) &&
             (  (attrRec.attr.accessControl & ACCESS_GLOBAL) ||
                (GET_BIT( &attrRec.attr.accessControl, ACCESS_CONTROL_MASK ) == pInMsg->hdr.fc.direction ) ) )
        {
          if ( zcl_AccessCtrlRead( attrRec.attr.accessControl ) )
          {
            statusRec->status = zclAuthorizeRead( pInMsg->msg->endPoint,
                                                  &(pInMsg->msg->srcAddr), &attrRec );
    

     除了给定的 ZCL_STATUS_SOFTWARE_FAILURE 状态(由于未注册 pfnReadWriteCB 且 ACCESS_CONTRAL_AUTH_READ 未设置)之外、返回数据包是否与之前相同?  您可以选择恢复更改或将 zclReadAttrDataUsingCB 的返回状态更改为 ZCL_STATUS_SUCCESS、以解决观察到的行为。

    此致、
    Ryan

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

    谢谢、我没有意识到这一变化。 我通过更改属性访问控制来解决它。 例如 、ACCESS_CONTRAL_READ 至 (ACCESS_CONTRAL_READ | ACCESS_CONTRAL_AUTH_READ)。

    关于这个新版本的另一个问题;我看到、由于切换到 TI-RTOS7、 HEAPMGR_SIZE 选项消失了。  我们之前在 https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1052120/cc2652r-mac-no-resources-0x1a-errors-complete-crash-with-simplelink-cc13xx-cc26xx-sdk_5-30-00-56/3897554#3897554中对此进行了讨论 

    使用默认的 syscfg -> TI RTOS -> BIOS ->默认堆设置->默认存储器堆类型 设置为 HeapCallback 时、堆是否再次动态分配? (如5.20之前)。 我已咨询 https://software-dl.ti.com/simplelink/esd/simplelink_cc13xx_cc26xx_sdk/6.30.00.84/exports/docs/zigbee/html/memory/memory_management.html#dynamic-memory-allocation 、但找不到有关"HeapCallback"的明确答案。

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

    您可以查看 Project Properties -> CCS Build -> Arm Compiler 中的 Predefined Symbols 来找到 HEAPMGR_CONFIG=0x80
    HEAPMGR_SIZE=0x00、osal_port.c 表示将引用 rtos_heaposal.h、如果  定义了(HEAPMGR_SIZE)&&(HEAPMGR_SIZE = 0)、则会设置 AUTOHEAPSIZE。  您可以 在此处找到有关 TI-RTOS7内核的更多文档。

    此致、
    Ryan

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

    感谢您的快速响应!