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.

[参考译文] TMS320F28388D:错误#10099-D:程序无法装入可用内存

Guru**** 2553450 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1308356/tms320f28388d-error-10099-d-program-will-not-fit-into-available-memory

器件型号:TMS320F28388D
主题中讨论的其他器件:SysConfig

您好!

我正在启动一个新项目,只在完成外围设备的配置过程中工作,并收到以下错误消息:  

<Linking>
"../2838x_FLASH_CLA_lnk_cpu1.cmd", line 78: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section ".cinit" size 0x20 page 0.  Available memory ranges:
   FLASH1       size: 0x2000       unused: 0x0          max hole: 0x0       
error #10010: errors encountered during linking; "2205-CTC-CHRG7K-SW-CPU1.out" not built

 源代码不能小于任何值:  

void main(void)
{
    //
    // Initializes system control, device clock, and peripherals
    //
    Device_init();

    //
    // Initializes PIE and clear PIE registers. Disables CPU interrupts.
    // and clear all CPU interrupt flags.
    //
    Interrupt_initModule();

    //
    // Initialize the PIE vector table with pointers to the shell interrupt
    // Service Routines (ISR).
    //
    Interrupt_initVectorTable();


    while(status == SFO_INCOMPLETE)
    {
        status = SFO();
        if(status == SFO_ERROR)
        {
            error();   // SFO function returns 2 if an error occurs & # of MEP
        }              // steps/coarse step exceeds maximum of 255.
    }

    //
    // Disable sync(Freeze clock to PWM as well). GTBCLKSYNC is applicable
    // only for multiple core devices. Uncomment the below statement if
    // applicable.
    //
    SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_GTBCLKSYNC);
    // SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);

    //
    // Board Initialization
    //
    Board_init();

    //
    // Enable sync and clock to PWM
    //
    //SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);
    SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_GTBCLKSYNC);

    //
    // Enables CPU interrupts
    //
    Interrupt_enableGlobal();

    // Enter code here



    //
    // IDLE loop. Just sit and loop forever (optional):
    //
    for(;;)
    {
        //int32_t comptA = 0;

        // Enter code here
        GPIO_togglePin(CMD_RLY_BYPASS_OUT);

        DEVICE_DELAY_US(100000);

        status = SFO(); // in background, MEP calibration module continuously updates MEP_ScaleFactor
         if (status == SFO_ERROR)
         {
             error();   // SFO function returns 2 if an error occurs & #
                        // of MEP steps/coarse step
         }              // exceeds maximum of 255.
        HRPWM_setCounterCompareValue(PWM_PFC_BASE, HRPWM_COUNTER_COMPARE_A, compA);
    }
}



void error (void)
{
    ESTOP0;         // Stop here and handle error
}

导致问题的行是:  

HRPWM_setCounterCompareValue(PWM_PFC_BASE, HRPWM_COUNTER_COMPARE_A, compA);

当我添加注释时、代码将构建并运行。  

我已经阅读过这个问题可能是由于 EABI 格式,但如果我把它更改为 COFF,一堆编译错误出现,我不想下去这个兔子洞,如果可能的话。  

提前感谢您的帮助、

阿德里安

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

    尊敬的 Adrien:

    专家不在办公室。 请在1/8之前等待回复。

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

    尊敬的 Adrien:

    你是否尝试将.cinit 段映射到另一个未使用的闪存扇区? FLASH1可能已满代码。

    谢谢。此致、

    瓦姆西

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

    您好!

    它工作,但怎么来 FLASH1是满的? 我提供了手写代码的实质内容(只有该+生成的任何 SysConfig)

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

    尊敬的 Adrien:

    您检查了映射文件吗?  它将详细介绍所有对象都映射到 FLASH1的内容。

    谢谢。此致、
    瓦姆西

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

    尊敬的 Adrien:

    您对此有任何更新吗?  我可以关闭此帖子吗?

    谢谢。此致、

    瓦姆西