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.

[参考译文] TMS320F28335:F28335.cmd、.ebss 存储器、Simulink

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1060847/tms320f28335-f28335-cmd-ebss-memory-simulink

器件型号:TMS320F28335

大家好、我将 Simulink 和 F28335实验套件用于 PWM。 我使用了一个非常简单的脉冲块 、然后将其下载到实验套件中、它工作正常。

但是、当我将 svpwm 操作与许多块一起使用时、  


"C:/ProgramData/MATLAB/SupportPackages/R2021A/toolbox/target/supportpackages/tic2000/src/c28335.cmd"、第39行:错误:
程序不能放入可用的存储器中、或者该段包含调用
需要无法为此段生成的 trampoline 的站点。
".ebss"大小段的对齐/分块运行放置失败
0x24e10第1页。 可用存储器范围:
RAMLDATA 大小:0x4000未使用:0x4000最大孔:0x4000
错误:链接过程中遇到错误;
"./SVPWM_Simulink_talo_z_source_v2_F28335.out"未构建
>>编译失败
Gmake:***[./SVPWM_Simulink_准 离子_z_source_v2_F28335.out]错误1
C:\Users\User\AppData\Local\Temp\SVPWM_Simulink__tase_v2_F28335_ERT_RTW>回显 make 命令返回错误2
make 命令返回错误2
C:\Users\User\AppData\Local\Temp\SVPWM_Simulink__tase_v2_F28335_ERT_RTW>退出/B 1.
### SVPWM_Simulink_准_z_source_v2_F28335的构建过程因错误而中止。

在链接过程中、我遇到错误

如果您能在这里为我提供帮助、我将不胜感激。 (我在论坛中搜索、不确定我可以做什么或怎么做、我无法打开 processors.wiki.ti.com 网站)

