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.

[参考译文] MSP430FR2433:BIN 文件与实际代码相比很大

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1388022/msp430fr2433-bin-file-size-is-large-compared-to-actual-code

器件型号:MSP430FR2433

工具与软件:

您好!

我正在使用 MSP430FR2433、

我的应用程序大小较小、但 Code Composer Studio 生成的 bin 文件大小始终都是15KB 的大容量。

如何生成实际的 bin 文件或减小 bin 文件的大小?

谢谢、此致、

Sumit Chaulya。

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

    二进制文件是存储器中内容的平坦表示。 由于代码位于 FRAM 的开头、矢量(包括复位)位于结尾、二进制文件必须包含所有这些矢量。

    例如、Intel Hex 文件包含地址数据、因此不必包含所有这些空空间。

    您可以通过更改链接器脚本中的存储器大小来减小 bin 文件的大小。 只有当你真的需要并理解你在做什么时才会有一个选择。

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

    尊敬的 David:

    我试过试过、但二进制文件大小仍然是15KB。

    它生成了整个15KB 的 bin 文件。

    MSP430FR2433 MCU 具有15KB 的程序存储器。

    请向我建议我应在何处更改或更新。

    程序存储器之外的 ISR 地址和复位矢量、如数据表和链接器文件所示。

    我将使用此命令生成二进制文件。

    "${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin "${BuildArtifactFileName}""${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT}/bin/ofd430 "${CG_TOOL_ROOT}/bin/hex430 "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin

    我收费的 FRAM 长度也是5KB。

    //***** CMD 文件


    小程序

    sfr:origin = 0x0000、length = 0x0010
    peripherals_8bit:origin = 0x0010、length = 0x00F0
    peripherals_16BIT:origin = 0x0100、length = 0x0100
    RAM:origin = 0x2000、length = 0x1000
    INFOA:origin = 0x1800、length = 0x0200
    FRAM:origin = 0xC400、length = 0x1400
    JTAGSIGNATURE:origin = 0xFF80、length = 0x0004、fill = 0xFFFF
    BSLSIGNATURE:origin = 0xFF84、length = 0x0004、fill = 0xFFFF
    int00:origin = 0xFF88、length = 0x0002
    int01:origin = 0xFF8A、length = 0x0002
    INT02:origin = 0xFF8C、length = 0x0002
    INT03:origin = 0xFF8E、length = 0x0002
    int04:origin = 0xFF90、length = 0x0002
    INT05:origin = 0xFF92、length = 0x0002
    INT06:origin = 0xFF94、length = 0x0002
    INT07:origin = 0xFF96、length = 0x0002
    int08:origin = 0xFF98、length = 0x0002
    INT09:origin = 0xFF9A、length = 0x0002
    int10:origin = 0xFF9C、length = 0x0002
    int11:origin = 0xFF9E、length = 0x0002
    int12:origin = 0xFFA0、length = 0x0002
    int13:origin = 0xFFA2、length = 0x0002
    int14:origin = 0xFFA4、length = 0x0002
    INT15:origin = 0xFFA6、length = 0x0002
    int16:origin = 0xFFA8、length = 0x0002
    INT17:origin = 0xFAA、length = 0x0002
    int18:origin = 0xFFAC、length = 0x0002
    INT19:origin = 0xFFAE、length = 0x0002
    int20:origin = 0xFFB0、length = 0x0002
    int21:origin = 0xFFB2、length = 0x0002
    int22:origin = 0xFFB4、length = 0x0002
    int23:origin = 0xFFB6、length = 0x0002
    int24:origin = 0xFFB8、length = 0x0002
    int25:origin = 0xFFBA、length = 0x0002
    int26:origin = 0xFFBC、length = 0x0002
    int27:origin = 0xFFBE、length = 0x0002
    int28:origin = 0xFFC0、length = 0x0002
    int29:origin = 0xFFC2、length = 0x0002
    int30:origin = 0xFFC4、length = 0x0002
    INT31:origin = 0xFFC6、length = 0x0002
    int32:origin = 0xFFC8、length = 0x0002
    int33:origin = 0xFFCA、length = 0x0002
    INT34:origin = 0xFFCC、length = 0x0002
    int35:origin = 0xFFCE、length = 0x0002
    int36:origin = 0xFFD0、length = 0x0002
    int37:origin = 0xFFD2、length = 0x0002
    INT38:origin = 0xFFD4、length = 0x0002
    INT39:origin = 0xFFD6、length = 0x0002
    INT40:origin = 0xFFD8、length = 0x0002
    INT41:origin = 0xFFDA、length = 0x0002
    int42:origin = 0xFFDC、length = 0x0002
    INT43:origin = 0xFFDE、length = 0x0002
    INT44:origin = 0xFFE0、length = 0x0002
    int45:origin = 0xFFE2、length = 0x0002
    int46:origin = 0xFFE4、length = 0x0002
    int47:origin = 0xFFE6、length = 0x0002
    int48:origin = 0xFFE8、length = 0x0002
    int49:origin = 0xFFEA、length = 0x0002
    int50:origin = 0xFFEC、length = 0x0002
    int51:origin = 0xFFEE、length = 0x0002
    INT52:origin = 0xFFF0、length = 0x0002
    INT53:origin = 0xFFF2、length = 0x0002
    int54:origin = 0xFFF4、length = 0x0002
    int55:origin = 0xFFF6、length = 0x0002
    int56:origin = 0xFFF8、length = 0x0002
    int57:origin = 0xFFFA、length = 0x0002
    INT58:origin = 0xFFFC、length = 0x0002
    复位:origin = 0xFFFE、length = 0x0002
    }

    */./............. /
    /*指定段分配到内存中*/
    */./............. /

    部分中)

    组(ALL_FRAM)

    组(READ_WRITE_MEMORY)

    .TI.persistent:{}/*对于#pragma persistent *
    }

    组(只读_存储器)

    .cinit :{}/*初始化表*/
    .pinit :{}/* C++构造函数表*/
    .binit :{}/*启动时初始化表*/
    init_array :{}/* C++构造函数表*/
    .mspabi.exidx :{}/* C++构造函数表*/
    .mspabi.extab :{}/* C++构造函数表*/
    .const :{}/*常量数据*/
    }

    组(可执行内存)

    .text :{}/*代码*/
    }
    }> FRAM

    #ifdef __TI_Compiler_version__
    #if __TI_Compiler_version__>= 15009000
    #ifndef __large_code_model__
    .TI.ramfunc:{}load=FRAM、run=RAM、table (BINIT)
    #else
    .TI.ramfunc:{}load=FRAM | FRAM2、run=RAM、table (BINIT)
    #endif
    #endif
    #endif

    .jtagsignature :{}> JTAGSIGNATURE /* JTAG 签名*/
    bslsignature :{}> BSLSIGNATURE /* BSL Signature */

    .bss :{}> RAM /*全局和静态变量*/
    .data :{}> RAM /*全局和静态变量*/
    .TI.noinit :{}> RAM /*对于#pragma noinit */
    .cio :{}> RAM /* C I/O buffer */
    .sysmem :{}> RAM /*动态内存分配区*/
    .stack:{}> RAM (HIGH)/*软件系统堆栈*/

    .infoA (NOLoad):{}> INFOA /* MSP430 info FRAM Memory Segments */

    /* MSP430中断矢量*/
    .int00 :{}> int00
    .int01:{}>int01.
    .int02 :{}> int02.
    .int03 :{}> int03
    .int04 :{}> int04.
    .int05:{}>int05.
    .int06 :{}> int06.
    .int07 :{}> int07.
    .int08 :{}> int08
    .int09:{}> INT09
    .int10 :{}> int10.
    .int11 :{}> int11.
    .int12:{}>int12.
    .int13 :{}> int13.
    .int14 :{}> int14.
    .int15 :{}> int15.
    .int16 :{}> int16.
    .int17 :{}> int17.
    .int18 :{}> int18.
    .int19 :{}> int19.
    .int20 :{}> int20.
    .int21 :{}> int21.
    .int22 :{}> int22.
    .int23 :{}> int23.
    .int24 :{}> int24.
    .int25 :{}> int25.
    .int26 :{}> int26.
    .int27 :{}> int27.
    .int28 :{}> int28.
    .int29 :{}> int29.
    .int30 :{}> int30.
    .int31:{}> int31.
    .int32 :{}> int32.
    .int33 :{}> int33.
    .int34 :{}> int34.
    .int35 :{}> int35.
    .int36 :{}> int36.
    .int37 :{}> int37.
    .int38 :{}> int38.
    .int39 :{}> int39
    .int40 :{}> int40.
    port2 :{*(.int41 )}> int41 type = VECT_INIT
    Port1 :{*(.int42 )}> int42 type = VECT_INIT
    ADC :{*(.int43 )}> INT43 type = VECT_INIT
    USCI_B0:{*(.int44 )}> INT44 TYPE = VECT_INIT
    USCI_A1:{*(.int45 )}> INT45 type = VECT_INIT
    USCI_A0:{*(.int46 )}> INT46 TYPE = VECT_INIT
    WDT :{*(.int47 )}> INT47 TYPE = VECT_INIT
    RTC :{*(.int48 )}> INT48 type = VECT_INIT
    TIMER3_A1 :{*(.int49 )}> INT49 type = VECT_INIT
    TIMER3_A0 :{*(.int50 )}> int50 type = VECT_INIT
    TIMER2_A1 :{*(.int51 )}> INT51 type = VECT_INIT
    TIMER2_A0:{*(.int52 )}> int52 type = VECT_INIT
    Timer1_A1:{*(.int53 )}> INT53 TYPE = VECT_INIT
    Timer1_A0:{*(.int54 )}> int54 type = VECT_init
    TIMER0_A1:{*(.int55 )}> int55 type = VECT_INIT
    TIMER0_A0:{*(.int56 )}> int56 type = VECT_INIT
    UNMI :{*(.int57 )}> INT57 TYPE = VECT_INIT
    SYSNMI :{*(.int58 )}> INT58 TYPE = VECT_INIT
    .reset:{}> RESET /* MSP430复位向量*/
    }

    */./............. /
    /*包含外设内存映射*/
    */./............. /

    -l msp430fr2433.cmd

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

    您更改了 FRAM 长度、但没有更改它开始的位置。 你什么都没有改变。

    Intel Hex 文件、 S 记录或任何包含地址信息的内容都是更好的选择。

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

    您好、David、  

    我不想更改起始地址。  那么、如何减小箱尺寸?

    十六进制大小为3KB、但我需要使用自定义引导加载程序进行固件更新的 Bin 文件。

    谢谢!

    Sumit。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不想更改起始地址。  那么如何减小纸槽尺寸?[/QUOT]

    您不能使用.bin 等平面文件格式

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

    尊敬的 David:

    我将使用此命令来生成.out 文件到 bin 文件。

    "${CCE_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin "${BuildArtifactFileName}" "${BuildArtifactFileBaseName}.bin""${CG_TOOL_ROOT  }/bin/ofd430 "${CG_TOOL_ROOT}/bin/hex430 "${CCE_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin

    实际代码大小为674字节。

    我们使用此 cmd 来检查文件大小。

    /opt/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmobjcopy -O 二进制-仅-段.text writeFlash_2.out writeFlash_2.bin

    它提供604字节的.text 文件。

    如何从.out 文件生成.bin 文件?

    是否有任何进程可用于将.out 文件生成到.bin 文件、包括.text、.bss 和.data 段?