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.

MSPM0G3507: warning #10092-D: split placement (>>) ignored for ".text": cannot split object with PALIGN operator

Part Number: MSPM0G3507


Tool/software:

Dear Supportteam,

we are working with secondary Bootloader on MSPM0g3507. We modified the .cmd file for our Project like:

MEMORY
{
FLASH (RX) : origin = 0x00000000, length = 0x00001000
FLASH2 (RX) : origin = 0x00004000, length = 0x0001C000
SRAM (RWX) : origin = 0x20200000, length = 0x00008000
BCR_CONFIG (R) : origin = 0x41C00000, length = 0x00000080
BSL_CONFIG (R) : origin = 0x41C00100, length = 0x00000080

}

SECTIONS
{
.intvecs: > 0x00000000
.text : palign(8) {} >> FLASH | FLASH2

.const : palign(8) {} > FLASH | FLASH2
.cinit : palign(8) {} > FLASH | FLASH2
.pinit : palign(8) {} > FLASH | FLASH2
.rodata : palign(8) {} > FLASH | FLASH2
.ARM.exidx : palign(8) {} > FLASH | FLASH2
.init_array : palign(8) {} > FLASH | FLASH2
.binit : palign(8) {} > FLASH | FLASH2
.TI.ramfunc : load = FLASH, palign(8), run=SRAM, table(BINIT)

.vtable : > SRAM
.args : > SRAM
.data : > SRAM
.bss : > SRAM
.sysmem : > SRAM
.stack : > SRAM (HIGH)

.BCRConfig : {} > BCR_CONFIG
.BSLConfig : {} > BSL_CONFIG
}

this leads to above warning: 

warning #10092-D: split placement (>>) ignored for ".text": cannot split object with PALIGN operator

and complete object code is always placed behind the bootloader, no chance for using the first 4kB (0x1000) for .text so we get:
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
FLASH 00000000 00001000 000003a8 00000c58 R X
FLASH2 00004000 0001c000 00003eb0 00018150 R X

this means 3160 unused bytes in FLASH region. 

Is there a simple solution for my configuration?

As I want to use both flash regions in combination. Especially as we involved the eeprom emulation after the bootloader image.
Or is the only solution to place the secondary bootloader on address 0x400 to reduce the memory hole?

  • After I change to this, there is no error

    If my understanding is right, you want to reserve the memory between 0x1000 to 0x4000 for eeRPOM. And you want to full use the memory from 0x0000 to 0x1000.

    You can refer to the cmd file in this code example:

  • That just > instead of >> causes no warning is clear for me. The reserved memory region came from secondary Bootloader model. Not just EEPROM Emulation. Your provided solution will fix most of my problems. From my viewpoint better solution would be to move the EEPROM Emulation region before the secondary bootloader. So my gap from zero to first used memory region reduces to 2kB and this could me partially filled with .const and .pinit.