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.

[参考译文] TMS320F280049C:客户使用以下代码将.ebss 段重新初始化为0、CLB HLC 无法正常工作?

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1311744/tms320f280049c-customer-used-the-below-code-re-initialize-ebss-section-to-0-clb-hlc-can-not-work-normally

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

您好、专家!

我要求为我的客户提供服务。 他们使用 CLB HLC 开发某些函数。 并且 、当他们使用以下代码 .ebss 段重新初始化为0时、CLB HLC 无法正常工作。 如果它们不 重新初始化.ebss 段、CLB 可以正常工作。 他们使用 C:\ti\c2000\C2000Ware_5_01_00_00\driverlib\f28004x\examples\clb\CCS CLB_empty 示例进行测试。 您能帮助我们理解一下吗? 谢谢。

RAMLS5     : origin = 0x00A800 , length = 0x000800

  .ebss            :> RAMLS5     第页 = 1

void main(void)
{
    uint32_t  i;
    uint32_t *addr;

    Device_init();
    Device_initGPIO();

//手动初始化.ebss为0,HLC异常
//如果不手动初始化.ebss,HLC正常
    for(i= 0x00A800; i< 0x00B000; i++)
    {
        addr = (unsigned long *)i;
        *addr = 0;
    }

    Interrupt_initModule();
    Interrupt_initVectorTable();

    CLB_init1();


    while(1)
    {
        g_u32CLBDebugData1 = CLB_getRegister(CLB1_BASE, CLB_REG_CTR_C0);
        g_u32CLBDebugData2 = CLB_getRegister(CLB1_BASE, CLB_REG_HLC_R0);

        DEVICE_DELAY_US(1000);
        //        asm(" NOP");
    }
}

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

    您好、绍兴:

    它们为什么要手动清除地址、而不是执行类似使用 MemCfg_initSections 函数的操作(此外、还有一个 MemCfg_getInitStatus 函数可用于监控初始化状态)? 它们通过清除.ebss 段来试图实现什么目标?

    ,当 他们使用以下代码 .ebss 段重新初始化为0时,CLB HLC 无法正常工作。

    您能否详细说明 HLC 工作不正常意味着什么? 观察到的行为是什么、期望是什么?

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

    尊敬的 Amir:

    通过客户代码中的 HLC init 解决的问题。 谢谢。