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.

[参考译文] CCS/TMS320F28377D:链接问题

Guru**** 2540720 points
Other Parts Discussed in Thread: SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/625012/ccs-tms320f28377d-link-problem

器件型号:TMS320F28377D
主题中讨论的其他器件:SFRA

工具/软件:Code Composer Studio

您好!

当我将一个 RAM 重新构建为闪存模式的项目时、这个奇怪的问题。

错误信息为"


错误#10430-D:".TI.ramfunc"段由__attribute__((ramfunc))或--ramfunc=on 生成、需要段规范才能运行。
错误#10010:链接期间遇到错误;未生成"main.out"

"

以及随附的链接命令文件。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//如果使用、用户必须在项目链接器设置中定义 CLA_C
// CLA C 编译器
//项目属性-> C2000链接器->高级选项->命令文件
//预处理->--define
//#ifdef CLA_C
//为将要使用的 CLA 暂存区定义大小
//由 CLA 编译器生成局部符号和 temps
//还强制引用标记的特殊符号
//暂存区是。
CLA_ScratchPad_size = 0x100;
--undef_sym=__cla_scratchpad_end
--undef_sym=__cla_scratchpad_start
//#endif CLA_C

存储器

第0页:
  /* begin 用于"引导至 SARAM"引导加载程序模式  */
#IF 定义(RAM)
  开始          :origin = 0x000000,length = 0x000002
#Elif defined (闪存)
  开始          :origin = 0x080000,length = 0x000002
#endif

  RAMM0          :origin = 0x000122、length = 0x0002DE
  RAMD0          :origin = 0x00B000、length = 0x000800
  RAMD1          :origin = 0x00B800,length = 0x000800
  RAMLS0         :origin = 0x008000、length = 0x000800
  RAMLS1         :origin = 0x008800,length = 0x000800
  RAMLS2          :origin = 0x009000,length = 0x000800
  RAMLS3          :origin = 0x009800,length = 0x000800
  RAMLS4          :origin = 0x00A000,length = 0x000800
  RAMLS5         :origin = 0x00A800,length = 0x000800
  RAMGS0         :origin = 0x00C000、length = 0x001000
  RAMGS12        :origin = 0x018000,length = 0x001000
  RAMGS13        :origin = 0x019000,length = 0x001000
  RAMGS14        :origin = 0x01A000,length = 0x001000
  RAMGS15        :origin = 0x01B000,length = 0x001000

  FLASHA         :origin = 0x080002,length = 0x001FFE   /*片上闪存*/
  FLASHC         :origin = 0x084000,length = 0x002000   //片上闪存*/
  FLASHD         :origin = 0x086000、length = 0x002000   //片上闪存*/
  FLASHE         :origin = 0x088000、length = 0x008000   //片上闪存*/
  FLASHF         :origin = 0x090000,length = 0x008000   //片上闪存*
  FLASHG         :origin = 0x098000、length = 0x008000   //片上闪存*/
  FLASHH         :origin = 0x0A0000,length = 0x008000   //片上闪存*/
  FLASHI         :origin = 0x0A8000、length = 0x008000   //片上闪存*/
  FLASHJ         :origin = 0x0B0000,length = 0x008000   //片上闪存*/
  FLASHK         :origin = 0x0B8000、length = 0x002000   //片上闪存*/
  FLASHL         :origin = 0x0BA000、length = 0x002000   //片上闪存*/
  FLASHM         :origin = 0x0BC000、length = 0x002000   //片上闪存*/
  FLASHN         :origin = 0x0BE000、length = 0x002000   //片上闪存*/

  复位             :origin = 0x3FFFC0,length = 0x000002



第1页:

  BOOT_RSVD       :origin = 0x000002,length = 0x000120    // M0的一部分,引导 ROM 将此用于栈*/
  RAMM1           :origin = 0x000400、length = 0x000400    //片上 RAM 块 M1 *

  RAMLS0            :origin = 0x008000、length = 0x000800
  RAMLS1            :origin = 0x008800,length = 0x000800
  RAMLS2           :origin = 0x009000,length = 0x000800
  RAMLS3           :origin = 0x009800,length = 0x000800



  RAMGS1          :origin = 0x00D000、length = 0x001000
  RAMGS2          :origin = 0x00E000、length = 0x001000
  RAMGS3          :origin = 0x00F000、length = 0x001000
//  RAMGS4          :origin = 0x010000,length = 0x001000
//  RAMGS5          :origin = 0x011000,length = 0x001000
//  RAMGS6          :origin = 0x012000,length = 0x001000
//  RAMGS7          :origin = 0x013000,length = 0x001000
//  RAMGS8          :origin = 0x014000,length = 0x001000
//  RAMGS9          :origin = 0x015000,length = 0x001000
//  RAMGS10         :origin = 0x016000,length = 0x001000
//  RAMGS11         :origin = 0x017000,length = 0x001000

  RAMGS45        :origin = 0x010000,length = 0x002000
  RAMGS67        :origin = 0x012000,length = 0x002000
  RAMGS89        :origin = 0x014000,length = 0x002000
  RAMGS1011     :origin = 0x016000,length = 0x002000

  FLASHB         :origin = 0x082000、length = 0x002000   //片上闪存*

  CLA1_MSGRAMLOW  :origin = 0x001480,length = 0x000080
  CLA1_MSGRAMHIGH :origin = 0x001500,length = 0x000080




