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:物有所值- bool

Guru**** 2454880 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/830569/ccs-tms320f28377s-value-over-flow---bool

器件型号:TMS320F28377S

工具/软件:Code Composer Studio

我已将一个未初始化的全局变量指定为 bool 类型、它取0或1以外的值。

是否有必要初始化所有全局变量?

 如果原因是.bss 段溢出,那么如何检查并解决此问题?

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

    您好!

    无需初始化全局变量、但最好对其进行初始化。

    初始化的全局变量位于.data 段下、而未初始化的全局变量位于.bss 段下。

    您可以检查.map 文件以了解每个段的实际大小。 如果无法将段放入分配的存储器中、则可以将 linekr 命令文件更新为、以将更多存储器区域映射到.data/.bss 段

    此致、

    Veena

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

    感谢您的回复!

    您能否查看以下地图文件模块摘要和链接器文件,并帮助我了解.bss 段是否溢出,如果是,我如何增加相同的大小?

    /*这是我的地图文件总计*/

    模块总结

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

    总计:          43363                 15195.                      5173  

    /*为未初始化的数据段分配大小*/

    .ebss:>> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1.

    /*这是我的链接器文件*/

    存储器

    第0页:/*程序内存*/
    /*内存(RAM/FLASH)块可移动到 Page1进行数据分配*/
    /* begin 用于"引导至闪存"引导加载程序模式*/

    开始:origin = 0x080000,length = 0x000002
    RAMM0:origin = 0x000122、length = 0x0002DE
    RAMD0:origin = 0x00B000、length = 0x000800
    RAMLS0:origin = 0x008000、length = 0x000800
    RAMLS1:origin = 0x008800,length = 0x000800
    RAMLS2:origin = 0x009000,length = 0x000800
    RAMLS3:origin = 0x009800,length = 0x000800
    RAMLS4:origin = 0x00A000,length = 0x000800
    复位:origin = 0x3FFFC0,length = 0x000002

    /*闪存扇区*/
    FLASHA:origin = 0x080002,length = 0x001FFE /*片上闪存*/
    FLASHB:origin = 0x082000、length = 0x002000 //片上闪存*
    FLASHC:origin = 0x084000,length = 0x002000 //片上闪存*/
    FLASHD:origin = 0x086000、length = 0x002000 //片上闪存*/
    FLASHE:origin = 0x088000、length = 0x008000 //片上闪存*/
    FLASHF:origin = 0x090000,length = 0x008000 //片上闪存*
    FLASHG:origin = 0x098000、length = 0x008000 //片上闪存*/
    FLASHH:origin = 0x0A0000,length = 0x008000 //片上闪存*/
    FLASHI:origin = 0x0A8000、length = 0x008000 //片上闪存*/
    FLASHJ:origin = 0x0B0000,length = 0x008000 //片上闪存*/
    FLASHK:origin = 0x0B8000、length = 0x002000 //片上闪存*/
    FLASHL:origin = 0x0BA000、length = 0x002000 //片上闪存*/
    FLASHM:origin = 0x0BC000、length = 0x002000 //片上闪存*/
    FLASHN:origin = 0x0BE000、length = 0x002000 //片上闪存*/

    第1页:/*数据存储器*/
    /*内存(RAM/FLASH)块可移动到 PAGE0进行程序分配*/

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

    RAMLS5:origin = 0x00A800,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


    部分

    /*分配计划领域:*/
    .cinit:> FLASHB PAGE = 0,ALIGN (4)
    .pinit:> FLASHB,PAGE = 0,ALIGN (4)
    .text:>> FLASHB | FLASHC | FLASHD | FLASHE | FLASHF PAGE = 0、ALIGN (4)
    codestart:> begin page = 0,align (4)
    ramfuncs:load = FLASHD,
    RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)

    /*分配未初始化的数据段:*/
    .stack:>RAMM1 page = 1.
    .ebss:>> RAMLS5 | RAMGS0 | RAMGS1 PAGE = 1.
    .esysmem:> RAMLS5 PAGE = 1.

    /*初始化段进入闪存*/
    .econst:>> FLASHG | FLASHH PAGE = 0,ALIG(4)
    /*.econst:>> FLASHF | FLASHG | FLASHH PAGE = 0,ALIG(4)*/
    .switch:> FLASHB PAGE = 0,ALIGN (4)
    .reset:> reset,page = 0,type = DSECT //未使用,*/

    #ifdef __TI_Compiler_version
    #if __TI_Compiler_version >=15009000
    .TI.ramfunc:{}负载= FLASHD,
    RUN = RAMLS0 | RAMLS1 | RAMLS2 | RAMLS3、
    load_start (_RamfuncsLoadStart)、
    load_size (_RamfuncsLoadSize)、
    load_end (_RamfuncsLoadEnd)、
    run_start (_RamfuncsRunStart)、
    run_size (_RamfuncsRunSize)、
    run_end (_RamfuncsRunEnd)、
    PAGE = 0、ALIGN (4)
    #endif
    #endif

    RAMS0:>RAMGS0,PAGE = 1
    ramgs1:>RAMGS1,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
    Differit_RegsFile:>RAMGS5,PAGE = 1,fill=0x3333

    /*
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    //文件结束。
    //============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
    *

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

    您好!

    这是链接器命令文件。 .map 文件出现在 Debug 文件夹中。 它显示了每个段的确切大小和分配的存储器

    此致、

    Veena