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.

[参考译文] CCS/CC2642R:UDMACC26XX.h 有问题

Guru**** 3003130 points

Other Parts Discussed in Thread: CC2642R, CC2650

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/921895/ccs-cc2642r-problem-with-udmacc26xx-h

器件型号:CC2642R
Thread 中讨论的其他器件: CC2650

工具/软件:Code Composer Studio

您好!

我将使用"TI-RTOS for CC13XX and CC26XX 2.20.1.08"从 MCU CC2650迁移到具有"SDK simplelink_cc13x2_26x2_SDK_4_20_00_35"的新 MCU CC2642R。 编译时、出现错误"#145不能使用类型"const void *"的值来初始化类型为"const UDMACC26XX_HWAttrs *"的实体。 该文件是从控制台附加的 tex。 如何解决?



此致、eGor。

e2e.ti.com/.../68430.console.txt

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

    少量添加、

    文件"UDMACC26XX.h"中出现错误。

    这就是 SDK simplelink_cc13x2_26x2_SDK_4_20_00_35中"UDMACC26XX.h"文件中的问题所在:

    _static_inline void UDMACC26XX_channelDisable (UDMACC26XX_Handle handle、UINT32_t channelBitMask)
    {
    UDMACC26XX_HWAttrs const *hwAttrs = handle->hwAttrs;
    
    HWREG (hwAttrs->baseAddr + UDMA_O_CLEARCHANNELEN)=通道位掩码;
    } 

    这与旧 SDK "TI-RTOS for CC13XX and CC26XX 2.20.1.08"中的函数相同:

    _static_inline void UDMACC26XX_channelDisable (UDMACC26XX_Handle handle、UINT32_t channelBitMask)
    {
    UDMACC26XX_HWAttrs const *hwAttrs;
    
    /*获取指向 hwAttrs 和对象的指针*/hwAttrs
    =(UDMACC26XX_HWAttrs const *) handle->hwAttrs;
    
    /*禁用 DMA 通道*/
    uDMAChannelDisable (hwAttrs->baseAddr、通道位掩码);
    } 

    我看到在新版本中没有显式类型转换。

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

    我假设这是由于您是如何从旧的 TI-RTOS 版本迁移到不同芯片系列上的新 SDK 的。  

    您必须遵循现有的所有移植指南、包括从 SDK 版本到版本的移植指南、以及如果您使用 BLE 或从新项目开始、如何从 CC26x0移植到 CC26x2。 后者可能会导致更少的麻烦。 如果您导入看起来最接近所需内容的新 SDK 示例、然后逐步添加应用代码(更易于调试)  

    大多数驱动程序已修复错误、在某些情况下、从 TI-RTOS 2.21发布到最新 SDK 时重新编写、因此预计会更改驱动程序代码。   

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

    您好、之三

    我们尝试遵循所有迁移准则。 其中、我们使用您描述的方法:

    之三
    您必须遵循现有的所有移植指南、包括从 SDK 版本到版本的移植指南、以及如果您使用 BLE 或从新项目开始、如何从 CC26x0移植到 CC26x2。 后者可能会导致更少的麻烦。 如果您导入看起来最接近所需内容的新 SDK 示例、然后逐步添加应用代码(更易于调试)


    然而、尽管如此、UDMA 仍然存在问题。 为什么在 UDMACC26XX_Config 结构中指向硬件属性的 UDMACC26XX.h 文件中、类型为 void const:

    typedef 结构{
    无效 *对象; /*!<指向 UDMACC26XX 对象的指针*/
    空常量 *hwAttrs; /*!<指向硬件属性的指针*/
    }UDMACC26XX_Config; 

    ?

    在 UDMACC26XX_channelDisable 函数中、该指针被分配给数据类型为 UDMACC26XX_HWAttrs const 的指针:

    UDMACC26XX_HWAttrs const *hwAttrs = handle->hwAttrs; 


    同时、在 UDMACC26XX_channelEnable 函数中执行显式类型转换:

    _static_inline void UDMACC26XX_channelEnable (UDMACC26XX_Handle handle、UINT32_t channelBitMask)
    {
    UDMACC26XX_HWAttrs const *hwAttrs;
    
    /*获取指向 hwAttrs 的指针*/
    hwAttrs =(UDMACC26XX_HWAttrs *)(handle->hwAttrs);
    
    /*启用 DMA 通道*/
    HWREG (hwAttrs->baseAddr + UDMA_O_SETCHANNELEN)=通道位掩码;
    } 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是一种我可以复制您所看到的内容的简单方法吗?  

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

    我们从 simplelink cc13x2 26x2 SDK_4_20_00_35导入了项目 simple peripheral。 初始化的驱动程序 I2S、SPI、UART。 我们在单独的任务中初始化驱动程序。  显然、驱动程序调用函数 UDMACC26XX_channelDisable 会发生、并且会出现上述问题。

    我们知道、编辑库函数会带来未来无法预测的代码行为的风险。 但是、我们自己面临风险和风险、在函数 UDMACC26XX_channelDisable 内添加了显式类型转换。 之后、错误"#145 A value of type "const void *"不能用于初始化类型为"const UDMACC26XX_HWAttrs *"的实体。

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

    您是否能够就如何对该错误消息进行分类编写更详细的分步说明? 我想确保我们尝试与您完全相同、看看您是否执行了不打算执行的操作、或者它是否是某个地方的错误。  

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

    我的项目已附加到存档中。 该项目基于 SDK simplelink_cc13x2_26x2_SDK_4_20_00_35的简单外设。

    构建项目。

    您将遇到错误"#145 a value of type" const void *"不能用于初始化类型的实体" const UDMACC26XX_HWAttrs *"。

    之后、转到文件 UDMACC26XX.h 在此文件中、在 static_inline void UDMACC26XX_channelDisable 函数内进行替换。

    而不是:

    UDMACC26XX_HWAttrs const * hwAttrs = handle->hwAttrs; 

    写入:

    UDMACC26XX_HWAttrs const * hwAttrs;
    hwAttrs =(UDMACC26XX_HWAttrs const *) handle->hwAttrs; 

    重建项目。 现在应该在没有错误的情况下构建项目。

    e2e.ti.com/.../Pribor_5F00_9000.zip

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

    您好、Egor、

    感谢您告知我们此问题、我已注意到 DMA 函数之间的不一致性、并已提醒软件开发部门解决此问题。  您建议的变通办法是推荐的解决方案。  如果您在应用中发现任何错误行为、请告知我们。

    此致、
    Ryan

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

    您好、Ryan、

    我在另一个项目中遇到了一个问题。 以下是我的问题 https://e2e.ti.com/support/tools/ccs/f/81/t/925523的链接。

    此致、
    eGor 和 Maxim