Tool/software:
I am trying to build code and instruct the Linker to locate the CMSIS_DSP code and constants in a special reserved location in Flash memory. When I build my code with the Hex Utility enabled, the project.map file looks correct but the project.hex file is missing the .text and .const sections associated with the DSP library.
It looks like the Linker is ok with the Linker.cmd file, but the Hex Utility is not. I'm guessing my Linker.cmd file syntax is not quite correct. The Hex Utility "warning: duplicate section name" is a clue. Any help would be appreciated.
I have copied edited snippets of my Linker.cmd file and the Build Console output below:
MEMORY
{
BOOT_VECTORS (RX) : origin = 0x00000000, length = 0x00000200
MAIN (RX) : origin = 0x00003200, length = 0x000FCE00
MUF_VECTORS (RX) : origin = 0x00100000, length = 0x00000100
MODEL (RX) : origin = 0x00100100, length = 0x000FFF00
INFO (RX) : origin = 0x00200000, length = 0x00008000
ALIAS
{
SRAM_CODE (RWX): origin = 0x01000000
SRAM_DATA (RW) : origin = 0x20000000
} length = 0x00040000
SECTIONS
{
.intvecs: > BOOT_VECTORS
.text : > MAIN
.text : > MODEL
{
--library=DSP_CMSIS580_CM4F.lib (.text)
}
.const : > MAIN
.const : > MODEL
{
--library=DSP_CMSIS580_CM4F.lib (.const)
}
.emuf_vect : > MUF_VECTORS
.cinit : > MAIN
.pinit : > MAIN
.binit : {} > MAIN
.data : > SRAM_DATA
.bss : > SRAM_DATA
.sysmem : > SRAM_DATA
.stack : > SRAM_DATA (HIGH)
/* INFO flash memory is intended to be used for the following device specific purposes: */
.flashMailbox : > 0x00200000 /* Flash mailbox for device security operations */
.tlvTable : > 0x00201000 /* TLV table for device identification and characterization */
.bslArea : > 0x00202000 /* BSL area for device TI bootstrap loader */
.TI.ramfunc : {} load=MAIN, run=SRAM_CODE, table(BINIT)
}
Invoking: Arm Hex Utility
"C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-arm_18.12.8.LTS/bin/armhex" --memwidth=8 --romwidth=8 --diag_wrap=off --intel -o "eCBM_V45_MUF.hex" "eCBM_V45_MUF.out"
Translating to Intel format...
"eCBM_V45_MUF.out" .intvecs ==> .intvecs
"eCBM_V45_MUF.out" .text ==> .text
"eCBM_V45_MUF.out" .TI.ramfunc ==> .TI.ramfunc
"eCBM_V45_MUF.out" .const ==> .const
"eCBM_V45_MUF.out" .cinit ==> .cinit
"eCBM_V45_MUF.out" .binit ==> .binit
"eCBM_V45_MUF.out" .emuf_vect ==> .emuf_vect
"eCBM_V45_MUF.out" .MODELCODE ==> .MODELCODE
"eCBM_V45_MUF.out" .MODELDATA ==> .MODELDATA
Finished building secondary target: "eCBM_V45_MUF.hex"
warning: duplicate section name eCBM_V45_MUF.out(.text) (ignored)
warning: duplicate section name eCBM_V45_MUF.out(.const) (ignored)
**** Build Finished ****