提前感谢!

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

    您好!

    该错误表明您要在微控制器上加载的程序太大。 因此、可能有太多的块。 将微控制器上加载的文件大小与存储器大小进行比较。 可能有些阵列太长、因此它们不适合 RAM 部分。

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

    如何解决此误差? 更改我的设计? 在论坛中、一些帖子中提到了更改内存。 但无法理解它们的方法。 我只将 PWM 信号下载到微控制器、而不是整个系统唯一的信号。 我还使用从闪存引导选项。

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

    我的 c28335.cmd 文件、如何通过此命令更改内存?

    存储器

    第0页:
    BEGINRAM:origin=0x0、length=0x2
    RAMM0:origin=0x2、length=0x3fe
    OTP:origin=0x380400、length=0x400
    闪存:origin=0x300000、length=0x3fff6
    BEGINFLASH:origin=0x33fff6、length=0x2
    csm_PWL:origin=0x3f7ff8、length=0x8
    IQTABLES:origin=0x3fe000、length=bb50
    IQTABLES2:origin=0x3feb50、length=0x8c
    FPUTABLES:origin=0x3febdc、length=0x6a0
    ROM:origin=0x3ff27c、length=0xd44
    复位:origin=0x3fffc0、length=0x2
    向量:origin=0x3fffc2、length=0x3E
    #if boot_from 闪存
    RAMLPRG:origin=0x8000、length=0x4000
    其他
    RAMLPRG:origin=0x8000、length=0x5000
    #endif
    ADC_CAL:origin=0x380080、length=0x9
    ZONE7P:origin=0x200000、length=0x10000
    第1页:
    #if boot_from 闪存
    RAMLDATA:origin=0xc000、length=0x4000
    其他
    RAMLDATA:origin=0xd000、length=0x3000
    #endif
    RAMM1:origin=0x400、length=0x400
    ZONE7D:origin=0x210000、length=0x10000

    #if boot_from 闪存
    部分

    向量:load = 0x000000000
    .text:> FLASH、PAGE = 0
    .switch:> FLASH、PAGE = 0
    .bss:> RAMLDATA、PAGE = 1
    .ebss:> RAMLDATA、PAGE = 1
    .far:> RAMLPRG、PAGE = 0
    .cinit:> FLASH、PAGE = 0
    .pinit:> FLASH、PAGE = 0
    .const:> FLASH、PAGE = 0
    econst:> FLASH、PAGE = 0
    .reset:> RESET、PAGE = 0、TYPE = DSECT
    .data:> RAMLDATA、PAGE = 1
    .cio:> RAMLPRG、page = 0
    .sysmem:> RAMLDATA、PAGE = 1
    .esysmem:> RAMLDATA、PAGE = 1
    .stack:>RAMM1、PAGE = 1
    .RTDX_TEXT:> FLASH、PAGE = 0
    .RTDX_DATA:> RAMLDATA、PAGE = 1
    IQMath:> FLASH、PAGE = 0
    codestart:> BEGINFLASH、PAGE = 0
    csmpasswds:>csm_PWL、page = 0
    csm_rsvd:>RAMM0、page = 0
    ramfuncs:load = flash、
    运行= RAMLPRG、
    load_start (_RamfuncsLoadStart)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    PAGE = 0
    ADC_cal:> ADC_CAL、PAGE = 0、TYPE =空载
    external_ram:> ZONE7D、page = 1
    IQmathTables:> IQTABLES、PAGE = 0、TYPE = NOLOAD
    IQmathTables2:> IQTABLES2、PAGE = 0、TYPE = NOLOAD
    FPUmathTables:> FPUTABLES、PAGE = 0、TYPE = NOLOAD

    其他
    部分

    向量:load = 0x000000000
    .text:>> RAMLPRG | RAMM0、PAGE = 0
    .switch:>> RAMLPRG | RAMM0、PAGE = 0
    .bss:> RAMLDATA、PAGE = 1
    .ebss:> RAMLDATA、PAGE = 1
    .far:>> RAMLPRG | RAMM0、PAGE = 0
    .cinit:> RAMLPRG、page = 0
    .pinit:>> RAMLPRG | RAMM0、PAGE = 0
    .const:> RAMLDATA、PAGE = 1
    econst:> RAMLDATA、PAGE = 1
    .reset:> RESET、PAGE = 0、TYPE = DSECT
    .data:> RAMLDATA、PAGE = 1
    .cio:>> RAMLPRG | RAMM0、PAGE = 0
    .sysmem:> RAMLDATA、PAGE = 1
    .esysmem:> RAMLDATA、PAGE = 1
    .stack:>RAMM1、PAGE = 1
    .RTDX_TEXT:>> RAMLPRG | RAMM0、PAGE = 0
    .RTDX_DATA:> RAMLDATA、PAGE = 1
    IQMath:>> RAMLPRG | RAMM0、PAGE = 0
    codestart:> BEGINRAM、PAGE = 0
    csmpasswds:>csm_PWL、page = 0
    csm_rsvd:>> RAMLPRG | RAMM0、page = 0
    ramfuncs:>RAMLPRG、page = 0
    ADC_cal:> ADC_CAL、PAGE = 0、TYPE =空载
    external_ram:> ZONE7D、page = 1
    IQmathTables:> IQTABLES,PAGE = 0,TYPE = NOLOAD
    IQmathTables2:> IQTABLES2、PAGE = 0、TYPE = NOLOAD
    FPUmathTables:> FPUTABLES,PAGE = 0,TYPE = NOLOAD

    #endif

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

    您好!

    请查看此链接。

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

    它介绍了链接器命令文件。 您的.ebss 段看起来太大、因此您可能需要替换不同段中的一些变量/数据。

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

     很抱歉、我以前看到过这种情况、不确定如何实现链接器文件。 我尝试   ebss:> RAMLDATA I RAM1、 PAGE = 1或

    EBSS:> ZONE7D、 PAGE = 1

    我得到了相同的误差。  

    存储器

    第0页:
    BEGINRAM:origin=0x0、length=0x2
    RAMM0:origin=0x2、length=0x3fe
    OTP:origin=0x380400、length=0x400
    闪存:origin=0x300000、length=0x3fff6
    BEGINFLASH:origin=0x33fff6、length=0x2
    csm_PWL:origin=0x3f7ff8、length=0x8
    IQTABLES:origin=0x3fe000、length=bb50
    IQTABLES2:origin=0x3feb50、length=0x8c
    FPUTABLES:origin=0x3febdc、length=0x6a0
    ROM:origin=0x3ff27c、length=0xd44
    复位:origin=0x3fffc0、length=0x2
    向量:origin=0x3fffc2、length=0x3E
    #if boot_from 闪存
    RAMLPRG:origin=0x8000、length=0x4000
    其他
    RAMLPRG:origin=0x8000、length=0x5000
    #endif
    ADC_CAL:origin=0x380080、length=0x9
    ZONE7P:origin=0x200000、length=0x10000
    第1页:
    #if boot_from 闪存
    RAMLDATA:origin=0xc000、length=0x30000
    其他
    RAMLDATA:origin=0xd000、length=0x3000
    #endif
    RAMM1:origin=0x400、length=0x400
    ZONE7D:origin=0x210000、length=0x10000

    #if boot_from 闪存

    我将 RAMLDATA 的长度4000更改为30000、现在没有出现任何错误、但我认为它超出了大小。 有人知道 RAMLDATA 的最大长度值吗?

    RAMLDATA:origin=0xc000、length=0x30000

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

    您好!

    我已联系 MathWorks 团队建议如何解决此问题。 我们希望在星期一之前得到答复。

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

    非常感谢。

    在我的研究中、大多数将 Simulink 与 F28335配合使用 的人都面临着这个问题。 其中一些解决方案只是通过从闪存启动来解决问题。 如果数据大于闪存的长度、我想需要不同的解决方案。

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

    Cagdas、

    现在、我已经向 MathWorks 团队发送了提醒。 我们应该很快得到回应。

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

    感谢你的帮助

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

    MathWorks 团队是否有任何消息?

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

    您好!

    我已多次联系 MathWorks 团队。 我无法控制团队。 此时、最好直接在 MathWorks 论坛上发布问题。 对于不便和延迟、我深表歉意。

    https://www.mathworks.com/matlabcentral/?s_tid=gn_mlc

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

    您好、Cagdas、

    根据 F28335的数据表、L0到 L7 SARAM 的最大长度为0x8000、 其中 RAMLDATA 为0x4000 、 RAMLPRG 分配为0x4000。   RAMLDATA 的0x30000长度太大、无法容纳。 您可能需要减小.ebss 段的变量。

    此致、  
    RAM ALA。

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

    谢谢、我如何将 ramldata 的长度从4000增加到8000?

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

    谢谢。  

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

    您是否能够取得进展或仍需要帮助?

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

    我将重新考虑我的 Simulink 设计并与 ePWM 块配合使用(在我的 PWM 信号直接进入数字输出之前)。 我想我的 Simulink 设计需要对微控制器进行一些调整。  

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

    好的。 如果您需要进一步的帮助、请告知我们。 同时、我将该主题标记为"等待客户"。  

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

    您好!

    我们现在可以关闭这个线程吗?