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.

[参考译文] TMS320F280039:闪存设置代码至 RAM 模块构建失败

Guru**** 2394305 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1320967/tms320f280039-flash-setup-code-to-ram-module-build-fail

器件型号:TMS320F280039

尊敬的 TI:

我正在创建一个新项目。

并且尝试 将时间关键代码和闪存设置代码复制到 RAM 时。 当我构建这个项目时、项目失败了。 故障信息在上方。

Building target: "New.out"
Invoking: C2000 Linker
"C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/bin/cl2000" -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcrc -O2 --advice:performance=all --define=_INLINE --define=_FLASH --diag_warning=225 --diag_wrap=off --display_error_number --gen_func_subsections=on --abi=coffabi -z -m"New.map" --stack_size=0x200 --warn_sections -i"C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/lib" -i"C:/ti/ccs1260/ccs/tools/compiler/ti-cgt-c2000_22.6.1.LTS/include" --reread_libs --diag_wrap=off --display_error_number --xml_link_info="New_linkInfo.xml" --rom_model -o "New.out" "./App/UserIsr.obj" "./App/main.obj" "./Project/Project_Config_Uther.obj" "./include/DSP_Initial.obj" "./include/Peripheral_xINT.obj" "./include/adc.obj" "./include/aes.obj" "./include/asysctl.obj" "./include/bgcrc.obj" "./include/can.obj" "./include/cla.obj" "./include/clb.obj" "./include/cmpss.obj" "./include/cputimer.obj" "./include/dac.obj" "./include/dcc.obj" "./include/dcsm.obj" "./include/dma.obj" "./include/ecap.obj" "./include/epg.obj" "./include/epwm.obj" "./include/eqep.obj" "./include/erad.obj" "./include/f28003x_adc.obj" "./include/f28003x_codestartbranch.obj" "./include/f28003x_cputimers.obj" "./include/f28003x_dbgier.obj" "./include/f28003x_defaultisr.obj" "./include/f28003x_dma.obj" "./include/f28003x_epwm.obj" "./include/f28003x_globalvariabledefs.obj" "./include/f28003x_gpio.obj" "./include/f28003x_piectrl.obj" "./include/f28003x_pievect.obj" "./include/f28003x_spi.obj" "./include/f28003x_sysctrl.obj" "./include/f28003x_tempsensorconv.obj" "./include/f28003x_usdelay.obj" "./include/flash.obj" "./include/fsi.obj" "./include/gpio.obj" "./include/hic.obj" "./include/hrcap.obj" "./include/hrpwm.obj" "./include/i2c.obj" "./include/interrupt.obj" "./include/lin.obj" "./include/mcan.obj" "./include/memcfg.obj" "./include/pmbus.obj" "./include/sci.obj" "./include/sdfm.obj" "./include/spi.obj" "./include/sysctl.obj" "./include/version.obj" "./include/xbar.obj" "../F280039_flash_lnk.cmd" "../CMD/f28003x_headers_nonBIOS.cmd"  -llibc.a 
<Linking>
 
 undefined          first referenced             
  symbol                in file                  
 ---------          ----------------             
 _RamfuncsLoadSize  ./include/f28003x_sysctrl.obj
 _RamfuncsLoadStart ./include/f28003x_sysctrl.obj
 _RamfuncsRunStart  ./include/f28003x_sysctrl.obj
 
error #10234-D: unresolved symbols remain
error #10010: errors encountered during linking; "New.out" not built

我按如下所示检查了 cmd 文件 F280039_flash_lnk.cmd。

   .TI.ramfunc      : LOAD = FLASH_BANK0_SEC1,
                      RUN = RAMLS0,
                      LOAD_START(RamfuncsLoadStart),
                      LOAD_SIZE(RamfuncsLoadSize),
                      LOAD_END(RamfuncsLoadEnd),
                      RUN_START(RamfuncsRunStart),
                      RUN_SIZE(RamfuncsRunSize),
                      RUN_END(RamfuncsRunEnd),
                      ALIGN(8)

我检查代码、 f28003x_globalprototypes.h 中有外部

extern Uint16 RamfuncsLoadStart;
extern Uint16 RamfuncsLoadEnd;
extern Uint16 RamfuncsLoadSize;
extern Uint16 RamfuncsRunStart;
extern Uint16 RamfuncsRunEnd;
extern Uint16 RamfuncsRunSize;

该文件包含在 f28003x_examples.h 中、f28003x_examples.h 包含在 f28003x_SYSCtrl.c 中。

我还尝试在 f28003x_sysctrl.c 或 main.c 中添加这些外部函数 ,或者在我使用 InitSysCtrl()的情况下,仍然无法成功构建。

请帮我解决这些问题。

谢谢。

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

    您好!  

    看起来您是以 COFF 格式编译它。 如果是这样,请尝试更新链接器命令文件,以具有以下行.  

    对于 COFF,符号具有"_"前缀。

            #if defined(__TI_EABI__)
                .TI.ramfunc : {} LOAD = FLASH_BANK0_SEC1,
                                     RUN = RAMLS0,
                                     LOAD_START(RamfuncsLoadStart),
                                     LOAD_SIZE(RamfuncsLoadSize),
                                     LOAD_END(RamfuncsLoadEnd),
                                     RUN_START(RamfuncsRunStart),
                                     RUN_SIZE(RamfuncsRunSize),
                                     RUN_END(RamfuncsRunEnd),
                                     PAGE = 0, ALIGN(8)
            #else
                .TI.ramfunc : {} LOAD = FLASH_BANK0_SEC1,
                                 RUN = RAMLS0,
                                 LOAD_START(_RamfuncsLoadStart),
                                 LOAD_SIZE(_RamfuncsLoadSize),
                                 LOAD_END(_RamfuncsLoadEnd),
                                 RUN_START(_RamfuncsRunStart),
                                 RUN_SIZE(_RamfuncsRunSize),
                                 RUN_END(_RamfuncsRunEnd),
                                 PAGE = 0, ALIGN(8)
            #endif


    此致

    西达尔特

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

    感谢您的支持。 我的问题就解决了。