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.

[参考译文] AM2732-Q1:MSS_MIBSPIB 控制器工程在系统工程中无法正确运行

Guru**** 2805425 points

Other Parts Discussed in Thread: AM2732, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1622054/am2732-q1-mss_mibspib-controller-project-does-not-run-correctly-in-system-project

器件型号: AM2732-Q1
Thread 中讨论的其他器件: AM2732SysConfig

您好:

我在 AM2732 器件的 R5-0 处理器上实现了 MSS_MIBSPIB 控制器 FreeRTOS 工程。
我的代码正常运行、没有任何错误。 主代码如下所示:

void spi_master(void *args)
{
    int32_t             transferOK;

    Drivers_open();
    Board_driversOpen();

    transferOK = spi_enable_tx_interrupt(gMibspiHandle[SPI_TX]);
    if((SystemP_SUCCESS != transferOK))
    {
        DebugP_assert(FALSE); /* MIBSPI transfer failed!! */
    }

    while(1){;}

}

int32_t spi_enable_tx_interrupt(MIBSPI_Handle handle){

    static MIBSPI_Transaction  spiTransaction;
    static int32_t             status;

    uint16_t enable_tx_interrupt[5]= {0x1008, 0x44A1, 0x0000, 0x0000, 0x0001};

    CacheP_wbInv((void*)enable_tx_interrupt, sizeof(enable_tx_interrupt), CacheP_TYPE_ALLD);

    /* Initiate transfer */
    spiTransaction.count        = sizeof(enable_tx_interrupt);
    spiTransaction.txBuf        = (void *)enable_tx_interrupt;
    spiTransaction.rxBuf        = NULL;
    spiTransaction.peripheralIndex   = 0U;
    spiTransaction.arg          = NULL;

    status = MIBSPI_transfer(handle, &spiTransaction);

    return status;

}

syscfg 如下所示:
image.pngimage.png

当我尝试将完全相同的代码和 syscfg 选项传输到 FreeRTOS 系统工程到完全相同的 R5-0 处理器时、该工程无法正常运行。 确切地说、MIBSPI_transfe 函数失败。

在 MIBSPI_transfe 函数内部进行了大量调试后、我看到在 FreeRTOS 系统工程中似乎是 icount 选项 未启用 进行了改进 传感器 。 但这毫无意义、因为当 SPI 配置为控制器时没有 icount 选项、此外、我在这 2 个工程中手动输入 syscfg 中完全相同的配置。 与 icount 选项的这种差异导致驱动程序代码的不同部分运行、并最终导致故障。

为什么会发生这种情况?

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

    您好、

    此主题已分配给正确的专家。

    BR Vaibhav

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

    尊敬的 Dimitra:

    我在这里有点困惑。 系统工程只是多个 CCS 工程的容器、每个工程在不同的内核上运行。 因此、它没有自己的代码或 syscfg 文件。  

    System project main 用于 同时使用 R5 内核和 DSP 内核的多核应用。 它有助于检查资源冲突等。

    在您的用例中、如果您仅使用一个内核 R5F0_0、则使用系统工程没有好处。

    此致、

    Ming

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

    尊敬的 Ming:

    我还使用其余的处理器执行一些与该线程无关的其他操作。

    请关注我的主要问题、即独立 R5_0 工程的 SysConfig 中存在 iCountSupport、以及系统工程中不存在。 这看起来像是您工具中的一个错误。

    为什么会发生这种情况?

    此致、

    Dimitra

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

    iCount 仅用于 MIBSPI 的多缓冲器功能。 当您使用 MIBSPI 作为标准 SPI 时、它应该呈灰色显示。 让我查看 AM273x 的 syscfg 工具、并就此问题回复您。

    此致、  

    Ming

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

    尊敬的 Dimitra:

    AM273x 的 syscfg 工具仅为块模式(不用于回调模式)提供“Enable Multiple ICount Support“选项。 同样、它没有任何东西可执行系统工程。 它仅与特定内核(R5F 内核或 DSP 内核)的 CCS 工程关联的 syscfg 文件相关。

    此致、

    Ming

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

    尊敬的 Ming:

    我想你在这里遗漏了一点。 让我进一步向你阐述这一点、以便我们保持一致。

    在 CCS 20.4.0 中、我们导入 r5_0 空 FreeRTOS 工程。 在该独立工程的 example.syscfg 文件中、我们添加了 MIBSPI 的一个实例、并在回调模式下使用一些参数对其进行配置、如上面的屏幕截图所示。 图形界面中没有 iCount 选项。 但是、在后台、如果我们使用 CCS 内的内置文本编辑器打开.syscfg 文件、我们会看到 iCountSupport = true。

    当我们处于独立项目中时、一切都以我们想要的方式运行。

    现在、我们删除该 R5_0 独立工程、并 在 CCS 20.4.0 中导入系统 FreeRTOS 工程。 我们再次打开系统 FreeRTOS 工程的 R5_0 的 example.syscfg、并配置与独立工程中完全相同的设置。

    驱动程序现在无法正常工作。 如果我们现在使用 CCS 的内置文本编辑器编辑 example.syscfg 文件、我们不再看到这样一行: iCountSupport = true。 这很奇怪。

    总之、不留误解余地、当加载独立项目并在回调模式下添加和配置 MIBSPI 时、将生成 iCountSupport 并 在.syscfg 文件中设置为 true 如果我们 在系统项目内对完全相同的处理器和 MIBSPI 设置重复完全相同的过程、就会发生这种情况。

    此致、

    Konstantinos

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

    尊敬的 Konstantinos:

    我做了与 Dimitra 使用 AM273x FreeRTOS SDK 11.02.00.25 相同的操作、我发现生成的文件没有区别、尤其是 iCount 相关的支持:

    我注意到 MIBSPI 示例与 R5F_0_0 上的空示例之间存在以下差异:

    Xbar 实例  
    SPI 实例  

    在空项目中添加新 MIBSPI 实例时可能会有所不同。  

    您能告诉我您完成实验的 SDK 版本吗?

    此致、

    Ming

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

    尊敬的 Ming:

    我们使用的是  11.02.00.25 和 CCS 20.4。

    我注意到您使用的是 CCS 12.7、在我看来、这也可能是罪魁祸首。

    此致、

    Konstantinos

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

    尊敬的  Konstantinos:

    CCS 版本与 syscfg 无关。 SysConfig 版本至关重要:

    我使用的是 SysConfig 1.25.0、如 AM273x FreeRTOS SDK 11.02.00.25 发行说明中所建议:

    此致、

    Ming