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.

[参考译文] TMS320F28379D:警告#10247-D:创建输出段".TI.ramfuncs"不带段规范

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

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

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

CCS 生成可执行文件、检查映射文件不会显示问题、函数已正确放置、但出现警告:

警告#10247-D:正在创建不带 SECTIONS 规范的输出段".TI.ramfuncs"

此处是"2837x_RAM_lnk_cpu1.cmd"文件:

内存
{
第0页: /*程序存储器*/
  /* begin 用于"boot to SARAM"引导加载程序模式*/
  begin          :origin = 0x000000、length = 0x000002
  RAMM0          :origin = 0x000122、length = 0x0002DE   //.cinit .pinit .switch
//  RAMM1          :origin = 0x000400,length = 0x000400   //.stack
//  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
  RAMLS012345    :origin = 0x008000、length = 0x003000   //.text

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

第1页: /*数据存储器*/

  BOOT_RSVD      :origin = 0x000002、length = 0x000120
  RAMM1          :origin = 0x000400、length = 0x000400   //.stack
  RAMD0          :origin = 0x00B000、length = 0x000800   //.const
  RAMD1          :origin = 0x00B800、length = 0x000800   //.ebss .esysmem

  RAMGS0         :origin = 0x00C000、length = 0x001000
  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
  RAMGS12        :origin = 0x018000,length = 0x001000
  RAMGS13        :origin = 0x019000、length = 0x001000
  RAMGS14        :origin = 0x01A000、length = 0x001000
  RAMGS15        :origin = 0x01B000、length = 0x001000
  
  CPU2TOCPU1RAM  :origin = 0x03F800、length = 0x000400
  CPU1TOCPU2RAM  :origin = 0x03FC00、length = 0x000400


部分
{
  codestart       :> begin,      page = 0

#ifdef __TI_Compiler_version__
  #if __TI_Compiler_version__>= 15009000
  .TI.ramfunc:{}> RAMLS012345、       page = 0
  #else
  ramfuncs        :> RAMLS012345、      page = 0
  #endif
#endif

  .text           :> RAMLS012345、page = 0 /*可执行代码和常量*/
  .cinit          :> RAMD0、      page = 1 /*初始化的全局和静态变量*/
  .pinit          :> RAMM0 ,      page = 0 /*构造函数表,仅 C++,否则为空*/
  .switch         :> RAMM0、      page = 0 /* switch 语句的表*/
  .reset          :>RESET、      PAGE = 0、TYPE = DSECT /*未使用、*/

  .stack          :> RAMM1、      page = 1 /*对象堆栈空间、在项目 C2000Linker->基本选项中设置的大小*/
  .stack          :> RAMD0、      page = 1 /*对象堆栈空间、在项目 C2000Linker->基本选项中设置的大小*/
  .ebss           :> RAMD1、      page = 1 /*未初始化全局和静态变量、警告:未初始化为零*/
  .esysmem        :> RAMD1、      page = 1 /*堆空间、malloc 类型函数的存储器*/
  econst         :> RAMD0、      page = 1 /*常量变量*/

//  Filter_Regs :45>> RAMGS0,     页面= 1

//  ramgs0          :> RAMGS0,     page = 1
//  ramgs1          :> RAMGS1,     page = 1
  ramgs15         :> RAMGS15,    页面= 1

  /*使用 IPC API 驱动程序时需要以下部分的定义*/
  组:> CPU1TOCPU2RAM , page = 1
  {
     PUTBUFFER
     PUTWRITEIDX
     GET READIDX
  }

  组:> CPU2TOCPU1RAM , page = 1
  {
     GETBUFFER :   类型= DSECT
     GETWRITEIDX : 类型= DSECT
     PUTREADIDX :  类型= DSECT
  }

//========================================
//文件结尾。
//========================================

下面是来自控制台的消息:

构建目标:"Wolfspeed_cpu1.out"
调用:C2000链接器
"c:/TI/ccs1250/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/bin/cl2000 -v28 -ml -mt -cla_support=cla1 - float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -O2 /TI/ccs1250/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/lib --opt_for_speed=5 --fp_mode=relaxed /TI/ccs1250/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/include --advice:performance=all diag_wow=off --display_error_number --xml_link_info="Wolfspeed_cpu1_linkInfo.xml"--rom_model -o "Globalspeed_cpu1.out"./F2837xD/F2837xD_Adc.obj"/Source/C1_Can.obj ../F2837xD_/TI/c2000/C2000Ware_4_01_00_00/driverlib/f2837xd/driverlib/ccs/Debug/driverlib.lib "/"/Source/C1_Control.obj /Source/C1_Drivers.obj /Source/C1_Main.obj /Source/Func.obj。

警告#10247-D:正在创建不带 SECTIONS 规范的输出段".TI.ramfuncs"
完成目标构建:"Wolfspeed_cpu1.out"

请参阅上面的两行、以红色粗体突出显示。

我不知道如何删除该警告。 以下源代码请求将函数放置在".TI.ramfunc"段中:


#pragma code_section (ADC_A1_Interrupt、".TI.ramfunc");

中断失效 ADC_A1_Interrupt (void)
{
//函数正文如下所示

我使用 CCS 12.5.0

谢谢你。

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

    尊敬的 Slobodan:

    在我们的示例中、我尝试了您的链接器命令文件、但未发送您遇到的任何警告。

    您能否再次导入该示例并尝试构建它、然后查看您是否仍然面临该问题。

    您能否使用链接器 cmd 更改在 TI 提供的任何示例中进行试用并查看结果。 如果仍遇到问题、请以 zip 格式发送示例。

    谢谢

    阿斯温

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

    e2e.ti.com/.../SoftwareEval.zip

    我相信 TI 示例会很有效。 我的另一些项目在没有发出这种警告的情况下汇编起来。 我现在正在做的那个,只是不想停止这一警告。 我已升级到12.6、但仍能看到警告。那么、这就是项目、因此您可以了解链接器在设置时是否给出了相同的警告。

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

    尊敬的 Slobodan:  

    我能够从结束时重现这一警告。 让我来分析一下、我会回到你的身边。

    谢谢

    阿斯温

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

    尊敬的 Slobodan:

    它似乎在 func.c 文件第22行中被错误地添加为 #pragma code_section (Lookup1D1、".TI.ramfuncs");。

    它应为 #pragma code_section (Lookup1D1、".TI.ramfunc");

    请进行更改并自行尝试。

    谢谢

    阿斯温

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

    谢谢你。 我只是没有看到它。