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.

[参考译文] AM2634:MCAN ECC 配置问题

Guru**** 2392905 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1485149/am2634-mcan-ecc-config-issue

器件型号:AM2634

工具/软件:

您好!

我现在有一个有关 MCAN ECC 配置的问题要咨询、我将在。下面描述问题的现象

在我的程序中、我首先执行 can_init、然后执行 SDL ECC Config。 can_init 中有代码用于启用或禁用 ECC、这会影响 SDL 的 ECC 配置。 下面我使用演示程序简单地解释问题现象。

① 第一种情况

我使用*(volatile uint32_t *) 0x52700014 = 0;代码来模拟 MCAL CAN ECC 禁用操作。 从下图可看到、在 SDL ECC 初始化完成后、MCAN0_ECC_CTRL 的值仍为0。

②第二种情况

我使用*(volatile uint32_t *) 0x52700014 = 7代码来模拟 MCAL CAN ECC 启用操作。 您可以看到、在 SDL ECC 初始化完成后、MCAN0_ECC_CTRL 的值为7。

③第三种情况

仅执行 SDL ECC 初始化、您可以看到 MCAN0_ECC_CTRL 的值在初始化后为0x187。

我做了三个测试,第一个有一个例外,第二个和第三个工作正常。

在我的程序中、MCAL CAN 模块使用第一种情况执行禁用 ECC。 在这种情况下、当 CAN 驱动程序收到消息时、将触发 ECC 故障、CAN 驱动程序将停止。

我想知道 MCAL MCAN ECC 配置为何会影响 SDL MCAN ECC 配置。 我需要启用 MCAL MCAN ECC 启用? 还是屏蔽 MCAL MCAN ECC 配置代码?

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

    您好、

    我在 TRM 中发现了以下内容:

    在这里、我发现 ECC 使能位的默认状态为逻辑1、这意味着在已启用复位 ECC 后的默认状态。

    我还验证了 SDL_ECC_INIT API 的源代码、此处我没有看到它们在任何位置再次启用 ECC 位、这意味着、由于寄存器位的默认状态为逻辑1 (默认启用)、因此、由于这个原因、它们可能无法再次启用。

    这就是在用例2和3中使用 ECC 的原因、因为在这两种情况下、我们要么正在启用、要么不更改这些位、因此这里仅 ECC 处于启用状态。 但是、在第一种情况下、您会强制禁用 ECC、正如我之前提到的、 SDL_ECC_INIT API 源代码不再启用 ECC、因此、禁用 ECC 并且不起作用。

    您可以  在 sdl_ecc.c 源文件中找到 sdl_ecc_init 的定义:

    --
    此致、
    Jagadish。

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

    嗨、Jagadish!

    我运行了一些验证测试。

    ① μ s 我进行仿真时、进入 main 函数时读取 MCAN_ECC_CTRL 寄存器的值。 从下图中可以看到、它的读数实际上为0。 这是否意味着 Macan ECC 默认关闭?

    ② 我已经在 SDL_ECC_Init 中测试了 ECC 配置的代码、可以看到、首先在代码中读取 MCAN_ECC_CTRL 的值。 从下图中、我们可以看到 val 的值为0、然后将 val 的位0位1位2设置为1。 最后、将0x07写入 MCAN_ECC_CTRL。

    为什么我要测试的内容与您所说的内容不符? 我的测试方式是否有问题?

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

    嗨、Jagadish!

    抱歉、我之前犯了个错误、我应更改 MCAN_ECC_VECTOR 的值、然后查看 MCAN_ECC_CTRL 的值。 执行此操作后、我发现上电后 MCAN_ECC_CTRL 的初始值为0x187、这与您所说的内容一致。

    但是、在配置 SDL ECC 时、无论 MCAN_ECC_CTRL 的值如何、都会重新启用 ECC、如下图所示、该图将位0/1/2设置为1。


    执行 SDL_ECC_Init 后、我手动设置向量寄存器值。 从下图中可以看到、MCAN0_ECC_CTRL 读回的值为7、这表示 SDL_ECC_Init 再次启用 ECC 功能。


    但是、我的测试发现、虽然已启用 ECC、但当我收到 CAN 数据时、仍会触发 ECC 故障。 这是为什么?

    谢谢。

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

    嗨、Jagadish!

    根据张凡的建议,我重新解决了这个问题。

    接下来、我将这个问题分为两种不同的情况、一种是 mcal 可以禁用 ECC、另一种是 mcal 可以启用 ECC。

    ① Mcal 可以禁用 ECC

    (1)在 CAN_INIT 中禁用 ECC 后、我手动将0x148000写入向量寄存器、然后读回 CTRL 值为0。

    (2) SDL_ECC_INIT 初始化完成后、再次手动将0x148000写入向量寄存器、、然后读回 CTRL 值为7。

    (3) 初始化完成后、通过主机发送 CAN 消息、并触发 ECC 故障。 intrSrc 为3

    ② MCAL CAN Enbale ECC

    (1)  在 CAN_INIT 中启用 ECC 后、我手动将0x148000写入向量寄存器、然后读回 CTRL 值为7。

    (2)  SDL_ECC_INIT 初始化完成后、再次手动将0x148000写入向量寄存器、、然后读回 CTRL 值为7。

    在这种情况下、软件可以正常运行、CAN 模块可以正常发送和接收数据。

    -----------------------------------------------------------------------------------------------------------

    从上述两种情况可以看出、在 SDL_ECC_INIT 完成后、我读回的 MCAN_ECC_CTRL 寄存器的值与7相同、但它们显示的现象不同。 为什么?

    谢谢。

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

    抱歉,我正在重新处理这个问题。

    我将尝试在明天之前提供最新信息。

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

    您好、

    是否可以为此问题设置一个实时调试会话、因为我有一些疑问需要与您进行澄清。

    第一个疑问是  

    (3) 初始化完成后、我通过主机发送 CAN 消息、并将触发 ECC 故障。 intrSrc 为3

    您只是调用  sdl_ecc_init 初始化函数吗? 您是否不调用 ecc_sdlFuncTest?  

    实际上、ecc_sdlFuncTest 应该会触发 single-bit 和 double-bit ECC 错误、我不理解为什么要将 CAN 数据包从主机发送到电路板、从而产生 ECC 故障。

    我将从上午10点到晚上8点 IST (印度标准时间)提供、您可以根据可用性设置一个调试会话。

    --
    此致、
    Jagadish。

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

    您好、Jagadish、

    感谢您的支持。

    让我与客户检查时间并设置实时调试会话。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    让我与客户检查时间并设置实时调试会话。

    感谢你的评分

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

    尊敬的 Fan Zhang:

    我最后还在尝试重现这个问题、但还没有成功。

    您能否要求客户提供一个示例工程、以便在我们这边快速进行调试 您能否让客户从 SDK 中获取一个 CAN 示例、并让他包含他正在使用的此 SDL 相关代码更改?

    以便我们可以调试问题并采取必要的措施。 在平均时间,我也会试图做同样的从我的结束

    --
    此致、
    Jagadish。

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

    解锁该线程、以便风扇做出响应。

    风扇、您对此有任何更新吗? 客户项目是否共享?

    谢谢。此致、

    Nikhil

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

    您好、Nikhil、

    我今天就这个问题与客户进行了交谈。 他忙于处理紧急任务、将尽快定制和分享项目。

    谢谢。

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

    感谢反馈粉丝、

    将在此处等待客户响应。