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:#10099D 程序无法装入可用内存错误

Guru**** 2595800 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1078987/tms320f28379d-10099d-program-will-not-fit-into-available-memory-error

部件号:TMS320F28379D
“线程:C2000WARE测试”中讨论的其它部件

e2e.ti.com/.../2837xD_5F00_RandF_5F00_lnk_5F00_cpu1.zip

您好,

我有#10099D 程序无法装入可用内存错误。 我正在使用2837xD_FLASG_lnk_CPU1.cmd 文件。 我有4个源文件,它工作正常,但在添加 FFT.c 文件(120行)后,它不会放入闪存中。

在“内存分配”窗口中,FALSHB 是紫色的并显示(100%),但芯片包含1MB 闪存。 我不理解。

请帮助!

储罐,

路易

PS:如何附加命令文件? 拖放不起任何作用...这部分解决了我必须 ZIP 驱动 CMD 文件的问题

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

    路易

    我已将您的职位分配给我们的团队成员之一,请期待您的回复,2月22日,因为我们今天在美国的总统节假日已经不在办公室了。

    最佳

    马修

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

    好的,马修,谢谢。

    最棒的地方
    路易

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

    路易

    请求您共享编译日志。

    此致

    西达尔斯

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

    希望您能找到编译日志。 我找不到任何*.log 文件,但我压缩了在上次生成 CPU1_flash 文件夹时修改的文件。

    如果您需要特定文件,请向我发送该文件的名称。

    谢谢,
    Louise2e.ti.com/.../Compilation_5F00_log.zip

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

    路易

    编译日志的意思是当您在 CCS 中触发项目构建时控制台输出。  您可以将其保存到文件并发送。

    此致

    西达尔斯

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

    您好,Siddharth,

    好的,我的错。 它是:



    ****项目 ADC_EX11_MULTIPLE_SOC_ePWM 的配置 CPU1_FLASH 的构建****

    "C:\\ti\\ccs1110\\CC\\utils\\bin\\gmake "-k -j 16 all -O

    生成文件:"./items/items.c"
    调用:C2000编译器
    "C:/ti/ccs1110/CCS/tools/compiler/ti-CGT-C2000_21.6.0.LTS/bin/cl2000"-v28 -ml -mt -CLA_support=cl1 -fpute_support=fpu32 --TccMU_support=tmudx0-VCG_support=vcu2 -Ooff -_span_ski="-_span__skib_ski_-__ski_ski_ski_-/v/v_ski="-_files/v_files/v_ski_ski_ski_ski_ski="-/v/v/v_files/v/v_ski_ski_ski_ski_-/v/v/v/v_files/v_files="_-v_files/v_-v_files/v_files/v_files/v_files/v_ski_ski_-v_files/v_-v_files/v_files/v_files/v_files/v_ski_files/v_ski_-
    完工:"./items/items.c"

    生成文件:"./FFT.c"
    调用:C2000编译器
    "C:/ti/ccs1110/CCS/tools/compiler/ti-CGT-C2000_21.6.0.LTS/bin/cl2000"-v28 -ml -mt -CLA_support=cl1 -fpute_support=fpu32 --TccMU_support=tmudx0-VCG_support=vcu2 -Ooff -_span_ski="-_span__skib_ski_-__ski_ski_ski_-/v/v_ski="-_files/v_files/v_ski_ski_ski_ski_ski="-/v/v/v_files/v/v_ski_ski_ski_ski_-/v/v/v/v_files/v_files="_-v_files/v_-v_files/v_files/v_files/v_files/v_ski_ski_-v_files/v_-v_files/v_files/v_files/v_files/v_ski_files/v_ski_-
    "../FFT.c",第88行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第88行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第88行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第88行(列 60):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第88行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第88行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第88行(列 建议3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 60):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第91行(列 建议3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 60):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第95行(列 建议3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 34):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 60):建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 建议#3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    "../FFT.c",第98行(列 建议3195-D:(性能) EABI 双精度为64位,而 COFF 为32位。 考虑将双倍换为浮动,以提高 FPU32模式下的性能。
    完工建筑:"./FFT.c"

    生成文件:"./main.c"
    调用:C2000编译器
    "C:/ti/ccs1110/CCS/tools/compiler/ti-CGT-C2000_21.6.0.LTS/bin/cl2000"-v28 -ml -mt -CLA_support=cl1 -fpute_support=fpu32 --TccMU_support=tmudx0-VCG_support=vcu2 -Ooff -_span_ski="-_span__skib_ski_-__ski_ski_ski_-/v/v_ski="-_files/v_files/v_ski_ski_ski_ski_ski="-/v/v/v_files/v/v_ski_ski_ski_ski_-/v/v/v/v_files/v_files="_-v_files/v_-v_files/v_files/v_files/v_files/v_ski_ski_-v_files/v_-v_files/v_files/v_files/v_files/v_ski_files/v_ski_-
    完工建筑:“../main.c”

    构建目标:“ADC_EX11_MULTIPLE_SOC_ePWM.OUT”
    调用:C2000链接器
    c:/ti/ccs1110/cs/tools/compiler/ti-CGT-C2000_21.6.0.LTS/bin/cl2000"-v28 -ml -mt -CLA_support=cl1 -fput_support=fpu32 --TMU_support=tmu21.6 0-VCG_support=vcu2 -off-oad_support/file-dice-v-dic_ex-dic_ex-dic-v-3v-v-v-v-dcp_diag_ex-v-v-v-v-v-v-v-v-v-v-dic-v-v-v-v-v-v-v-dic-v-v-v-v-v-cex-v-dic-v-v-v-v-v-v-v-v-v-v-v-v-v-dic-dic-v-v-v-v-v-v-v-v-v-v-v-v-v-v-v-cex-v-dic-v-v-v-v-
    <linking>
    "./28370x_flash_lnk_CPU1.cmd",第78行:错误#10099-D:程序无法装入可用内存,或者该部分包含一个呼叫站点,该站点需要无法为本节生成的蹦床。对“.cinit”大小0x1d 页0进行对齐/阻塞的放置失败。 可用内存范围:
    FLASHB 尺寸:0x2000未使用:0x0最大孔:0x0
    错误#10010:链接过程中遇到错误;未构建“ADC_EX11_MULTIPLE_SOC_ePWM.OUT”

    >>编译失败
    Makefile:151:目标'ADC_ex11_MULTIPLE_SOC_ePWM.OUT 的配方失败
    gmake [1]:***[ADC_ex11_MULTIPLE_SOC_ePWM.输出]错误1
    Makefile:147:目标“全部”的配方失败
    gmake:***[所有]错误2.

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


    我认为问题是我打电话给使用64位 FP 号码的 sin (x),cos (x)和 atan (x)。 如果我修改了对 sinf (x),cosf (x),atanf (x)的调用,则错误消失。 但我必须知道如何对大于8192字节闪存 段的应用程序进行编程。 有趣的是:这个 MCU 有1MB 的闪存。 发生错误时的内存分配:

    当我使用32但 sinf(x)函数时,内存分配为:

    感谢你的帮助。

    路易

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

    路易

    从错误中,“.cinit”部分的放置失败。  

    请更新链接器命令文件 2837xD_FLASH_lnk_CPU1.cmd 文件,以更新“.init”行,如下所示

    电影        :>> FLASHB | FLASHC  页面=0,对齐(8)

    这将指示编译器使用 FlashB 和 FlashC 区域分配本节。

    更新此文件后,请告诉我们您是否能够解决此问题。

    此致

    西达尔斯

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

    您好 ,Siddharth,

    我不小心按下了“这解决了我的问题”按钮,但我无法撤消。

    此答案无法解决我的问题,因为在修改后,我收到一条令人发指的消息:“...不允许将此部分拆分...”

    路易

    PS:如何从您的答案中删除“已解决”?

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

    路易

    某些部分必须在内存中保持连续,并且不能拆分。 看起来像电影是其中之一。  

    您可以为此部分创建组合内存范围(FlashA 和 FlashB)  

    FLASHA_B       :原点= 0x080002,长度= 0x003FFE /*片上闪存*/

    FLASHC:原点= 0x084000,长度= 0x002000 /*片上闪存*/

    然后为.cinit 指定相同的名称

    电影        :> FLASHA_B   页面=0,对齐(8)

    自从 FlashB 组合后,您必须更新链接程序命令文件,才能将 FlashB 更改为其它闪存区域。

    此致

    西达尔斯

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

    您好 ,Siddharth,

    更糟糕的是:

     

    错误,警告:

    链接过程中遇到#10010错误;“ADC_EX11_MULTIPLE_SOC_ePWM.OUT”未生成 ADC_EX11_MULTIPLE_SOC_ePWM C/C++问题
    a href="file:/C:/ti/ccs1110/CCs/tools/compiler/dMED/HTML/10099.html">#10099-D</A>程序将不能装入可用内存,或者该部分包含一个需要无法生成的蹦床的调用站点。运行定位/阻塞的 PWM 无法用于截面""_swif__crad__span_n尺寸 为#2894_0_span_c_nx 的整数组
    a href="file:/C:/ti/cccs1110/CCS/tools/compiler/dMED/HTML/10099.html">#10099-D</A>程序将无法放入可用内存,或者该部分包含一个需要无法生成的蹦床的呼叫站点。运行定位/阻塞的 PWM 定位无法用于交换机型号为“_swif_line_sp_0+cpd_spx”的 sw_d_spx
    gmake:***[All]错误2 ADC_ex11_MULTIPLE_SOC_ePWM C/C++问题
    gmake [1]:***[ADC_ex11_MULTIPLE_SOC_ePWM.输出]错误1 ADC_ex11_MULTIPLE_SOC_ePWM C/C++问题
    未找到#10097内存范围:FLASHB 位于第0 2837xD_FLASH_lnk_CPU1.cmd /ADC_ex11_MULTIPLE_SOC_ePWM 第86行 C/C++问题
    未找到#10097内存范围:FLASHB 位于第0 2837xD_FLASH _Lnk_CPU1.cmd /ADC_ex11_MULTIPLE_SOC_ePWM 90 C/C++行问题
    未找到#10097内存范围:FLASHB 位于第0 2837xD_FLASH _Lnk_CPU1.cmd /ADC_ex11_MULTIPLE_SOC_ePWM 第94行 C/C++问题

    请先测试您的建议吗? 谢谢!

    我不知道为什么程序员应该编写链接器命令文件。 我有包含54个文件的应用程序,其大小不超过30KB,我无法将其闪存到包含1MB 闪存内存的 MCU 中? 如果将起始地址0x080000减至地址0x0C00000 = 0x040000 =约262KB。 闪存的3/4在哪里?

    路易

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

    路易

    我已经提到,由于 FlashB 将被组合使用,您必须更新链接程序命令文件才能将 FlashB 更改为其他闪存区域。

    如果您看到该错误,它会显示“未找到内存范围:FLASHB”,因为它不再存在。

    请尝试使用附加的链接器命令文件  

    /CFS 文件/__key/communityserver-discussion-components-files/171/28370x_5F00_flash_5F00_lnk_5F00_CPU1.cmd

    此致

    西达尔斯

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

    您好 ,Siddharth,

    我觉得这个文件还可以,没有错误,但是 FLASHC =8192 (100%)

    随着应用程序的增长,我应该修改链接器文件吗? 我的意思是应该加上当前未使用的闪存 G/H/I/J..N 段,如下所示:

    .text               : >> FLASHC | FLASHD | FLASHE | FLASHF | FLASHG |FLASHH |FLASHI     PAGE = 0, ALIGN(8)

    问题:

    • F23379D 具有1MB 闪存,但 CMD 文件中仅定义260KB。 为什么?  
    • 在发送新的 CMD 文件之前,我在.cinit:.cinit :> FLASHA_E   page =0,align(8)中将原始文件修改为 FLASHE。 它也解决了这个问题。 为什么?

    非常感谢你的帮助。

    路易

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

    路易

    1.是的, 随着程序/代码大小的增加,您需要分配当前未使用的其他内存区域

    2.请参阅 存映射的数据表。   每个 CPU 都有自己的闪存库[256KW],每个设备的总闪存为512KW

    3. FLASHE 的长度为0x8000,可能已经容纳了整个.cinit 部分,因此可能已经解决了这个问题。 FlashA 的长度仅为0x2000。

    此致

    西达尔斯

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

    您好 ,Siddharth,

    谢谢,很清楚。 感谢你的帮助。

    此致,
    路易