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.

[参考译文] TMS320F280049:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点要求可以生成针对该部分的蹦床#39;T。对部分".text" si 进行对齐/阻塞定位失败

Guru**** 2535150 points
Other Parts Discussed in Thread: C2000WARE, TI-CGT

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1072270/tms320f280049-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-sectio

部件号:TMS320F280049
“线程:C2000WARE”中讨论的其它部件

大家好,

我正在处理一个我在不同系统中打开的项目,并且显示了此错误。 最初,我可以通过在“编译器”设置中将“将每个函数放在单独的小节(-gen_func_subsection-mo)中”设置为“开”来解决这个问题。 但现在又显示出我不知道为什么。 有足够的内存可用,因此不是问题所在。 我无法理解到底是什么问题?`有人能帮我吗?

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

    您好,

    您可以在此处粘贴完整错误吗?

    打开链接程序命令文件,然后查找.text 部分。 您可能需要在该部分中添加内存部分。 下面是详细解释 Linker Command 的链接。

    http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

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

    这就是我的控制台的样子:

    警告#10207-D:将索引库“driverlib.lib”解析为“driverlib_coff.lib”,但未找到“driverlib_coff.lib”
    警告#10210-D:创建默认大小为0x400的“.essmem”部分;使用-heap 选项更改默认大小
    "./28004x_generic_ram_lnk.cmd",第76行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.text”大小为0x3dd3的部分进行对齐/阻止的位置失败。 可用内存范围:
    RAMLS0大小:0x800未使用:0x0最大孔:0x0
    RAMLS1大小:0x800未使用:0x0最大孔:0x0
    RAMLS2大小:0x800未使用:0x0最大孔:0x0
    RAMLS3大小:0x800未使用:0x0最大孔:0x0
    RAMLS4大小:0x800未使用:0x1最大孔:0x1

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

    您是构建 COFF 格式还是 EBI 格式? 您是否需要以 COFF 格式构建? Driverlib_coff 库位于:

    C:/ti/CC2000 /C2000Ware_4_00_00_00/driverlib/f28004x/driverlib/CCS/Debugge/driverlib_coff.lib

    打开链接器命令文件并检查.text 部分

    文本:>> RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3 | RAMLS4,第=0页

    您可能需要添加另一个内存分区或通过组合创建较大的内存分区。

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

    你好,Santosh,  

    谢谢你。 我的程序中的输出格式是传统的 COFF。 我包括了 driverlib_coff.lib,但警告消失了。 我检查了链接程序命令文件。 文本部分如您所述。 我对这个平台比较陌生,所以我不确定如何添加另一个记忆部分或对其进行体化,但我可以对此进行研究。 无论哪种情况,以前的错误现在都已更改为以下错误:

    "./28004x_generic_ram_lnk.cmd",第76行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.text”大小为0x3dd3的部分进行对齐/阻止的位置失败。 可用内存范围:
    RAMLS0大小:0x800未使用:0x0最大孔:0x0
    RAMLS1大小:0x800未使用:0x0最大孔:0x0
    RAMLS2大小:0x800未使用:0x0最大孔:0x0
    RAMLS3大小:0x800未使用:0x0最大孔:0x0
    RAMLS4大小:0x800未使用:0x1最大孔:0x1
    "./28004x_generic_ram_lnk.cmd",第94行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.econtst”大小0x33d3页进行对齐/阻止的放置失败。 可用内存范围:
    RAMLS5大小:0x800未使用:0xb4最大孔:0xb4
    "./28004x_generic_ram_lnk.cmd",第95行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.essmem”大小0x400页1执行对齐/阻塞定位失败。 可用内存范围:
    RAMLS5大小:0x800未使用:0xb4最大孔:0xb4
    "./28004x_generic_ram_lnk.cmd",第77行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为该部分生成的蹦床。对“.cinit”大小0x323页0进行对齐/阻塞的放置失败。 可用内存范围:
    RAMM0大小:0x30a 未使用:0x300最大孔:0x300

    在这里必须做些什么?

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

    请浏览我之前提供的链接,该链接解释了如何修改链接器命令文件。 再次粘贴链接

    http://software-dl.ti.com/ccs/esd/documents/sdto_cgt_Linker-Command-File-Primer.html

    您可能希望将这些部分放在不同的内存中

    第94/95行

    econst:> RAMLS6,第=1页
    .esysmem:> RAMLS7,第=1页
    你需要做的类似的事情是电影部分.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Santosh,

    我在所需位置添加了内存部分,但它仍然无法解决问题。 我也尝试添加多个部分。 您认为这可能是什么问题?

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

    您是否在所有部分都看到相同的错误? 您可以发布错误日志吗? 我不确定您的.text 大小为何过大。 您可能希望将某些函数放在不同的部分中。 请浏览链接

    在多个内存范围内拆分输出部分

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

    给你,


    ****项目 sci_ex4_echoback 的配置 CPU1_RAM 的构建****

    "C:\\ti\\ccs1040\\CCs\utils\\bin\\gmake "-k -j 4 all -O

    构建目标:“sci_ex4_echoback.out”
    调用:C2000链接器
    c:/ti/ccs1040/cs/tools/compiler/ti-CGT C2000 _21.6.0.9.LTS/bin/cl2000"-v28 -ml -mt -CLA_support=cl2 -fpute_support=fpu32 --TishMu 支持=tcumash0 --VCU 支持=vcu0 -Ooff ---ctrab_updic_-<ctrab_-<ctrack_-<ctrab_-<-<ctrab_-</ctrab_-</ctrack_ecnat_-<-<ctrab_-</ctrab_-</ctrab_c_-</ctrabi="-ctrack_ecnat_-</c_-ctrack_ecnat_-ctrab_ecnat_ecnat_ecn_-<-<-c_c_c_c_c_ecnat_ecnat_ecnat_-ctrack_ecnat_-c_c_c_c_ecnat_ecnat_ecnat_ecnat diag_wrap=off --display_error_number --xml_link_info="sci_ex4_echoback_linkInfo.xml"--entry_point=code_start --rom_model -o "sci_ex4_echoback."库/sci_ex4_echobacks.Libraries/""/exterbor/exterlinesor/exterfiles.tracks."/exactor/multilibor/exterfiles.exportor/exterfiles.tracks./exterfiles.tracks./edor/exterfiles.tracks./exterfiles.exterfiles/exterfiles/ches".
    <linking>
    警告#10210-D:创建默认大小为0x400的“.essmem”部分;使用-heap 选项更改默认大小
    "./28004x_generic_ram_lnk.cmd",第94行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.econtst”大小0x3059页1进行对齐/阻止的放置失败。 可用内存范围:
    RAMLS6大小:0x800未使用:0x1最大孔:0x1
    RAMLS7大小:0x800未使用:0x1最大孔:0x1
    "./28004x_generic_ram_lnk.cmd",第76行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.text”大小为0x3dd3的部分进行对齐/阻止的位置失败。 可用内存范围:
    RAMLS0大小:0x800未使用:0x0最大孔:0x0
    RAMLS1大小:0x800未使用:0x1最大孔:0x1
    RAMLS2大小:0x800未使用:0x1最大孔:0x1
    RAMLS3大小:0x800未使用:0x0最大孔:0x0
    RAMLS4大小:0x800未使用:0x0最大孔:0x0

    未定义的第一个引用
    文件中的符号
    --- -----
    DataSensor::DataSensor()./ExternalLibraries/multisensor/multisensor.obj
    _main C:\ti\ccs1040\CCs\tools\compiler\ti-CGT-C2000_21.6.0.LTs\lib\rts2800_fpu32_eh.lib<args_main.cob>

    错误#10234-D:未解析的符号仍然存在
    错误#10010:链接过程中遇到错误;未构建“sci_ex4_echoback.out”

    >>编译失败
    Makefile:185:目标“cI_ex4_echoback.out”的配方失败
    gmake [1]:***[sci_ex4_echoback.ex]错误1
    Makefile:181:目标“全部”的配方失败
    gmake:***[所有]错误2.

    ****构建完成****

    错误似乎相同。 我将浏览您提供的链接。

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

    有两个问题:

    1)您有“未解析的符号”,因此必须有更多您缺少的库才能包括。

    2)由于应用程序的代码大小相当高,您可能会尝试将.text 放在其他较大的内存部分。 您可能已将它们组合在一起。 一旦您通过了该链接,您就应该能够做到这一点。

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

    你好,Santosh,

    虽然它说  “未解析的符号仍然存在”,但我看不到它所指的是什么。 是否有任何方法可以理解未解析的符号是指什么?

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

    其他线程中是否有相同的错误? 如果我们在新线程中跟踪,那么我们将关闭该线程。

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

    你好 Santosh,

    我的初始错误已解决。 我不得不将分配更改为.text 和.econst。 我做了以下更改:

    text:>> flash_BANK0_SEC0| flash_BANK0_SEC1|flash_BANK0_sec2|flash_BANK0_SEC3|flash_BANK0_SEC4,第=0页
     econtst      :>>RAMGS0|RAMGS1| RAMGS2,   第=1页

    它现在就可以工作了。 这是对的吗? 除非内存要求发生变化,否则将来不会出现问题?