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.

[参考译文] CCS/TMS320F28377S:TMS320F28377S

Guru**** 2482225 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/751904/ccs-tms320f28377s-tms320f28377s

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

工具/软件:Code Composer Studio

你(们)好

我收到此错误:


****为项目160kHz_One_input_two_out_SecondLPF 构建配置 CPU1_RAM ****

"C:\\ti\\ccsv8\\utils\\bin\\gmake"-k all

构建文件:"../160kHz_one_input_two_out_SecondLPF.c"
调用:C2000编译器
"c:/ti/ccsv8/tools/compiler/ti-cgt-c2000_18.1.2.LTS/bin/cl2000 /ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/include "-v28 -ml -mt --cla_support=cla1 -float_support=fpu32 -tmu_support=tmu0 -include_path="C:/ti/ccsv8/tools/compiler/ti-cgt-c2000_18.1.2.LTS/include -include_path="C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/headers/include:-include_path="C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/examples/cpu1/cla_adc_fir32/cpu01 -include_suppression_suppression_raid_diag=100k_suppress-f_inu1.368kHz -out_supu_suppress-out_input_suppress-f_guidag_guid_ine-f_ine_d_idag_ination_diag_intran.ap_guiag_ination=f_suppress-f_inu_inu_sup源 代码-f_suppress-f_d_suppress-f_d_suppress-pf-nature_suppress-pf-nature_suppress-pf-nature_guidag_inu.ap_d_guidep-f_ine_ination_diag_sup
完成构建:"../160kHz_one_input_two_out_SecondLPF.c"

构建目标:"160kHz_one_input_two_out_SecondLPF.out"
调用:C2000链接器
"c:/ti/ccsv8/tools/compiler/ti-cgt-c2000_18.1.2.LTS/bin/cl2000 /ti/ccsv8/tools/compiler/ti-cgt-c2000_18.1.2.LTS/lib /ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/cmd -v28 -ml -mt --cla_support=cla1 -float_support=fpu32 -tmu_support=tmu0 -define=_LAUNCHXL_F28377S -define=cp1 -g-float_suppress=10063 -tmu_support/capsit_express=10068 -express-cn_mode_info_ine_display_express-file_info-mode_info-mode_info_ine_infote_infote_infote_info-mode_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_infote_/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/headers/cmd /ti/ccsv8/tools/compiler/ti-cgt-c2000_18.1.2.LTS/include

"C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/cmd/2837xS_RAM_CLA_lnk_cpu1.cmd "、第73行:错误#10099-D:程序不能放入可用内存中。 对齐/分块放置在".text"大小为0x1282页0的位置失败。 可用存储器范围:
RAMM0大小:0x2DE 未使用:0x0最大空洞:0x0
RAMD0大小:0x800未使用:0xd 最大孔:0xd
RAMD1大小:0x800未使用:0x12最大孔:0x12
错误#10010:链接期间遇到错误;未构建"160kHz_One_input_two_out_SecondLPF.out"

>>编译失败
Makefile:153:目标'160kHz_one_input_two_out_SecondLPF.out'的配方失败
Gmake:***[160kHz_One_input_two_out_SecondLPF.out]错误1.
gmake:目标"全部"不会由于错误而重新生成。

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

如何确定哪个器件不适合 ".text"段大小0x1282页0?

如果我查看链接器存储器映射、我有此行

".text.1  0  00000000  00000037   分配失败"

查看/内存分配给我一条红线、其中有55个数字。

在使用 CLA 之前、我使用了所有默认设置、所有程序都适用。 但是、对于 CLA、我发现另外几行代码会导致此错误。 我仔细看了一下  

C28x 编译器-了解链接

但仍然很难理解代码的哪一部分会转到何处、如何执行  
我控制它。 .spru513指出.text 段包含 exe 代码。 如何确定我超出限制的字节数?

