Tool/software:
Hi,
I am using MSP430FR2433.
My application size is less but generated bin file from code composer studio is large 15KB every time.
How to generate the actual bin file or reduce the bin file size?
Thanks & regards,
Sumit Chaulya.
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.
Tool/software:
Hi,
I am using MSP430FR2433.
My application size is less but generated bin file from code composer studio is large 15KB every time.
How to generate the actual bin file or reduce the bin file size?
Thanks & regards,
Sumit Chaulya.
A binary file is a flat representation of what is in memory. Since the code is located at the beginning of FRAM and the vectors (including reset) are at the end, a binary file will have to include all of it.
An Intel Hex file (for example) includes address data so does not have to include all of that empty space.
You could reduce the bin file size by altering the memory size in the linker script. An option only if you really need it and understand what you are doing.
Hi David,
I did some trial, but still binary file size is 15KB.
It generated whole 15KB of bin file.
MSP430FR2433 MCU has 15KB of program memory.
Please suggest me where I should change or update.
And ISR address and reset vector outside of the program memory as per data sheet and linker file.
I am using this command to generate the Binary file.
"${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"
I have charged the FRAM length also for 5KB.
//***************************CMD file ************************************************
MEMORY
{
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 = 0xFFAA, 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
RESET : origin = 0xFFFE, length = 0x0002
}
/****************************************************************************/
/* Specify the sections allocation into memory */
/****************************************************************************/
SECTIONS
{
GROUP(ALL_FRAM)
{
GROUP(READ_WRITE_MEMORY)
{
.TI.persistent : {} /* For #pragma persistent */
}
GROUP(READ_ONLY_MEMORY)
{
.cinit : {} /* Initialization tables */
.pinit : {} /* C++ constructor tables */
.binit : {} /* Boot-time Initialization tables */
.init_array : {} /* C++ constructor tables */
.mspabi.exidx : {} /* C++ constructor tables */
.mspabi.extab : {} /* C++ constructor tables */
.const : {} /* Constant data */
}
GROUP(EXECUTABLE_MEMORY)
{
.text : {} /* Code */
}
} > 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 Signature */
.bslsignature : {} > BSLSIGNATURE /* BSL Signature */
.bss : {} > RAM /* Global & static vars */
.data : {} > RAM /* Global & static vars */
.TI.noinit : {} > RAM /* For #pragma noinit */
.cio : {} > RAM /* C I/O buffer */
.sysmem : {} > RAM /* Dynamic memory allocation area */
.stack : {} > RAM (HIGH) /* Software system stack */
.infoA (NOLOAD) : {} > INFOA /* MSP430 INFO FRAM Memory segments */
/* MSP430 Interrupt vectors */
.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 Reset vector */
}
/****************************************************************************/
/* Include peripherals memory map */
/****************************************************************************/
-l msp430fr2433.cmd
So you changed the FRAM length but not where it starts. You changed nothing.
An Intel Hex file, S records, or anything with address information would be a better way to go.
Hi, David,
I do not want to change the start address. Then how to reduce the bin size?
Hex size is 3KB, But i need Bin file for firmware update using custom bootloader.
Thanks,
sumit.
I do not want to change the start address. Then how to reduce the bin size?
You can't with a flat file format like .bin
Hi David,
I am using this command to generate the .out file to bin file.
"${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"
Actual code size is 674 bytes.
we used this cmd to check the file size.
/opt/ti/ccs1250/ccs/tools/compiler/ti-cgt-armllvm_3.2.0.LTS/bin/tiarmobjcopy -O binary --only-section .text writeFlash_2.out writeFlash_2.bin
it was giving 604 bytes of .text file.
How to generate the .bin file from .out file?
Is any process available to generate the .out file to .bin file including .text, .bss and .data section?
**Attention** This is a public forum