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.

[参考译文] TMS320F28069M:警告#10247-D:在没有段规范的情况下创建输出段"ramfuncs&quot

Guru**** 2620915 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/700783/tms320f28069m-warning-10247-d-creating-output-section-ramfuncs-without-a-sections-specification

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

您好!

尝试修改 SPI 回送示例

D:\ti\c2000Ware_1_00_04_00_Software\device_support\f2806x\examples\c28\SPI_loopback_interrupts

将其复制为新项目会向我发出上述警告。

已将修改后的工程附加为 zip 文件。

想知道导致警告的原因以及如何解决同样的问题。 有什么建议?

谢谢、

制造商

e2e.ti.com/.../5481.TestProject.zip

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

    您好!

    回复我自己的帖子:

    更换

    SECTIONS
    {//
    设置“引导至 SARAM"模式:
    codestart 段(可在 DSP28_CodeStartBranch.asm 中找到)
    将执行重定向到用户代码的开始。 */
    codestart :>开始, PAGE = 0
    
    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>=15009000
    .TI.ramfunc:{}>RAMM0, PAGE = 0
    #else
    ramfuncs :> RAMM0, PAGE = 0
    #endif
    #endif
    
    .text :> RAML0_L3,page = 0.cinit
    :> RAMM0, PAGE = 0.Pinit
    :> RAMM0, PAGE = 0.switch
    :> RAMM0, PAGE = 0.reset
    :>重置, PAGE = 0、TYPE = DSECT /*未使用、*/
    
    .stack :> RAMM1, PAGE = 1.ebss
    :> RAML4, PAGE = 1.econst
    :> RAML4, PAGE = 1
    .esysmem :> RAML4, PAGE = 1
    
    IQmath :> RAML0_L3,page = 0
    IQmathTables :> IQTABLES,PAGE = 0,TYPE = NOLOAD
    
    /*分配 FPU 数学区域:*/
    FPUmathTables:> FPUTABLES,page = 0,type = NoLoad
    
    DMARAML5.:> RAML5, PAGE = 1
    DMARAML6:> RAML6, PAGE = 1
    DMARAML7:> RAML7, PAGE = 1
    DMARAML8:> RAML8, PAGE = 1.
    
    /*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    //
    /*
    IQmathTables2:> IQTABLES2,page = 0,type = NoLoad
    {
    
    IQMath.lib (IQmathTablesRam)
    
    }
    */
    /*如果调用 IQNasin()或 IQasin(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    //
    /*
    IQmathTables3:> IQTABLES3,page = 0,type = NoLoad
    {
    
    IQMath.lib (IQmathTablesRam)
    
    }
    */
    
    }
    

    使用

    SECTIONS
    {
    
    //*分配程序区域:*/
    .cinit :> FLASHA_B,PAGE = 0.Pinit
    :> FLASHA_B,PAGE = 0
    .text :> FLASHA_B,PAGE = 0
    codestart :>开始, PAGE = 0
    ramfuncs :LOAD = FLASHD,
    运行= RAML0、
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    PAGE = 0
    
    csmpasswds :>csm_PWL_P0、page = 0
    csm_rsvd :>csm_RSVD,page = 0
    
    /*分配未初始化的数据段:*/
    .stack :> RAMM0, PAGE = 1.ebss
    :> RAML2_3,page = 1
    .esysmem :>RAML2_3,page = 1/*
    
    初始化段要进入闪存*/*
    要使 SDFlash 对这些段进行编程,它们必须被分配到 PAGE 0 */
    .econst :> FLASHA_B,PAGE = 0
    .switch :> FLASHA_B,PAGE = 0
    
    //分配 IQ 数学区域:*/
    IQmath :> FLASHA_B,PAGE = 0 /*数学代码*/
    IQmathTables :> IQTABLES,PAGE = 0,TYPE = NOLOAD
    
    /*分配 FPU 数学区域:*/
    FPUmathTables :> FPUTABLES,PAGE = 0,TYPE = NOLOAD
    
    DMARAML5.:> RAML5, PAGE = 1
    DMARAML6:> RAML6, PAGE = 1
    DMARAML7:> RAML7, PAGE = 1
    DMARAML8:> RAML8, PAGE = 1.
    
    /*如果调用 IQNexp()或 IQexp(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    //
    /*
    IQmathTables2:> IQTABLES2,page = 0,type = NoLoad
    {
    
    IQMath.lib (IQmathTablesRam)
    
    }
    */
    /*如果调用 IQNasin()或 IQasin(),请取消注释以下部分
    库中的函数、以便利用
    引导 ROM 中的相关 IQ Math 表(这可以节省空间和引导 ROM
    1个等待状态)。 如果此部分未注释、则为 IQmathTables2
    将被加载到其他存储器(SARAM、闪存等)中并将采用
    上行空间、但0等待状态是可能的。
    //
    /*
    IQmathTables3:> IQTABLES3,page = 0,type = NoLoad
    {
    
    IQMath.lib (IQmathTablesRam)
    
    }
    */
    
    /*.reset 是编译器使用的标准段。 它包含
    用于 C 代码的_c_int00起始地址的*//*。 /*
    /*使用引导 ROM 时
    ,不需要此部分和 CPU 矢量*//*表。 因此,默认类型设置为*/
    /* DSECT */
    .reset :>重置, PAGE = 0、TYPE = DSECT
    向量 :>引导程序,页= 0,类型= DSECT
    
    }
    

    以下更改会使该警告消失。

    F28069.cmd 有多个版本。 IMO 的多个版本有点令人困惑。

    使用中的 RAM lnk cmd 文件

    C2000Ware_1_00_04_00_Software\device_support\f2806x\con\cmd

    解决了问题。 奇怪。

    谢谢、

    制造商

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

    很高兴您找到了您的问题的解决方案。

    我们通常提供仅 RAM 版本和闪存版本。 由于闪存加载速度较慢、因此在存储器大小和易失性不成问题的情况下、有时能够使用 RAM 版本进行快速示例和实验是很好的。

    惠特尼