谢谢 Vadim
 

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

    您能否提供有关您对工作中的更改的更多详细信息?

    "在使用 CLA 之前、我使用了所有默认设置、所有程序都适用。 但是、对于 CLA、我发现另外几行代码会导致此错误"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    EPwm7Regs.CMPA.bit.CMPA = voltFilt; //此行正在工作
    EPwm7Regs.CMPA.bit.CMPA = voltFilt*SineLUT[a]+512;//此行会导致错误
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    voltFilt 由 CLA 使用、如第一个32示例中所示
    ****


    MF32TOUI16 MR2、MR3;返回到 uint16值
    MMOV16 @_voltFilt、MR2 ;输出
    MUI16TOF32 MR0、@μ_AdcaResultRegs.ADCRESULT0;读取 ADCRESULT0并转换为浮点
    MMOV32 μ@ X0、MR0
    MSTOP ;结束任务
    Cla1T7End:
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可能需要通过修改链接器 cmd 文件中的以下行来增加分配给.text 段的内存。
    文本 :>> RAMM0 | RAMD0 | RAMD1
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Baskaran、您好!
    我使用的是具有此行的 c2000ware 中的2837xS_RAM_CLA_lnk_CPU1.cmd。
    ***
    /如果使用、用户必须在项目链接器设置中定义 CLA_C
    // CLA C 编译器
    //项目属性-> C2000链接器->高级选项->命令文件
    //预处理->--define
    #ifdef CLA_C
    //为将要使用的 CLA 暂存区定义大小
    //由 CLA 编译器生成局部符号和 temps
    //还强制引用标记的特殊符号
    //暂存区是。
    CLA_ScratchPad_size = 0x100;
    --undef_sym=__cla_scratchpad_end
    --undef_sym=__cla_scratchpad_start
    #endif //cla_C

    存储器

    第0页:
    /* begin 用于"引导至 SARAM"引导加载程序模式*/

    开始:origin = 0x000000,length = 0x000002
    RAMM0:origin = 0x000122、length = 0x0002DE
    RAMD0:origin = 0x00B000、length = 0x000800
    RAMD1 :origin = 0x00B800,length = 0x000800
    /* RAMLS4:origin = 0x00A000、length = 0x000800 */
    /* RAMLS5 :origin = 0x00A800、length = 0x000800 */
    RAMLS4_5 :origin = 0x00A000、length = 0x001000
    复位:origin = 0x3FFFC0,length = 0x000002

    第1页:

    BOOT_RSVD :origin = 0x000002、length = 0x000120 // M0的一部分,引导 ROM 将此用于堆栈*/
    RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */

    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:origin = 0x008800,length = 0x000800
    RAMLS2:origin = 0x009000、length = 0x000800
    RAMLS3:origin = 0x009800,length = 0x000800

    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 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
    RAMGS13. :origin = 0x019000、length = 0x001000 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
    RAMGS14 :origin = 0x01A000、length = 0x001000 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
    RAMGS15 :origin = 0x01B000、length = 0x001000 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *

    CANA_MSG_RAM :origin = 0x049000、length = 0x000800
    CANB_MSG_RAM :origin = 0x04B000、length = 0x000800

    CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
    CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080


    部分

    codestart :>开始, PAGE = 0
    .text :>> RAMM0 | RAMD0 | RAMD1,PAGE = 0
    .cinit :> RAMM0, PAGE = 0
    .pinit :> RAMM0, PAGE = 0
    切换 :> RAMM0, PAGE = 0
    复位 :>重置, PAGE = 0、TYPE = DSECT /*未使用、*/

    堆栈 :> RAMM1, PAGE = 1.
    ebss :> RAMLS2,PAGE = 1
    .econst :> RAMLS3,页= 1
    等斯梅姆 :> RAMLS3,页= 1
    filter_RegsFile:> RAMGS0,PAGE = 1

    /* CLA 特定部分*/
    Cla1Prog :> RAMLS4_5,PAGE=0

    CLADataLS0:>RAMLS0,PAGE=1
    CLADataLS1:> RAMLS1,PAGE=1

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.

    /*以下部分定义适用于 SDFM 示例*/
    filter1_RegsFile:> RAMGS1,PAGE = 1,fill=0x1111
    Filter2_RegsFile:> RAMGS2,PAGE = 1,fill=0x2222
    Filter3_RegsFile:> RAMGS3,PAGE = 1,fill=0x3333
    Filter4_RegsFile:> RAMGS4,PAGE = 1,fill=0x4444

    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>=15009000
    .TI.ramfunc:{}>RAMM0, PAGE = 0
    其他
    ramfuncs:>RAMM0 PAGE = 0
    #endif
    #endif

    #ifdef CLA_C
    /* CLA C 编译器段*/
    //
    //必须被分配给 CLA 具有写入访问权限的内存
    //
    CLAscratch :
    {*。obj (CLAscratch)
    。 += CLA_ScratchPad_size;
    *。obj (CLAscratch_end)}> RAMLS1、PAGE = 1

    暂存区 :> RAMLS1、 PAGE = 1.
    .bss_cla:> RAMLS1、 PAGE = 1.
    .const_cla:> RAMLS1、 PAGE = 1.
    #endif //cla_C


    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *
    *****
    谢谢 Vadim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    BTW 当我切换到2837xS_FLASH_CLA_lnk_CPU1.cmd 时、它完成而没有任何错误。
    谢谢 Vadim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是闪存文件
    *****
    //如果使用、用户必须在项目链接器设置中定义 CLA_C
    // CLA C 编译器
    //项目属性-> C2000链接器->高级选项->命令文件
    //预处理->--define
    #ifdef CLA_C
    //为将要使用的 CLA 暂存区定义大小
    //由 CLA 编译器生成局部符号和 temps
    //还强制引用标记的特殊符号
    //暂存区是。
    CLA_ScratchPad_size = 0x100;
    --undef_sym=__cla_scratchpad_end
    --undef_sym=__cla_scratchpad_start
    #endif //cla_C

    存储器

    第0页:
    /* begin 用于"引导至 SARAM"引导加载程序模式*/

    开始:origin = 0x000000,length = 0x000002
    RAMM0:origin = 0x000122、length = 0x0002DE
    RAMD0:origin = 0x00B000、length = 0x000800
    RAMD1 :origin = 0x00B800,length = 0x000800
    /* RAMLS4:origin = 0x00A000、length = 0x000800 */
    /* RAMLS5 :origin = 0x00A800、length = 0x000800 */
    RAMLS4_5 :origin = 0x00A000、length = 0x001000
    复位:origin = 0x3FFFC0,length = 0x000002

    第1页:

    BOOT_RSVD :origin = 0x000002、length = 0x000120 // M0的一部分,引导 ROM 将此用于堆栈*/
    RAMM1 :origin = 0x000400、length = 0x000400 /*片上 RAM 块 M1 */

    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:origin = 0x008800,length = 0x000800
    RAMLS2:origin = 0x009000、length = 0x000800
    RAMLS3:origin = 0x009800,length = 0x000800

    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 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
    RAMGS13. :origin = 0x019000、length = 0x001000 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
    RAMGS14 :origin = 0x01A000、length = 0x001000 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *
    RAMGS15 :origin = 0x01B000、length = 0x001000 /*仅在、F28377S、F28375S 器件上可用。 移除其他设备上的线路。 *

    EMIF1_CS0n :origin = 0x8000000、length = 0x10000000
    EMIF1_CS2n :origin = 0x00100000、length = 0x00200000
    EMIF1_CS3n :origin = 0x00300000、length = 0x00080000
    EMIF1_CS4n :origin = 0x00380000、length = 0x00060000
    EMIF2_CS0n :origin = 0x90000000、length = 0x10000000
    EMIF2_CS2n :origin = 0x00002000、length = 0x00001000

    CANA_MSG_RAM :origin = 0x049000、length = 0x000800
    CANB_MSG_RAM :origin = 0x04B000、length = 0x000800

    CLA1_MSGRAMLOW:origin = 0x001480,length = 0x000080
    CLA1_MSGRAMHIGH:origin = 0x001500,length = 0x000080


    部分

    codestart :>开始, PAGE = 0
    .text :>> RAMM0 | RAMD0 | RAMD1,PAGE = 0
    .cinit :> RAMM0, PAGE = 0
    .pinit :> RAMM0, PAGE = 0
    切换 :> RAMM0, PAGE = 0
    复位 :>重置, PAGE = 0、TYPE = DSECT /*未使用、*/

    堆栈 :> RAMM1, PAGE = 1.
    ebss :> RAMLS2, PAGE = 1.
    .econst :> RAMLS3, PAGE = 1.
    等斯梅姆 :> RAMLS3, PAGE = 1.
    filter_RegsFile:> RAMGS0,PAGE = 1.

    em1_cs0 :> EMIF1_CS0n,PAGE = 1
    em1_CS2 :> EMIF1_CS2n,PAGE = 1
    em1_CS3 :> EMIF1_CS3n,PAGE = 1
    em1_CS4 :> EMIF1_CS4n,PAGE = 1
    em2_cs0 :> EMIF2_CS0n,PAGE = 1
    EM2_CS2 :> EMIF2_CS2n,PAGE = 1

    /* CLA 特定部分*/
    Cla1Prog :> RAMLS4_5,PAGE=0

    CLADataLS0:>RAMLS0,PAGE=1
    CLADataLS1:> RAMLS1,PAGE=1

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.

    /*以下部分定义适用于 SDFM 示例*/
    filter1_RegsFile:> RAMGS1,PAGE = 1,fill=0x1111
    Filter2_RegsFile:> RAMGS2,PAGE = 1,fill=0x2222
    Filter3_RegsFile:> RAMGS3,PAGE = 1,fill=0x3333
    Filter4_RegsFile:> RAMGS4,PAGE = 1,fill=0x4444

    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>=15009000
    .TI.ramfunc:{}>RAMM0, PAGE = 0
    其他
    ramfuncs:>RAMM0 PAGE = 0
    #endif
    #endif

    #ifdef CLA_C
    /* CLA C 编译器段*/
    //
    //必须被分配给 CLA 具有写入访问权限的内存
    //
    CLAscratch :
    {*。obj (CLAscratch)
    。 += CLA_ScratchPad_size;
    *。obj (CLAscratch_end)}> RAMLS1、PAGE = 1

    暂存区 :> RAMLS1、 PAGE = 1.
    .bss_cla:> RAMLS1、 PAGE = 1.
    .const_cla:> RAMLS1、 PAGE = 1.
    #endif //cla_C


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

    我看不到您共享的 RAM 和闪存链接器文件之间有太大差异。  

    此外、我还看到闪存链接器命令文件不同于 C2000Ware 中发布的命令文件。

    请使用 C2000Ware 中的原样版本重新检查。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Baskaran、您好!
    闪存工作正常、我没有修改.cmd 文件。 我需要使其在 RAM 中工作、但 C2000ware 中的 RAM.cmd 文件不起作用。 是否可以确定导致内存不足错误的原因? 我有版本:8.2.0.00007、C2000编译器没有进一步的更新
    谢谢 Vadim
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您需要增加分配给.text 段的内存。

    在闪存中、cmd 文件0x2000被分配给 FlashB (其中.text 被放置)、在这里、与 RAM 中一样、cmd 文件.text 被放置在 RAM 中。

    .text:>> RAMM0 | RAMD0 | RAMD1

    您需要将存储器增加到.text。 类似的东西

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

    Baskaran、您好!

    我试过它。

    *****


    "C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/cmd/2837xS_RAM_LARGE_CLA_lnk_cpu1.cmd "、第74行:警告#10097:未找到内存范围:RAMLS0、位于第0页
    "C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/cmd/2837xS_RAM_LARGE_CLA_lnk_cpu1.cmd "、第74行:警告#10097:未找到内存范围:RAMLS1、位于第0页
    "C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/cmd/2837xS_RAM_LARGE_CLA_lnk_cpu1.cmd "、第74行:警告#10097:未找到内存范围:RAMLS2、位于第0页
    "C:/ti/C2000Ware_1_00_05_00_Software/device_support/f2837xs/common/cmd/2837xS_RAM_LARGE_CLA_lnk_cpu1.cmd "、第74行:错误#10099-D:程序不能放入可用内存中。 对齐/分块放置在".text"段大小0x12b0页0中失败。 可用存储器范围:
    RAMM0大小:0x2DE 未使用:0x0最大空洞:0x0
    RAMD0大小:0x800未使用:0x4最大孔:0x4
    RAMD1大小:0x800未使用:0x11最大孔:0x11
    错误#10010:链接期间遇到错误;未构建"160kHz_One_input_two_out_SecondLPF.out"

    谢谢 Vadim