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/LAUNCHXL-F28027F:CCS 中的链接器垃圾收集器?

Guru**** 2211160 points
Other Parts Discussed in Thread: LAUNCHXL-F28027F, TMS320F280200, TMS320F28027F, MOTORWARE, C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/685102/ccs-launchxl-f28027f-linker-garbage-collector-in-ccs

器件型号:LAUNCHXL-F28027F
主题中讨论的其他器件: TMS320F280200TMS320F28027FMOTORWAREC2000WARE

工具/软件:Code Composer Studio

你(们)好

我正在尝试调整(Arduino u8g2库至 F28027F)

https://github.com/blotfi/c2000_u8g2

原始库: https://github.com/olikraus/u8g2

它会编译、但我遇到的内存问题不够! (请访问 e2e.ti.com/.../oled27f.txt)

因此、olikraus 建议使用所谓的链接器垃圾收集器

https://github.com/olikraus/u8g2/issues/549#issuecomment-385230689

您能在 CCS 中展示一下这个选项吗

谢谢

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

    [引用 USER="Lotfi]SO、olikraus 建议使用所谓的链接器垃圾收集器[/quot] CCS 下的等效选项是将"将每个函数放在单独的子段中(--gen_func_subsections、-mo)"和"将结构和数组放在单独的子段中(--gen_data_subsections)"运行时模型选项设置为 on:

    [引用 user="Lotfi">它会编译,但我遇到的内存不足问题! (请查看(请访问该站点以查看此文件)查看链接器映射文件会遇到两个问题:

    1、已选择一个 TMS320F280200器件(8K 字的闪存和3K 字的 SARAM)、此器件的内存少于 LAUNCHXL-F28027F 上的实际 TMS320F28027F (64K 字的闪存和12K 字的 SARAM)。

    无法分配的.ebss.1段需要107274个字的 SARAM、这是 TMS320F28027F 上可用 SARAM 的8倍以上。

    因此、将 CCS 项目中的器件更正为 TMS320F28027F 并启用"链接器垃圾收集器"后、怀疑该程序不适用。

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

    谢谢
    我可以在 CCS 项目27F 中的什么位置指定?

    Arduino Nano

    闪存32k 字节(其中.5k 用于引导加载程序)
    SRAM 2k 字节 
    适合类似的计划!
    因此、有一个优化的问题

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

    CCS 项目27F 中可以在哪里指定器件?

    器件是在常规 CCS 属性中指定的。

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

    我有这个

    但它提供了您看到的地图

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

    另外,奥利克劳斯还提到:

    U8G2在很大程度上取决于链路时间优化。 这意味着将删除未使用的函数和未使用的数据对象。 在与您的环境进行链接时没有发生这种情况。
    对于 gcc、这是可用的(因此称为链接器垃圾收集器)、这也是 Arduino 环境的默认设置。  

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

    现在、通过优化级别4来调整大小(0)、而不是速度

    我有更好的结果,它只符合:

    #10247-D 在没有 SECTIONS 规范的情况下创建输出段".CIO"已定义27f C/C++问题

    秘书长的报告
    TMS320C2000链接器 PC v16.9.3.
    秘书长的报告
    >> 2018年4月29日20:19:26日链接

    输出文件名:
    入口点符号:"_c_int00"地址:003f76CF


    存储器配置

    名称源长度使用未使用的属性填充
    ------------ ---- ------ ---- ---- --------
    第0页:
    RAMM0 00000050 000003b0 00000004 000003ac RWIX
    OTP 003d7800 00000400 00000000 00000400 RWIX
    FLASHB 003f6000 00001000 0000010f 00000ef1 RWIX
    FLASHA 003f7000 00000f80 00000f7e 00000002 RWIX
    csm_RSVD 003f7f80 00000076 00000000 00000076 RWIX
    开始003f7ff6 00000002 00000002 00000000 RWIX
    CSM_PWL_P0 003f7ff8 00000008 00000000 00000008 RWIX
    IQTABLES 003fe000 00000b50 00000000 00000b50 RWIX
    IQTABLES2 003feb50 0000008c 00000000 0000008c RWIX
    IQTABLES3 003febdc 000000aa 00000000 000000aa RWIX
    ROM 003ff27c 00000d44 00000000 00000d44 RWIX
    重置003fffc0 00000002 00000000 00000002 RWIX
    矢量003fffc2 0000003E 00000000 0000003E RWIX

    第1页:
    BOOT_RSVD 00000000 00000050 00000000 00000050 RWIX
    RAMM1 00000400 00000400 00000400 00000000 RWIX
    DEV_EMU 00000880 00000105 00000004 00000101 RWIX
    SYS_PWR_CTL 00000985 00000003 00000003 00000000 RWIX
    FLASH_regs 00000a80 00000060 00000008 00000058 RWIX
    CSM 00000ae0 00000010 00000010 00000000 RWIX
    ADC_Result 00000b00 00000020 00000020 00000000 RWIX
    CPU_TIMER0 00000c00 00000008 00000008 00000000 RWIX
    CPU_Timer1 00000c08 00000008 00000008 00000000 RWIX
    CPU_TIMER2 00000c10 00000008 00000008 00000000 RWIX
    PIE_CTRL 00000ce0 00000020 0000001a 00000006 RWIX
    PI_VECT 00000d00 00000100 00000100 00000000 RWIX
    COMP1 00006400 00000020 00000020 00000000 RWIX
    COMP2 00006420 00000020 00000020 00000000 RWIX
    EPWM1 00006800 00000040 00000040 00000000 RWIX
    EPWM2 00006840 00000040 00000040 00000000 RWIX
    EPWM3 00006880 00000040 00000040 00000000 RWIX
    EPWM4 000068c0 00000040 00000040 00000000 RWIX
    eCAP1 00006a00 00000020 00000020 00000000 RWIX
    GPIOCTRL 00006f80 00000040 00000040 00000000 RWIX
    GPIODAT 00006fc0 00000020 00000020 00000000 RWIX
    GPIOINT 00006fe0 00000020 0000000a 00000016 RWIX
    系统00007010 00000020 0000001f 00000001 RWIX
    SPIA 00007040 00000010 00000010 00000000 RWIX
    SCIA 00007050 00000010 00000010 00000000 RWIX
    NMIINTRUPT 00007060 00000010 00000010 00000000 RWIX
    XINTRUPT 00007070 00000010 00000010 00000000 RWIX
    ADC 00007100 00000080 00000051 0000002f RWIX
    I2CA 00007900 00000040 00000022 0000001e RWIX
    RAML0 00008000 00000400 00000400 00000000 RWIX
    部件 ID 003d7fff 00000001 00000001 00000000 RWIX
    CSM_PWL 003f7ff8 00000008 00000008 00000000 RWIX


    部分分配映射

    输出属性/
    段页原点长度输入段
    ---- -------- ------ --------
    .cio 0 00000000 00000120无法分配
    .ebss.1 0 00000000 00000120分配失败
    econst.1
    0 003f6000 00000086
    003f6000 00000035 u8x8_d_ssd1306_128x64_noname.obj (.econst:.string:_u8x8_d_ssd1306_128x64_noname_init_seq$47)
    003f6035 00000001 --hole --[填充= 0]
    003f6036 00000014 u8x8_d_ssd1306_128x64_noname.obj (.econst:_u8x8_ssd1306_128x64_noname_display_info47美元)
    003f604a 00000010 (.econst)
    003f605a 0000000b (.econst:.string)
    003f6065 00000007 u8x8_d_ssd1306_128x64_noname.obj (.econst:.string:_u8x8_d_ssd1306_128x64_noname_fle0_seq$47)
    003f606c 00000007 u8x8_d_ssd1306_128x64_noname.obj (.econst:.string:_u8x8_d_ssd1306_128x64_noname_flipp1_seq$47)
    003f6073 00000005 u8x8_d_ssd1306_128x64_noname.obj (.econst:.string:_u8x8_d_ssd1306_128x64_noname_powersave0_seq$47)
    003f6078 00000005 u8x8_d_ssd1306_128x64_noname.obj (.econst:.string:_u8x8_d_ssd1306_128x64_noname_powersave1_seq$47)
    003f607d 00000001 --hole --[填充= 0]
    003f607e 00000004 u8g2_setup.obj (.econst:_u8g2_CB_r0)
    003f6082 00000004 rts2800_ml.lib:s_scalbn.obj (.econst)

    .cinit 0 003f6086 00000089
    003f6086 0000006f (.cinit)
    003f60f5 0000000e rts2800_ml.lib:exit.obj (.cinit)
    003f6103 00000005 (.cinit:_lock)
    003f6108 00000005 (.cinit:__unlock)
    003f610d 00000002 --hole --[填充= 0]

    RAMfuncs 0 003f7000 00000004运行 ADDR = 00000050
    003f7000 00000004 F2802x_usdelay.obj (ramfuncs)

    .text 0 003f7004 00000e79
    003f7004 000001a5 rts2800_ml.lib:trgdrv.obj (.text)
    003f71a9 00000107:LL_div28.obj (.text)
    .

    )
    003f7cf5 0000000e u8g2_d_setup.obj (.text:_u8g2_Setup_ssd1306_i2c_128x64_noname_1)
    003f7d03 0000000e rts2800_ml.lib:fd_sub28.obj (.text)
    003f7d11 0000000c:epilogue28.obj (.text)
    003f7d1d 0000000a u8x8_Byte.obj (.text:_u8x8_Byte_SendByte)
    003f7d27 00000009 rts2800_ml.lib:fd_否定28.obj (.text)
    003f7d30 00000008 F2802x_sysctrl.obj (.text:_DisableDog)
    003f7d38 00000008 F2802x_codestartbranch.obj (.text)
    003f7d40 00000007 u8x8_Byte.obj (.text:_u8x8_Byte_EndTransfer)
    003f7d47 00000007 u8x8_Byte.obj (.text:_u8x8_Byte_StartTransfer)
    003f7d4e 00000006 u8x8_Byte.obj (.text:_u8x8_Byte_SendBytes)
    003f7d54 00000006 u8x8_CAD.obj (.text:_u8x8_CAD_EndTransfer)
    003f7d5a 00000006 u8x8_CAD.obj (.text:_u8x8_CAD_SendArg)
    003f7d60 00000006 u8x8_CAD.obj (.text:_u8x8_CAD_SendCmd)
    003f7d66 00000006 u8x8_CAD.obj (.text:_u8x8_CAD_StartTransfer)
    003f7d6c 00000005 F2802x_defaultisr.obj (.text:_ADCINT1_ISR)
    003f7d71 00000005 F2802x_defaultisr.obj (.text:_ADCINT2_ISR)
    003f7d76 00000005 F2802x_defaultisr.obj (.text:_ADCINT3_ISR)
    003f7d7b 00000005 F2802x_defaultisr.obj (.text:_ADCINT4_ISR)
    003f7d80 00000005 F2802x_defaultisr.obj (.text:_ADCINT5_ISR)
    003f7d85 00000005 F2802x_defaultisr.obj (.text:_ADCINT6_ISR)
    003f7d8a 00000005 F2802x_defaultisr.obj (.text:_ADCINT7_ISR)
    003f7d8f 00000005 F2802x_defaultisr.obj (.text:_ADCINT8_ISR)
    003f7d94 00000005 F2802x_defaultisr.obj (.text:_ADCINT9_ISR)
    003f7d99 00000005 F2802x_defaultisr.obj (.text:_datalog_ISR)
    003f7d9e 00000005 F2802x_defaultisr.obj (.text:_ECAP1_INT_ISR)
    003f7da3 00000005 F2802x_defaultisr.obj (.text:_empty_ISR)
    003f7da8 00000005 F2802x_defaultisr.obj (.text:_EMUINT_ISR)
    003f7DAD 00000005 F2802x_defaultisr.obj (.text:_EPWM1_INT_ISR)
    003f7db2 00000005 F2802x_defaultisr.obj (.text:_EPWM1_TZINT_ISR)
    003f7db7 00000005 F2802x_defaultisr.obj (.text:_EPWM2_INT_ISR)
    003f7dbc 00000005 F2802x_defaultisr.obj (.text:_EPWM2_TZINT_ISR)
    003f7dc1 00000005 F2802x_defaultisr.obj (.text:_EPWM3_INT_ISR)
    003f7dc6 00000005 F2802x_defaultisr.obj (.text:_EPWM3_TZINT_ISR)
    003f7dcb 00000005 F2802x_defaultisr.obj (.text:_EPWM4_INT_ISR)
    003f7dd0 00000005 F2802x_defaultisr.obj (.text:_EPWM4_TZINT_ISR)
    003f7dd5 00000005 F2802x_defaultisr.obj (.text:_I2CINT1A_ISR)
    003f7dda 00000005 F2802x_defaultisr.obj (.text:_I2CINT2A_ISR)
    003f7ddf 00000005 F2802x_defaultisr.obj (.text:_illegal ISR)
    003f7de4 00000005 F2802x_defaultisr.obj (.text:_INT13_ISR)
    003f7de9 00000005 F2802x_defaultisr.obj (.text:_INT14_ISR)
    003f7dee 00000005 F2802x_defaultisr.obj (.text:_NMI_ISR)
    003f7df3 00000005 F2802x_defaultisr.obj (.text:_PIe_reserved)
    003f7df8 00000005 F2802x_defaultisr.obj (.text:_RTOSINT_ISR)
    003f7dfd 00000005 F2802x_defaultisr.obj (.text:_SCIRXINTA_ISR)
    003f7e02 00000005 F2802x_defaultisr.obj (.text:_SCITXINTA_ISR)
    003f7e07 00000005 F2802x_defaultisr.obj (.text:_SPIRXINTA_ISR)
    003f7e0c 00000005 F2802x_defaultisr.obj (.text:_SPITXINTA_ISR)
    003f7e11 00000005 F2802x_defaultisr.obj (.text:_TINT0_ISR)
    003f7e16 00000005 F2802x_defaultisr.obj (.text:_USER10_ISR)
    003f7e1b 00000005 F2802x_defaultisr.obj (.text:_USER11_ISR)
    003f7e20 00000005 F2802x_defaultisr.obj (.text:_USER12_ISR)
    003f7e25 00000005 F2802x_defaultisr.obj (.text:_User1_ISR)
    003f7e2a 00000005 F2802x_defaultisr.obj (.text:_User2_ISR)
    003f7e2f 00000005 F2802x_defaultisr.obj (.text:_User3_ISR)
    003f7e34 00000005 F2802x_defaultisr.obj (.text:_User4_ISR)
    003f7e39 00000005 F2802x_defaultisr.obj (.text:_USER5_ISR)
    003f7e3e 00000005 F2802x_defaultisr.obj (.text:_USER6_ISR)
    003f7e43 00000005 F2802x_defaultisr.obj (.text:_USER7_ISR)
    003f7e48 00000005 F2802x_defaultisr.obj (.text:_USER8_ISR)
    003f7e4d 00000005 F2802x_defaultisr.obj (.text:_USER9_ISR)
    003f7e52 00000005 F2802x_defaultisr.obj (.text:_WAKEINT_ISR)
    003f7e57 00000005 F2802x_defaultisr.obj (.text:_XINT1_ISR)
    003f7e5c 00000005 F2802x_defaultisr.obj (.text:_XINT2_ISR)
    003f7e61 00000005 F2802x_defaultisr.obj (.text:_XINT3_ISR)
    003f7e66 00000005 F2802x_defaultisr.obj (.text:_rsvd_ISR)
    003f7e6b 00000005 u8x8_CAD.obj (.text:_u8x8_CAD_SendData)
    003f7e70 00000005 u8x8_gpio.obj (.text:_u8x8_gpio_call)
    003f7e75 00000002 u8g2_font.obj (.text:_u8g2_font_calc_vref_font)
    003f7e77 00000002 u8x8_setup.obj (.text:_u8x8_dummy_CB)
    003f7e79 00000002 rts2800_ml.lib:pre_init.obj (.text)
    003f7e7b 00000001:_lock.obj (.text)
    003f7e7c 00000001:startup.obj (.text)

    econst.2
    0 003f7e7e 00000101
    003f7e7e 00000100 F2802x_pievect.obj (.econst:_PieVectTableInit)
    003f7f7e 00000001 u8x8_cd.obj (.econst)

    codestart
    0 003f7ff6 00000002
    003f7ff6 00000002 F2802x_codestartbranch.obj (codestart)

    .stack 1 00000400 00000200未初始化
    00000400 00000200 --孔--

    .ebss.2 1 00000600 00000200未初始化
    00000600 00000160 rts2800_ml.lib:defs.obj (.ebss)
    00000760 00000020 OLED.obj (.ebss:_buffer 1美元2)
    00000780 00000080 u8g2_d_memory.obj (.ebss:_Buf$4美元8)

    DevEmuRegsFile
    1 00000880 00000004未初始化
    00000880 00000004 F2802x_GlobalVariableDefs.obj (DevEmuRegsFile)

    I2caRegsFile
    1 00007900 00000022未初始化
    00007900 00000022 F2802x_GlobalVariableDefs.obj (I2caRegsFile)

    .esysmem 1 00008000 00000400未初始化
    00008000 00000001 rts2800_ml.lib:memory.obj (.esysmem)
    00008001 000003ff --孔--

    PartIdRegsFile
    1 003d7fff 00000001未初始化
    003d7fff 00000001 F2802x_GlobalVariableDefs.obj (PartIdRegsFile)

    CsmPwlFile
    1 003f7ff8 00000008未初始化
    003f7ff8 00000008 F2802x_GlobalVariableDefs.obj (CsmPwlFile)

    .pinit 0 003f7000 00000000未初始化

    .reset 0 003fffc0 00000002 DSECT
    003fffc0 00000002 rts2800_ml.lib:boot28.obj (.reset)

    向量0 003fffc2 00000000 DSECT

    模块总结

    模块代码初始化数据未初始化数据
    ---- ------------ ----------

    F2802x_GlobalVariableDefs.obj 0 1052
    F2802x_pievect.obj 17 256 0
    F2802x_defaultisr.obj 255 0
    OLED.obj 193 0 32.
    F2802x_sysctrl.obj 187 0 0
    main.obj 155 0 0
    F2802x_cputimers.obj 105 0
    F2802x_PIECTRL.obj 31 0
    F2802x_codestartbranch.obj 10 0
    F2802x_usdelay.obj 8 0
    +-++------------------ +--- --------------- --------------- +
    共计:961 256 1084

    中国证监会
    u8x8_d_ssd1306_128x64_noname.obj 134 97 0
    u8x8_CAD.obj 168 1 0
    u8g2_d_memory.obj 0 0 128
    u8g2_hvline.obj 123 0 0
    u8g2_setup.obj 106 4 0
    u8g2_ll_hvline.obj 86 0
    u8x8_display.obj 49 0 0
    u8x8_setup.obj 48 0 0
    u8x8_Byte.obj 30 0 0
    u8g2_d_setup.obj 14 0 0
    u8x8_GPIO_OBJ 5 0 0
    u8g2_font.obj 2 0 0
    +-++------------------ +--- --------------- --------------- +
    共计:765 102 128

    C:\Users\Baghli\AppData\Local\Temp\
    {3823F456-BC81-40BA-B9B5-5BFE48E0F88E}0 148 0
    +-++------------------ +--- --------------- --------------- +
    总计:0 148 0

    电子邮件:/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.3.LTS/lib/rts2800_ml.lib
    trgdrv.obj 421 0 0

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

    [引用用户="Lotfi"]

    现在,通过优化级别4到大小(0),而不是速度,我获得了更好的结果,它只符合:

    #10247-D 创建不带 SECTIONS 规范的输出段".CIO"

    [/报价]

    它似乎仍然无法分配几个段:  

    .cio 0 00000000 00000120无法分配
    .ebss.1 0 00000000 00000120分配失败

    您需要检查链接器命令文件、看看是否可以将这些段移动到另一个具有可容纳该段的空间的存储器区域。
    另请查看 此链接 以获取有关解决此问题的其他提示。  

    如果您不熟悉 TI 编译器工具和链接器命令文件语法、请查看 本文 、其中提供了不同部分以及不同分配语法的含义的良好概述。

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

    [报价用户="Lotfi">我有这种情况

    但它为您提供了您看到的地图好的、列出的器件类型正确、但映射文件仅列出3K 个 SARAM 字和8K 个闪存字。

    项目中包含哪些链接器命令文件(.cmd)?

    CCS 工程选项的屏幕截图仅显示 F2802x_Headers_nonBIOS.cmd 链接器命令文件、我认为该文件不包含器件特定的内存量。

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

    让我总结一下到目前为止的问题:

    lib U8g2需要链路垃圾收集器。 它是 Arduino gcc 工具链中的标准功能。 我们可以使用低于1K 的 RAM 运行 U8g2、如所述

    https://github.com/olikraus/u8g2/issues/549#issuecomment-385230689

    现在我从 F28027F 迁移到 F28069M:同样的问题

    Oled69M_V0.2.zip   

    https://github.com/blotfi/c2000_u8g2

    是的,主 cmd 文件是: f28069F_ram_lnk.cmd  在 motorware 项目中找到

    但我也尝试了: e:\ti\c2000\C2000Ware_1_00_03_00\device_support\f2806x\con\cmd\f28069M_ram_lnk.cmd

    同一问题

    实际上、我不需要更多的存储器或段目标、而是链接垃圾收集器功能、因此不会孤立需要存储器的未使用过程。

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

    Lotfi、

    正如 Chester 提到的、TI 工具中 GCC 链接垃圾收集器的等效选项是-gen_func_subsections 和-gen_data_subsections 选项。 如果仅添加该选项仍然无法获得所需的分配、则可能需要对链接器命令文件进行一些额外的手动调整(例如、允许段适合其分配的存储器区域)和/或代码优化。

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

    [引用 USER="Chester Gillon">查看链接器映射文件会发现两个问题:

    已选择 个 TMS320F280200器件(8K 字的闪存和3K 字的 SARAM)、此器件的内存少于实际 的 TMS320F28027F (64K 字的闪存和12K 字的 SARAM) 在 LAUNCHXL-F28027F 上。我下载 了 https://github.com/blotfi/c2000_u8g2/blob/master/%23oled27f_V0.2.zip 并 确定了链接器映射为什么仅显示8K 闪存字和3K SARAM 字。  F2802x_general_flash.cmd 文件被链接至项目。

    如果您在 CCS Project Explorer 中右键点击链接的 F2802x_generic_flash.cmd 文件、请选择 Properties、然后在 Resource 选项卡上选择 Link Location。

    在退出链接位置上、更改 F2802x_general_flash.cmd 文件名:

    到 F28027.cmd:

    然后、这将允许链接器在 TMS320F28027F 中使用闪存的32K 字和 SARAM 的6K 字。

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

    谢谢切斯特

    但我使用正确的 cmd 文件移动到 F28069M、但问题是 CCS 中不存在或未激活链路垃圾收集器

    如中所述

    https://e2e.ti.com/support/development_tools/code_composer_studio/f/81/p/685102/2525556#2525556

    因为 DE 代码适合使用 GCC 链接垃圾收集器的小型 Arduino 微型、但不适用于69M 的大内存...

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

    [引用 user="Lotfi">但问题在于 CCS 中不存在或未激活的链路垃圾收集 器如何构建 u8g2库?

        GitHub 页面上的#Oled69M_V0.2.zip 和#oled27f_V0.2.zip 似乎注释掉了对 u8g2库的调用。

    我尝试使用 TI v16.9.3.LTS C2000编译器和设置"将每个函数放在单独的子段中(--gen_func_subsections、-mo)"和"将结构和数组放在单独的子段中(-- Gen_data_subsections)"将运行时模型选项更改为"on"确实允许链接器删除目标文件中未使用的函数和数据。