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.

[参考译文] TMS320F280025C:RAM 初始化状态检查库函数中可能出现错误

Guru**** 2460140 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1031867/tms320f280025c-possible-error-in-ram-initialization-status-check-library-function

器件型号:TMS320F280025C
主题中讨论的其他器件:C2000WARE

您好!

我相信我在 driverlib memcfg 文件 MemCfg_getInitStatus()函数中发现了错误。

假设我正在初始化所有 RAM 段、我调用 MemCfg_initSections 并传递 0xFFFFFFU、在函数内的切换情况下、在写入初始化寄存 器之前、函数首先使用 MEMCFG_Sect_NUM_MASK 清除 MSB。

案例 MEMCFG_sect_type_mask:
//
//初始化所有段。
//
HWREG (MEMCFG_BASE + MEMCFG_O_DXINIT)|= MEMCFG_"Sect_NUM_MASK &
MEMCFG_sect_DX_ALL;
HWREG (MEMCFG_BASE + MEMCFG_O_LSXINIT)|= MEMCFG_Sect_NUM_MASK &
MEMCFG_Sect_LSX_ALL;
HWREG (MEMCFG_BASE + MEMCFG_O_GSXINIT)|= MEMCFG_Sect_NUM_MASK &
MEMCFG_sect_GSH_ALL;
HWREG (MEMCFG_BASE + MEMCFG_O_MSGXINIT)|= MEMCFG_Sect_NUM_MASK &
MEMCFG_Sect_MSGX_ALL;

但是,使用 MemCfg_getInitStatus()函数检查状态时,比较是直接在没有掩码的情况下完成的

案例 MEMCFG_sect_type_mask:
//
//返回总体状态。
//
if ((HWREG (MEMCFG_base + MEMCFG_O_DXINITDONE)==
MEMCFG_sect_DX_ALL)&&
(HWREG (MEMCFG_BASE + MEMCFG_O_LSXINITDONE)==
MEMCFG_Sect_LSX_ALL)&&
(HWREG (MEMCFG_BASE + MEMCFG_O_GSXINITDONE)==
MEMCFG_sect_GSH_ALL)&&
(HWREG (MEMCFG_BASE + MEMCFG_O_MSGXINITDONE)=
MEMCFG_Sect_MSGX_ALL))

状态= MEMCFG_sect_NUM_MASK;

其他

状态= 0U;

我认为在这里、我们还需要屏蔽 MSB 以便进行比较、如果不是这样、这将始终转到其他陈述。

请您对此进行澄清吗?

此致、

Harsha   

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

    Harsha、

    您的查询已转发给专家、您将很快收到回复。

    此致

    Siddharth

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

    您好、Harsha、

    感谢您的报告。 正确、我们需要使用掩码来排除初始位。

    我将创建一个有关此问题的 TT、以便在下一个 C2000ware 版本中进行更新

    此致、

    Veena

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

    您好、Veena、

    感谢您的确认、只有一个问题、我如何在 driverlib 中更新它? 奇怪的是、我可以在一个项目中转到.c 文件、但我无法在另一个项目中转到.h 文件。  

    现在,我只是跳过  MemCfg_getInitStatus()步骤。

    此致、

    Harsha

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

    如果您使用的是 driverlib.lib、CCS 可能无法导航到.c 文件。 您可以执行以下操作:将 更新的 memcfg.c 文件添加到您的 CCS 工程中。 该文件位于 driverlib 文件夹中。

    我认为 可以在工程中的.c 文件和.lib 文件中定义函数。 编译器将选择.c 文件中的一个。

    此致、

    Veena

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

    谢谢你