部分

#IF 定义(RAM)
  codestart       :> begin,    page = 0
  ramfuncs        :>RAMM0     page = 0
  .text           :>> RAMM0|RAMD0|RAMD1|RAMLS0|RAMLS1|RAMLS2|RAMLS3|RAMLS4|RAMLS5|RAMGS0|RAMGS12|RAMGS13|RAMGS14|RAMGS15,  page = 0
  .cinit          :>> RAMM0|RAMGS14|RAMGS15,    page = 0

  .pinit          :> RAMM0,    page = 0
  switch         :>RAMM0,    page = 0
  econst         :>RAMLS3,   page = 1.
#Elif defined (闪存)
  codestart       :> begin,    page = 0
  ramfuncs        : load = FLASHC,
                      运行= RAMLS1、
                      run_start (_RamfuncsRunStart)、
                      load_start (_RamfuncsLoadStart)、
                      load_size (_RamfuncsLoadSize)、
                      PAGE = 0

  .text           :>> FLASHJ | FLASHK | FLASHL | FLASHN,   PAGE = 0
  .cinit          :> FLASHM,   PAGE = 0

  .pinit          :> FLASHM,   PAGE = 0
  .switch         :> FLASHM,   PAGE = 0
  econst         :> FLASHB,   PAGE = 1.
其他
#ERROR 将"RAM"或"flash"添加到 C2000链接器->高级选项->命令文件预处理->-define
ENDIF//RAM

  /*测试特定部分*/
  // RFFTdata1       :> RAMGS45,  page = 1//,align = RFFT_alignment
  // RFFTdata2       :> RAMGS67,  page = 1.
  // RFFTdata3       :> RAMGS89,  page = 1.
  // RFFTdata4       :> RAMGS1011,page = 1.

  FPUmathTables   :>> RAMGS12|RAMGS13|RAMGS14,  page = 0

  .reset          :> reset,    page = 0,type = DSECT //未使用,*/

  .cio            :>RAMLS3,   page = 1.
  .sysmem         :> RAMLS3,   page = 1.

  .stack          :>RAMM1,    PAGE = 1.
  ebss           :>> RAMGS1| RAMGS45| RAMGS67 | RAMGS89 | RAMGS1011,   PAGE = 1
  econst         :>RAMLS3,   page = 1.
  .esysmem        :>RAMLS3,   page = 1.
  filter_RegsFile :>RAMGS1,     page = 1.

  /* CLA 特定部分*/
  Cla1Prog        :>> RAMLS4 | RAMLS5,PAGE=0

  CLADataLS0      :>RAMLS0,PAGE=1
  CLADataLS1      :> RAMLS1,PAGE=1

  Cla1ToCpuMsgRAM :> CLA1_MSGRAMLOW,  page = 1.
  CpuToCla1MsgRAM :>CLA1_MSGRAMHIGH, PAGE = 1.

  /*以下部分定义适用于 SDFM 示例*/
  filter1_RegsFile:> RAMGS1,   PAGE = 1,fill=0x1111
  Filter2_RegsFile:> RAMGS2,   PAGE = 1,fill=0x2222
  Filter3_RegsFile:> RAMGS3,   PAGE = 1,fill=0x3333
  Filter4_RegsFile:> RAMGS45,   PAGE = 1,fill=0x4444

  SFRA_F_Data      :>RAMGS2,ALIGN = 64,PAGE = 1

  SFRA_Data      :>RAMGS2,ALIGN = 64,PAGE=1

  FPUmathTables   :>RAMGS3,page =1

  CNTL_COEFF_RAM   :>RAMGS3,PAGE = 1.
  CNTL_var_RAM   :>RAMGS2,PAGE = 1.

  CNTL_COEFF_RAM2   :> RAMGS3,PAGE = 1.
  CNTL_var_RAM2   :> RAMGS2,PAGE = 1.

#ifdef CLA_C
  /* CLA C 编译器段*/
  //
  //必须被分配给 CLA 具有写入访问权限的内存
  //
  CLAscratch      :
                    {*。obj (CLAscratch)
                    。 += CLA_ScratchPad_size;
                    *。obj (CLAscratch_end)}> RAMLS1、 PAGE = 1

  暂存区     :>RAMLS1,      页=1
  .bss_cla         :> RAMLS1,      page = 1.
  .const_cla      :> RAMLS1,      PAGE = 1.
#endif CLA_C


/*
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//文件结束。
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
*

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

在此链接命令文件中、没有任何有关".TI.ramfunc"段的内容。

我该怎么做?

任何建议均可获得采纳。