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.

TIDM-02011: F280039C dfu setting error

Part Number: TIDM-02011
Other Parts Discussed in Thread: SYSBIOS, SFRA

I am using LDFU on DSP28F0049C. I set the same to DSP28F0039C, but address error occurs.

Please check if the setting method of DSP28F0049C and DSP28F0039C is different.

I would like to request an analysis of the cause of the live update setting error.

Please refer to the settings below.

ldfu setting err

   - Error occurs when PMBusStack is added to apply TI PMBus library

   - "address overrides" occurs when interanl support options are set to connect live update properties

error content

>> Compilation failure

makefile:216: recipe for target 'PCMC_PSFB_F28003x_KAIST330_bl89_4.out' failed

../../master/ELFLNK/collect.c:778:internal fatal error #10478: (.TI.bound:PMBusStack_commandTransactionMap)

 

INTERNAL ERROR: C:\ti\ccs1210\ccs\tools\compiler\ti-cgt-c2000_22.6.0.LTS\bin\lnk2000.exe had an internal inconsistency and aborted

 

Properties setting

 --------------------------------------------------------------------------------------------------------

//
// Keep the _bankSelect symbol
//
-u bankSelect

MEMORY
{
/* BEGIN is used for the "boot to Flash" bootloader mode */
BEGIN_KERNEL : origin = 0x080000, length = 0x000200
BEGIN : origin = 0x08EFF0, length = 0x000004
C_INT_LFU : origin = 0x08EFF8, length = 0x000100
BOOT_RSVD : origin = 0x00000002, length = 0x00000126

RAMM0 : origin = 0x00000128, length = 0x000002D8
RAMM1 : origin = 0x00000400, length = 0x00000380 /* on-chip RAM block M1 */
BOOT_RSVD_SYSBIOS: origin = 0x00000780, length = 0x00000080

RAMLS0 : origin = 0x00008000, length = 0x00000800
RAMLS1 : origin = 0x00008800, length = 0x00000800
RAMLS2 : origin = 0x00009000, length = 0x00000800
RAMLS3 : origin = 0x00009800, length = 0x00000800
RAMLS4 : origin = 0x0000A000, length = 0x00000800
RAMLS5 : origin = 0x0000A800, length = 0x00000800
RAMLS6 : origin = 0x0000B000, length = 0x00000800
RAMLS7 : origin = 0x0000B800, length = 0x00000800

RAMGS0 : origin = 0x00C000, length = 0x001000
RAMGS1 : origin = 0x00D000, length = 0x001000
//RAMGS0GS1 : origin = 0x00C000, length = 0x002000
RAMGS2 : origin = 0x0000E000, length = 0x00001000
RAMGS3 : origin = 0x0000F000, length = 0x00001000

BOOTROM : origin = 0x003F8000, length = 0x00007FC0
SECURE_ROM : origin = 0x003F2000, length = 0x00006000

RESET : origin = 0x003FFFC0, length = 0x00000002

/* Flash sectors */

//
// Allocate space for the liveDFU function in bank 0
//
//BANK0_SEC1 : origin = 0x081000, length = 0x000017
/* BANK 0 */

FLASH_BANK0_SEC0 : origin = 0x080200, length = 0x000E00
FLASH_BANK0_SEC1 : origin = 0x081017, length = 0x000FE9
FLASH_BANK0_SEC234567 : origin = 0x082000, length = 0x006000 /* on-chip Flash */
FLASH_BANK0_SEC8910 : origin = 0x088000, length = 0x03000 /* on-chip Flash */
//FLASH_BANK0_SEC2 : origin = 0x082000, length = 0x001000
//FLASH_BANK0_SEC3 : origin = 0x083000, length = 0x001000
//FLASH_BANK0_SEC4 : origin = 0x084000, length = 0x001000
//FLASH_BANK0_SEC5 : origin = 0x085000, length = 0x001000
//FLASH_BANK0_SEC6 : origin = 0x086000, length = 0x001000
//FLASH_BANK0_SEC7 : origin = 0x087000, length = 0x001000
//FLASH_BANK0_SEC8 : origin = 0x088000, length = 0x001000
//FLASH_BANK0_SEC9 : origin = 0x089000, length = 0x001000
//FLASH_BANK0_SEC10 : origin = 0x08A000, length = 0x001000
FLASH_BANK0_SEC11 : origin = 0x08B000, length = 0x001000
FLASH_BANK0_SEC12 : origin = 0x08C000, length = 0x001000
FLASH_BANK0_SEC13 : origin = 0x08D000, length = 0x001000
FLASH_BANK0_SEC14 : origin = 0x08E000, length = 0x000FF0
FLASH_BANK0_SEC15 : origin = 0x08F0F8, length = 0x000F08


/* BANK 1 */
FLASH_BANK1_SEC0 : origin = 0x090000, length = 0x001000
FLASH_BANK1_SEC1 : origin = 0x091000, length = 0x001000
FLASH_BANK1_SEC234567 : origin = 0x092000, length = 0x006000 /* on-chip Flash */
FLASH_BANK1_SEC8910 : origin = 0x098000, length = 0x03000 /* on-chip Flash */
//FLASH_BANK1_SEC2 : origin = 0x092000, length = 0x001000
//FLASH_BANK1_SEC3 : origin = 0x093000, length = 0x001000
//FLASH_BANK1_SEC4 : origin = 0x094000, length = 0x001000
//FLASH_BANK1_SEC5 : origin = 0x095000, length = 0x001000
//FLASH_BANK1_SEC6 : origin = 0x096000, length = 0x001000
//FLASH_BANK1_SEC7 : origin = 0x097000, length = 0x001000
//FLASH_BANK1_SEC8 : origin = 0x098000, length = 0x001000
//FLASH_BANK1_SEC9 : origin = 0x099000, length = 0x001000
//FLASH_BANK1_SEC10 : origin = 0x09A000, length = 0x001000
FLASH_BANK1_SEC11 : origin = 0x09B000, length = 0x001000
FLASH_BANK1_SEC12 : origin = 0x09C000, length = 0x001000
FLASH_BANK1_SEC13 : origin = 0x09D000, length = 0x001000
FLASH_BANK1_SEC14 : origin = 0x09E000, length = 0x001000
FLASH_BANK1_SEC15 : origin = 0x09F000, length = 0x001000

/* BANK 2 */
FLASH_BANK2_SEC0 : origin = 0x0A0000, length = 0x001000
FLASH_BANK2_SEC1 : origin = 0x0A1000, length = 0x001000
FLASH_BANK2_SEC2 : origin = 0x0A2000, length = 0x001000
FLASH_BANK2_SEC3 : origin = 0x0A3000, length = 0x001000
FLASH_BANK2_SEC4 : origin = 0x0A4000, length = 0x001000
FLASH_BANK2_SEC5 : origin = 0x0A5000, length = 0x001000
FLASH_BANK2_SEC6 : origin = 0x0A6000, length = 0x001000
FLASH_BANK2_SEC7 : origin = 0x0A7000, length = 0x001000
FLASH_BANK2_SEC8 : origin = 0x0A8000, length = 0x001000
FLASH_BANK2_SEC9 : origin = 0x0A9000, length = 0x001000
FLASH_BANK2_SEC10 : origin = 0x0AA000, length = 0x001000
FLASH_BANK2_SEC11 : origin = 0x0AB000, length = 0x001000
FLASH_BANK2_SEC12 : origin = 0x0AC000, length = 0x001000
FLASH_BANK2_SEC13 : origin = 0x0AD000, length = 0x001000
FLASH_BANK2_SEC14 : origin = 0x0AE000, length = 0x001000
FLASH_BANK2_SEC15 : origin = 0x0AF000, length = 0x001000


}


SECTIONS
{
codestart : > BEGIN, ALIGN(8)
c_int_lfu_bank0 : > C_INT_LFU, ALIGN(8)
codestart_kernel : > BEGIN_KERNEL, ALIGN(8)
.text : > FLASH_BANK0_SEC234567 , ALIGN(8)
.cinit : > FLASH_BANK0_SEC8910, ALIGN(8)
.switch : > FLASH_BANK0_SEC8910, ALIGN(8)
.reset : > RESET, TYPE = DSECT /* not used, */

.stack : > RAMLS5

//#if defined(__TI_EABI__)
.init_array : > FLASH_BANK0_SEC8910, ALIGN(8)
.bss : > RAMGS3, TYPE = NOINIT
//.bss:output : > RAMLS3
//.bss:cio : > RAMGS1
.data : > RAMGS2
.sysmem : > RAMLS4
.const : > FLASH_BANK0_SEC8910, ALIGN(8)
//#else
//.pinit : > FLASH_BANK0_SEC8910, ALIGN(8)
//.ebss : > RAMLS5
//.esysmem : > RAMLS5
//.cio : > RAMLS0
//.econst : > FLASH_BANK0_SEC8910, ALIGN(8)
//#endif
.TI.noinit: > RAMLS2

ramgs0 : > RAMLS6
ramgs1 : > RAMLS6

//.TI.ramfunc :
GROUP
{
.TI.ramfunc
{
//-l sfra_f32_tmu_eabi.lib
-l FAPI_F28003x_EABI_v1.58.00.lib
}
ramfuncs
dclfuncs
}
LOAD = FLASH_BANK0_SEC8910,
RUN = RAMGS0,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
ALIGN(8)

//LDFU_BANK0 : > BANK0_SEC1, ALIGN(8)
FPUmathTables : > FLASH_BANK0_SEC0
}

-------------------------------------------------------------------------------------------------------

MEMORY
{
BEGIN : origin = 0x09EFF0, length = 0x00000004
C_INT_LFU : origin = 0x09EFF8, length = 0x000100
BOOT_RSVD : origin = 0x00000002, length = 0x00000126

RAMM0 : origin = 0x00000128, length = 0x000002D8
RAMM1 : origin = 0x00000400, length = 0x00000380 /* on-chip RAM block M1 */
BOOT_RSVD_SYSBIOS: origin = 0x00000780, length = 0x00000080

RAMLS0 : origin = 0x00008000, length = 0x00000800
RAMLS1 : origin = 0x00008800, length = 0x00000800
RAMLS2 : origin = 0x00009000, length = 0x00000800
RAMLS3 : origin = 0x00009800, length = 0x00000800
RAMLS4 : origin = 0x0000A000, length = 0x00000800
RAMLS5 : origin = 0x0000A800, length = 0x00000800
RAMLS6 : origin = 0x0000B000, length = 0x00000800
RAMLS7 : origin = 0x0000B800, length = 0x00000800

RAMGS0 : origin = 0x00C000, length = 0x001000
RAMGS1 : origin = 0x00D000, length = 0x001000
//RAMGS0GS1 : origin = 0x00C000, length = 0x002000
RAMGS2 : origin = 0x0000E000, length = 0x00001000
RAMGS3 : origin = 0x0000F000, length = 0x00001000

BOOTROM : origin = 0x003F8000, length = 0x00007FC0
SECURE_ROM : origin = 0x003F2000, length = 0x00006000

RESET : origin = 0x003FFFC0, length = 0x00000002

/* Flash sectors */
//
// Allocate space for the liveDFU function in bank 1
//
//BANK1_SEC1 : origin = 0x91000, length = 0x000017
/* BANK 0 */
FLASH_BANK0_SEC0 : origin = 0x080200, length = 0x000E00
FLASH_BANK0_SEC1 : origin = 0x081000, length = 0x001000
FLASH_BANK0_SEC234567 : origin = 0x082000, length = 0x006000 /* on-chip Flash */
FLASH_BANK0_SEC8910 : origin = 0x088000, length = 0x03000
//FLASH_BANK0_SEC2 : origin = 0x082000, length = 0x001000
//FLASH_BANK0_SEC3 : origin = 0x083000, length = 0x001000
//FLASH_BANK0_SEC4 : origin = 0x084000, length = 0x001000
//FLASH_BANK0_SEC5 : origin = 0x085000, length = 0x001000
//FLASH_BANK0_SEC6 : origin = 0x086000, length = 0x001000
//FLASH_BANK0_SEC7 : origin = 0x087000, length = 0x001000
//FLASH_BANK0_SEC8 : origin = 0x088000, length = 0x001000
//FLASH_BANK0_SEC9 : origin = 0x089000, length = 0x001000
//FLASH_BANK0_SEC10 : origin = 0x08A000, length = 0x001000
FLASH_BANK0_SEC11 : origin = 0x08B000, length = 0x001000
FLASH_BANK0_SEC12 : origin = 0x08C000, length = 0x001000
FLASH_BANK0_SEC13 : origin = 0x08D000, length = 0x001000
FLASH_BANK0_SEC14 : origin = 0x08E000, length = 0x001000
FLASH_BANK0_SEC15 : origin = 0x08F000, length = 0x001000

/* BANK 1 */
FLASH_BANK1_SEC0 : origin = 0x090002, length = 0x000FFE
FLASH_BANK1_SEC1 : origin = 0x091017, length = 0x000F39
FLASH_BANK1_SEC234567 : origin = 0x092000, length = 0x006000 /* on-chip Flash */
FLASH_BANK1_SEC8910 : origin = 0x098000, length = 0x03000 /* on-chip Flash */
//FLASH_BANK1_SEC2 : origin = 0x092000, length = 0x001000
//FLASH_BANK1_SEC3 : origin = 0x093000, length = 0x001000
//FLASH_BANK1_SEC4 : origin = 0x094000, length = 0x001000
//FLASH_BANK1_SEC5 : origin = 0x095000, length = 0x001000
//FLASH_BANK1_SEC6 : origin = 0x096000, length = 0x001000
//FLASH_BANK1_SEC7 : origin = 0x097000, length = 0x001000
//FLASH_BANK1_SEC8 : origin = 0x098000, length = 0x001000
//FLASH_BANK1_SEC9 : origin = 0x099000, length = 0x001000
//FLASH_BANK1_SEC10 : origin = 0x09A000, length = 0x001000
FLASH_BANK1_SEC11 : origin = 0x09B000, length = 0x001000
FLASH_BANK1_SEC12 : origin = 0x09C000, length = 0x001000
FLASH_BANK1_SEC13 : origin = 0x09D000, length = 0x001000
FLASH_BANK1_SEC14 : origin = 0x09E000, length = 0x000FF0
FLASH_BANK1_SEC15 : origin = 0x09F0F8, length = 0x000F08

/* BANK 2 */
FLASH_BANK2_SEC0 : origin = 0x0A0000, length = 0x001000
FLASH_BANK2_SEC1 : origin = 0x0A1000, length = 0x001000
FLASH_BANK2_SEC2 : origin = 0x0A2000, length = 0x001000
FLASH_BANK2_SEC3 : origin = 0x0A3000, length = 0x001000
FLASH_BANK2_SEC4 : origin = 0x0A4000, length = 0x001000
FLASH_BANK2_SEC5 : origin = 0x0A5000, length = 0x001000
FLASH_BANK2_SEC6 : origin = 0x0A6000, length = 0x001000
FLASH_BANK2_SEC7 : origin = 0x0A7000, length = 0x001000
FLASH_BANK2_SEC8 : origin = 0x0A8000, length = 0x001000
FLASH_BANK2_SEC9 : origin = 0x0A9000, length = 0x001000
FLASH_BANK2_SEC10 : origin = 0x0AA000, length = 0x001000
FLASH_BANK2_SEC11 : origin = 0x0AB000, length = 0x001000
FLASH_BANK2_SEC12 : origin = 0x0AC000, length = 0x001000
FLASH_BANK2_SEC13 : origin = 0x0AD000, length = 0x001000
FLASH_BANK2_SEC14 : origin = 0x0AE000, length = 0x001000
FLASH_BANK2_SEC15 : origin = 0x0AF000, length = 0x001000


}


SECTIONS
{
codestart : > BEGIN, ALIGN(8)
c_int_lfu_bank1 : > C_INT_LFU, ALIGN(8)
.text : > FLASH_BANK1_SEC234567 , ALIGN(8)
.cinit : > FLASH_BANK1_SEC8910, ALIGN(8)
.switch : > FLASH_BANK1_SEC8910, ALIGN(8)
.reset : > RESET, TYPE = DSECT /* not used, */

.stack : > RAMLS5

//#if defined(__TI_EABI__)
.init_array : > FLASH_BANK1_SEC8910, ALIGN(8)
.bss : > RAMGS3, TYPE = NOINIT
//.bss:output : > RAMLS3
//.bss:cio : > RAMGS1
.data : > RAMGS2
.sysmem : > RAMLS4
.const : > FLASH_BANK0_SEC8910, ALIGN(8)
//#else
//.pinit : > FLASH_BANK1_SEC8910, ALIGN(8)
//.ebss : > RAMLS5
//.esysmem : > RAMLS5
//.cio : > RAMLS0
//.econst : > FLASH_BANK1_SEC8910, ALIGN(8)
//#endif
.TI.noinit: > RAMLS2
.TI.update: > RAMGS3

ramgs0 : > RAMLS6
ramgs1 : > RAMLS6
//.TI.ramfunc :
GROUP
{
.TI.ramfunc
{
//-l sfra_f32_tmu_eabi.lib
-l FAPI_F28003x_EABI_v1.58.00.lib
}
ramfuncs
//dclfuncs
}
LOAD = FLASH_BANK1_SEC8910,
RUN = RAMGS1,
LOAD_START(RamfuncsLoadStart),
LOAD_SIZE(RamfuncsLoadSize),
LOAD_END(RamfuncsLoadEnd),
RUN_START(RamfuncsRunStart),
RUN_SIZE(RamfuncsRunSize),
RUN_END(RamfuncsRunEnd),
ALIGN(8)

//LDFU_BANK1 : > BANK1_SEC1, ALIGN(8)
FPUmathTables : > FLASH_BANK1_SEC0
}

  • Hi Jang,

    Thanks for your question. Will check the build configuration settings and convene with LDFU expert.

    Regards,

    Charles

  • Can you please send more details on this error, if it is printed?

  • The error seems to be an address mapping failure.
    I am attaching the details of the error.

    • >> Compilation failure
    • makefile:222: recipe for target 'PCMC_PSFB_F28003x_KAIST330_bl9.out' failed
    • error #10324-D: BOUND section ".TI.bound:CMDtoMatrix" spans the boundary of an existing memory range RAMLS1
    • warning #10098-D: specific address 0x8bbd overrides alignment of 2 for ".TI.bound:PAGE"
    • warning #10098-D: specific address 0x8c37 overrides alignment of 2 for ".TI.bound:CMDtoMatrix"
    • error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section ".TI.bound:CMDtoMatrix" size 0x459 page 0
    • warning #10098-D: specific address 0x8c37 overrides alignment of 2 for ".TI.bound:CMDtoMatrix"
    • warning #10098-D: specific address 0x909f overrides alignment of 2 for ".TI.bound:Temp_Amb_real"
    • error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. placement with alignment/blocking fails for section ".TI.bound:PMBusStack_commandTransactionMap" size 0x1 page 0, overlaps with ".TI.bound:secAddress", size 0x65 (page 0)

    Address mapping for bank0 succeeded.

    Address mapping failed for bank1.

  • So this is basically the linker telling you that based on your memory section definitions, it is not able to fit in the program and data into some of the sections.

    Does your Bank0 configuration build OK?

    Does this error occur only with the Bank1 configuration?

    What are the differences between Bank0 and Bank1?

    Thanks,

    Sira

  • The ldfu project error occurs as follows.

      - No error occurs for bank0 and bank1 respectively.

      - After connecting live update properties by applying TI PMBus, "../../master/ELFLNK/collect.c:778:internal fatal error #10478: (.TI.bound:PMBusStack_commandTransactionMap)" occurs.

    1. Does your Bank0 configuration build OK?

    - yes, Address mapping for bank0 succeeded.

    2. Does this error occur only with the Bank1 configuration?

    - yes, Address mapping failed for bank1.

    3. What are the differences between Bank0 and Bank1?

    - The basic code is the same.
    The difference between the two is the address mapping in the cmd file that distinguishes bank0 and bank1.

  • Jang,

    What do you mean by "after connecting live update properties by applying TI PMBus"? Do you mean Bank1 standalone builds without errors, but if you build Bank1 with Bank0 specified as --lfu_reference_elf, then you get the errors?

    You may need to tweak your Bank1 linker cmd file appropriately to resolve these errors.

    Thanks,

    Sira

  • It means to set the following as internal support options to preserve the properties of bank0.


    If I don't add PMBus, the lfu project compiles successfully. Adding PMBus causes an error.

    As for the cmd file, I attached the cmd files of bank0 and bank1 respectively when I first asked the question. Each address is set not to overlap. And the memory capacity is set so that it does not exceed. Please do a comparative review.

  • Jang,

    I'm afraid I can't debug your project for you. Based on earlier error messages you shared, it seems like RAMLS1 was too small to fit all the variables. It is likely you need to tweak your linker command file to get your project that includes PMBus to build. 

    Thanks,

    Sira

  • Sira

    The problem caused by RAMLS1 being small was solved by modifying the cmd file. Error when including PMBus The size of PMBusStack_commandTransactionMap still causes an error despite modifying the cmd file.

    Looking at Memory Allocation, PMBusStack_commandTransactionMap is mapped twice. Is this causing the error?
    What could be the cause of the double mapping?

    Memory Allocation -> FLASH_BANK0_SEC8910-> ramfuncs->const->PMBusStack_commandTransactionMap

    Thanks,

    Jang

  • Jang,

    What is PMBusStack_commandTransactionMap ? Is it a function or global variable or structure or..?

    Thanks,

    Sira

  • Also, just to clarify your earlier statement "If I don't add PMBus, the lfu project compiles successfully. Adding PMBus causes an error"

    This means Bank1 builds with Bank0 specified as the reference .out, when you don't have PMBus.

    What does "adding PMBus" mean? Is it additional code and data?

    Thanks,

    Sira

  • Additionally, can you create a test case per the below link for your error situation and send it

    https://software-dl.ti.com/ccs/esd/documents/sdto_cgt_How-to-Submit-a-Compiler-Test-Case.html

  • Sira

    What is PMBusStack_commandTransactionMap ? Is it a function or global variable or structure or..?

    -> PMBusStack_commandTransactionMap[64] is a field of structure.

    This means Bank1 builds with Bank0 specified as the reference .out, when you don't have PMBus.

    -> Yes, it is.

    What does "adding PMBus" mean? Is it additional code and data?

    -> This is the PMBus example code provided by TI.

    Thanks,

    Jang

  • Ok, thanks. Please provide the test case for the failing condition per the link I provided in my previous post.

  • Sira

    The makefile I created doesn't have a C_OPTS part.
    Please check where can I find the Makefile with the C_OPTS part.
    The makefile path I created is as follows.

    D:\workspace_v12\PCMC_PSFB_F28003x_KAIST330_bl89_5\BANK0_LDFU\makefile

    ################################################################################
    # Automatically-generated file. Do not edit!
    ################################################################################
    
    SHELL = cmd.exe
    
    CG_TOOL_ROOT := C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS
    
    GEN_OPTS__FLAG := 
    GEN_CMDS__FLAG := 
    
    ORDERED_OBJS += \
    "./init_stack.obj" \
    "./psfbpcmc.obj" \
    "./psfbpcmc_clatask.obj" \
    "./psfbpcmc_hal.obj" \
    "./psfbpcmc_lfu.obj" \
    "./psfbpcmc_main.obj" \
    "./PMBus/pmbus_examples_setup.obj" \
    "./PMBus/slave/handle_alert.obj" \
    "./PMBus/slave/handle_block_read.obj" \
    "./PMBus/slave/handle_block_write.obj" \
    "./PMBus/slave/handle_block_wrpc.obj" \
    "./PMBus/slave/handle_noalert.obj" \
    "./PMBus/slave/handle_process_call.obj" \
    "./PMBus/slave/handle_quick_command.obj" \
    "./PMBus/slave/handle_read_byte.obj" \
    "./PMBus/slave/handle_read_word.obj" \
    "./PMBus/slave/handle_receive_byte.obj" \
    "./PMBus/slave/handle_send_byte.obj" \
    "./PMBus/slave/handle_write_byte.obj" \
    "./PMBus/slave/handle_write_word.obj" \
    "./PMBus/source/pmbus_stack_config.obj" \
    "./PMBus/source/pmbus_stack_handler.obj" \
    "./PMBus/source/slave/pmbus_stack_handler_extended_command.obj" \
    "./PMBus/source/slave/pmbus_stack_handler_slave_block_write_process_call.obj" \
    "./PMBus/source/slave/pmbus_stack_handler_slave_idle.obj" \
    "./PMBus/source/slave/pmbus_stack_handler_slave_read_block.obj" \
    "./PMBus/source/slave/pmbus_stack_handler_slave_read_wait_for_eom.obj" \
    "./PMBus/source/slave/pmbus_stack_handler_slave_receive_byte_wait_for_eom.obj" \
    "./device/device.obj" \
    "./ldfu/flash_kernel_ex3_codestartbranch.obj" \
    "./ldfu/flash_kernel_ex3_ldfu.obj" \
    "./ldfu/flash_kernel_ex3_sci_flash_kernel.obj" \
    "./libraries/DCL/DCL_DF22_C1.obj" \
    "./libraries/DCL/DCL_DF22_C2C3.obj" \
    "./libraries/DCL/DCL_DF22_L2L3.obj" \
    "./libraries/DCL/DCL_PI_C1.obj" \
    "./libraries/DCL/DCL_PI_C4.obj" \
    "./libraries/DCL/DCL_clamp_C1.obj" \
    "./libraries/DCL/DCL_clamp_L1.obj" \
    "./libraries/DCL/DCL_error.obj" \
    "../FAPI_F28003x_EABI_v1.58.00.lib" \
    "../f28003x_flash_bl_bank0_lnk.cmd" \
    "../device/driverlib/driverlib.lib" \
    "../device/driverlib/driverlib_eabi.lib" \
    "../libraries/CLAmath/F28003x_CLADATROM_Symbols_fpu32.lib" \
    "../libraries/CLAmath/cla1_math_library_datarom_fpu32_eabi.lib" \
    "../libraries/CLAmath/cla2_math_library_fpu32_eabi.lib" \
    "../libraries/FPUfastRTS/rts2800_fpu32_fast_supplement_eabi.lib" \
    "../libraries/SFO/SFO_v8_fpu_lib_build_c28_driverlib_eabi.lib" \
    $(GEN_CMDS__FLAG) \
    -ldriverlib.lib \
    -ldriverlib_eabi.lib \
    -lF28003x_CLADATROM_Symbols_fpu32.lib \
    -lrts2800_fpu32_fast_supplement_eabi.lib \
    -lrts2800_fpu32_eabi.lib \
    -lcla2_math_library_fpu32_eabi.lib \
    -llibc.a \
    
    -include ../makefile.init
    
    RM := DEL /F
    RMDIR := RMDIR /S/Q
    
    # All of the sources participating in the build are defined here
    -include sources.mk
    -include subdir_vars.mk
    -include PMBus/subdir_vars.mk
    -include PMBus/slave/subdir_vars.mk
    -include PMBus/source/subdir_vars.mk
    -include PMBus/source/slave/subdir_vars.mk
    -include device/subdir_vars.mk
    -include device/driverlib/subdir_vars.mk
    -include ldfu/subdir_vars.mk
    -include libraries/CLAmath/subdir_vars.mk
    -include libraries/DCL/subdir_vars.mk
    -include libraries/FPUfastRTS/subdir_vars.mk
    -include libraries/SFO/subdir_vars.mk
    -include subdir_rules.mk
    -include PMBus/subdir_rules.mk
    -include PMBus/slave/subdir_rules.mk
    -include PMBus/source/subdir_rules.mk
    -include PMBus/source/slave/subdir_rules.mk
    -include device/subdir_rules.mk
    -include device/driverlib/subdir_rules.mk
    -include ldfu/subdir_rules.mk
    -include libraries/CLAmath/subdir_rules.mk
    -include libraries/DCL/subdir_rules.mk
    -include libraries/FPUfastRTS/subdir_rules.mk
    -include libraries/SFO/subdir_rules.mk
    -include objects.mk
    
    ifneq ($(MAKECMDGOALS),clean)
    ifneq ($(strip $(C55_DEPS)),)
    -include $(C55_DEPS)
    endif
    ifneq ($(strip $(C_UPPER_DEPS)),)
    -include $(C_UPPER_DEPS)
    endif
    ifneq ($(strip $(S67_DEPS)),)
    -include $(S67_DEPS)
    endif
    ifneq ($(strip $(S62_DEPS)),)
    -include $(S62_DEPS)
    endif
    ifneq ($(strip $(S_DEPS)),)
    -include $(S_DEPS)
    endif
    ifneq ($(strip $(OPT_DEPS)),)
    -include $(OPT_DEPS)
    endif
    ifneq ($(strip $(C??_DEPS)),)
    -include $(C??_DEPS)
    endif
    ifneq ($(strip $(ASM_UPPER_DEPS)),)
    -include $(ASM_UPPER_DEPS)
    endif
    ifneq ($(strip $(S??_DEPS)),)
    -include $(S??_DEPS)
    endif
    ifneq ($(strip $(C64_DEPS)),)
    -include $(C64_DEPS)
    endif
    ifneq ($(strip $(CXX_DEPS)),)
    -include $(CXX_DEPS)
    endif
    ifneq ($(strip $(S64_DEPS)),)
    -include $(S64_DEPS)
    endif
    ifneq ($(strip $(INO_DEPS)),)
    -include $(INO_DEPS)
    endif
    ifneq ($(strip $(CLA_DEPS)),)
    -include $(CLA_DEPS)
    endif
    ifneq ($(strip $(S55_DEPS)),)
    -include $(S55_DEPS)
    endif
    ifneq ($(strip $(SV7A_DEPS)),)
    -include $(SV7A_DEPS)
    endif
    ifneq ($(strip $(C62_DEPS)),)
    -include $(C62_DEPS)
    endif
    ifneq ($(strip $(C67_DEPS)),)
    -include $(C67_DEPS)
    endif
    ifneq ($(strip $(PDE_DEPS)),)
    -include $(PDE_DEPS)
    endif
    ifneq ($(strip $(K_DEPS)),)
    -include $(K_DEPS)
    endif
    ifneq ($(strip $(C_DEPS)),)
    -include $(C_DEPS)
    endif
    ifneq ($(strip $(CC_DEPS)),)
    -include $(CC_DEPS)
    endif
    ifneq ($(strip $(C++_DEPS)),)
    -include $(C++_DEPS)
    endif
    ifneq ($(strip $(C43_DEPS)),)
    -include $(C43_DEPS)
    endif
    ifneq ($(strip $(S43_DEPS)),)
    -include $(S43_DEPS)
    endif
    ifneq ($(strip $(ASM_DEPS)),)
    -include $(ASM_DEPS)
    endif
    ifneq ($(strip $(S_UPPER_DEPS)),)
    -include $(S_UPPER_DEPS)
    endif
    ifneq ($(strip $(CPP_DEPS)),)
    -include $(CPP_DEPS)
    endif
    ifneq ($(strip $(SA_DEPS)),)
    -include $(SA_DEPS)
    endif
    endif
    
    -include ../makefile.defs
    
    # Add inputs and outputs from these tool invocations to the build variables 
    EXE_OUTPUTS += \
    PCMC_PSFB_F28003x_KAIST330_bl89_5.out \
    
    EXE_OUTPUTS__QUOTED += \
    "PCMC_PSFB_F28003x_KAIST330_bl89_5.out" \
    
    BIN_OUTPUTS += \
    PCMC_PSFB_F28003x_KAIST330_bl89_5.hex \
    
    BIN_OUTPUTS__QUOTED += \
    "PCMC_PSFB_F28003x_KAIST330_bl89_5.hex" \
    
    
    # All Target
    all: $(OBJS) $(CMD_SRCS) $(LIB_SRCS) $(GEN_CMDS)
    	@$(MAKE) --no-print-directory -Onone "PCMC_PSFB_F28003x_KAIST330_bl89_5.out"
    
    # Tool invocations
    PCMC_PSFB_F28003x_KAIST330_bl89_5.out: $(OBJS) $(CMD_SRCS) $(LIB_SRCS) $(GEN_CMDS)
    	@echo 'Building target: "$@"'
    	@echo 'Invoking: C2000 Linker'
    	"C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/bin/cl2000" -v28 -ml -mt --cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu0 -O2 --opt_for_speed=5 --fp_mode=relaxed --advice:performance=all --define=_PMBUS_SLAVE --define=_TI_EABI_ --define=_DEBUG --define=F28x_DEVICE --define=CPU1 --define=LARGE_MODEL --define=_FLASH --define=BANK0 --define=PSFB_CONTROL_RUNNING_ON --define=LIVE_UPDATE -g --float_operations_allowed=32 --preproc_with_comment --preproc_with_compile --diag_suppress=10063 --diag_suppress=173 --diag_warning=225 --diag_wrap=on --display_error_number --quiet --abi=eabi --cla_background_task=off -k --asm_listing -z -m"PCMC_PSFB_F28003x_KAIST330_bl89_5.map" --heap_size=0x200 --stack_size=0x400 --warn_sections -i"C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/lib" -i"D:/workspace_v12/PCMC_PSFB_F28003x_KAIST330_bl89_5/libraries/CLAmath" -i"D:/workspace_v12/PCMC_PSFB_F28003x_KAIST330_bl89_5/libraries/FPUfastRTS" -i"D:/workspace_v12/PCMC_PSFB_F28003x_KAIST330_bl89_5/device/driverlib" -i"D:/workspace_v12/PCMC_PSFB_F28003x_KAIST330_bl89_5/device" -i"C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/include" -i"$(FlashAPI_LIB_ROOT)" --reread_libs --define=RAM --diag_wrap=off --display_error_number --xml_link_info="PCMC_PSFB_F28003x_KAIST330_bl89_5_linkInfo.xml" --entry_point=bankSelect --retain=c_int_lfu --rom_model -o "PCMC_PSFB_F28003x_KAIST330_bl89_5.out" $(ORDERED_OBJS)
    	@echo 'Finished building target: "$@"'
    	@echo ' '
    	@$(MAKE) --no-print-directory post-build
    
    PCMC_PSFB_F28003x_KAIST330_bl89_5.hex: $(EXE_OUTPUTS)
    	@echo 'Building secondary target: "$@"'
    	@echo 'Invoking: C2000 Hex Utility'
    	"C:/ti/ccs1210/ccs/tools/compiler/ti-cgt-c2000_22.6.0.LTS/bin/hex2000" --diag_wrap=off -o "PCMC_PSFB_F28003x_KAIST330_bl89_5.hex" $(EXE_OUTPUTS__QUOTED)
    	@echo 'Finished building secondary target: "$@"'
    	@echo ' '
    	@$(MAKE) --no-print-directory post-build
    
    # Other Targets
    clean:
    	-$(RM) $(GEN_MISC_FILES__QUOTED)$(BIN_OUTPUTS__QUOTED)$(EXE_OUTPUTS__QUOTED)
    	-$(RM) "init_stack.lst" "psfbpcmc.lst" "psfbpcmc_clatask.lst" "psfbpcmc_hal.lst" "psfbpcmc_lfu.lst" "psfbpcmc_main.lst" "PMBus/pmbus_examples_setup.lst" "PMBus/slave/handle_alert.lst" "PMBus/slave/handle_block_read.lst" "PMBus/slave/handle_block_write.lst" "PMBus/slave/handle_block_wrpc.lst" "PMBus/slave/handle_noalert.lst" "PMBus/slave/handle_process_call.lst" "PMBus/slave/handle_quick_command.lst" "PMBus/slave/handle_read_byte.lst" "PMBus/slave/handle_read_word.lst" "PMBus/slave/handle_receive_byte.lst" "PMBus/slave/handle_send_byte.lst" "PMBus/slave/handle_write_byte.lst" "PMBus/slave/handle_write_word.lst" "PMBus/source/pmbus_stack_config.lst" "PMBus/source/pmbus_stack_handler.lst" "PMBus/source/slave/pmbus_stack_handler_extended_command.lst" "PMBus/source/slave/pmbus_stack_handler_slave_block_write_process_call.lst" "PMBus/source/slave/pmbus_stack_handler_slave_idle.lst" "PMBus/source/slave/pmbus_stack_handler_slave_read_block.lst" "PMBus/source/slave/pmbus_stack_handler_slave_read_wait_for_eom.lst" 
    	-$(RM) "PMBus/source/slave/pmbus_stack_handler_slave_receive_byte_wait_for_eom.lst" "device/device.lst" "ldfu/flash_kernel_ex3_codestartbranch.lst" "ldfu/flash_kernel_ex3_ldfu.lst" "ldfu/flash_kernel_ex3_sci_flash_kernel.lst" "libraries/DCL/DCL_DF22_C1.lst" "libraries/DCL/DCL_DF22_C2C3.lst" "libraries/DCL/DCL_DF22_L2L3.lst" "libraries/DCL/DCL_PI_C1.lst" "libraries/DCL/DCL_PI_C4.lst" "libraries/DCL/DCL_clamp_C1.lst" "libraries/DCL/DCL_clamp_L1.lst" "libraries/DCL/DCL_error.lst" 
    	-$(RM) "init_stack.obj" "psfbpcmc.obj" "psfbpcmc_clatask.obj" "psfbpcmc_hal.obj" "psfbpcmc_lfu.obj" "psfbpcmc_main.obj" "PMBus\pmbus_examples_setup.obj" "PMBus\slave\handle_alert.obj" "PMBus\slave\handle_block_read.obj" "PMBus\slave\handle_block_write.obj" "PMBus\slave\handle_block_wrpc.obj" "PMBus\slave\handle_noalert.obj" "PMBus\slave\handle_process_call.obj" "PMBus\slave\handle_quick_command.obj" "PMBus\slave\handle_read_byte.obj" "PMBus\slave\handle_read_word.obj" "PMBus\slave\handle_receive_byte.obj" "PMBus\slave\handle_send_byte.obj" "PMBus\slave\handle_write_byte.obj" "PMBus\slave\handle_write_word.obj" "PMBus\source\pmbus_stack_config.obj" "PMBus\source\pmbus_stack_handler.obj" "PMBus\source\slave\pmbus_stack_handler_extended_command.obj" "PMBus\source\slave\pmbus_stack_handler_slave_block_write_process_call.obj" "PMBus\source\slave\pmbus_stack_handler_slave_idle.obj" "PMBus\source\slave\pmbus_stack_handler_slave_read_block.obj" "PMBus\source\slave\pmbus_stack_handler_slave_read_wait_for_eom.obj" 
    	-$(RM) "PMBus\source\slave\pmbus_stack_handler_slave_receive_byte_wait_for_eom.obj" "device\device.obj" "ldfu\flash_kernel_ex3_codestartbranch.obj" "ldfu\flash_kernel_ex3_ldfu.obj" "ldfu\flash_kernel_ex3_sci_flash_kernel.obj" "libraries\DCL\DCL_DF22_C1.obj" "libraries\DCL\DCL_DF22_C2C3.obj" "libraries\DCL\DCL_DF22_L2L3.obj" "libraries\DCL\DCL_PI_C1.obj" "libraries\DCL\DCL_PI_C4.obj" "libraries\DCL\DCL_clamp_C1.obj" "libraries\DCL\DCL_clamp_L1.obj" "libraries\DCL\DCL_error.obj" 
    	-$(RM) "init_stack.asm" "psfbpcmc.asm" "psfbpcmc_clatask.asm" "psfbpcmc_hal.asm" "psfbpcmc_lfu.asm" "psfbpcmc_main.asm" "PMBus/pmbus_examples_setup.asm" "PMBus/slave/handle_alert.asm" "PMBus/slave/handle_block_read.asm" "PMBus/slave/handle_block_write.asm" "PMBus/slave/handle_block_wrpc.asm" "PMBus/slave/handle_noalert.asm" "PMBus/slave/handle_process_call.asm" "PMBus/slave/handle_quick_command.asm" "PMBus/slave/handle_read_byte.asm" "PMBus/slave/handle_read_word.asm" "PMBus/slave/handle_receive_byte.asm" "PMBus/slave/handle_send_byte.asm" "PMBus/slave/handle_write_byte.asm" "PMBus/slave/handle_write_word.asm" "PMBus/source/pmbus_stack_config.asm" "PMBus/source/pmbus_stack_handler.asm" "PMBus/source/slave/pmbus_stack_handler_extended_command.asm" "PMBus/source/slave/pmbus_stack_handler_slave_block_write_process_call.asm" "PMBus/source/slave/pmbus_stack_handler_slave_idle.asm" "PMBus/source/slave/pmbus_stack_handler_slave_read_block.asm" "PMBus/source/slave/pmbus_stack_handler_slave_read_wait_for_eom.asm" 
    	-$(RM) "PMBus/source/slave/pmbus_stack_handler_slave_receive_byte_wait_for_eom.asm" "device/device.asm" "ldfu/flash_kernel_ex3_codestartbranch.asm" "ldfu/flash_kernel_ex3_ldfu.asm" "ldfu/flash_kernel_ex3_sci_flash_kernel.asm" "libraries/DCL/DCL_DF22_C1.asm" "libraries/DCL/DCL_DF22_C2C3.asm" "libraries/DCL/DCL_DF22_L2L3.asm" "libraries/DCL/DCL_PI_C1.asm" "libraries/DCL/DCL_PI_C4.asm" "libraries/DCL/DCL_clamp_C1.asm" "libraries/DCL/DCL_clamp_L1.asm" "libraries/DCL/DCL_error.asm" 
    	-$(RMDIR) $(GEN_MISC_DIRS__QUOTED)
    	-@echo 'Finished clean'
    	-@echo ' '
    
    post-build:
    	-copy D:\workspace_v12\PCMC_PSFB_F28003x_KAIST330_bl89_5\BANK0_LDFU\syscfg\psfbpcmc\F28004x\Kit.json D:\workspace_v12\PCMC_PSFB_F28003x_KAIST330_bl89_5\BANK0_LDFU\..\Kit.json
    	-@echo ' '
    
    .PHONY: all clean dependents
    .SECONDARY:
    
    -include ../makefile.targets

    Thanks,

    Jang

  • Because the problem occurs while linking, a preprocessed C file is not enough to reproduce the problem.  Unfortunately, we need more than that.

    Please put your CCS project in the state where the internal fatal error occurs.  Then zip up the project as described in the article Sharing projects, then attach the zip to your next post.

    If that is not feasible ... Please rebuild the entire project.  One way to do that is to right-click on the name of the project and select Rebuild Project.  Then save the contents of the Console (not Problems) view to a text file.  Use the icon named Copy Build Log.  When you name the log file, be sure to use the file extension .txt.  The last invocation of cl2000 in that log file is the link.  Note all of the object files, libraries, and linker command files it names.  Copy all of those files into an empty directory.  Copy in the log file.  Zip up everything in that directory and attach it to your next post.

    Thanks and regards,

    -George

  • 0005.makefile.zip

    Sira, George

    I noticed that "--preproc_with_comment", --"preproc_with_compile" were added to the makefile.
    We will send you the generated .pp.txt file.

    Thanks,

    Jang

  • Thank you for the preprocessed files.  However, we are unable to use them to reproduce the problem.

    Are you willing to submit the entire CCS project?  The directions on how to do that are in my last post.

    Thanks and regards,

    -George  

  • Thank you for submitting the CCS project through a private message.  I am able to reproduce the same behavior.  I filed EXT_EP-11164 to have this investigated.  You are welcome to follow it with that link.

    To understand why I mark this reply with TI Thinks Resolved, please see the first FAQ in the CCS Forum Usage Guidelines.

    Thanks and regards,

    -George

  • George

    The dfu compile error is identical to the error reproduced in EXT_EP-11164.

    I'm using the TI ldfu project with some variations.
    I don't know if it will help you solve the problem, but please refer to the explanation file I sent you.

    Thanks and regards,

    Jang

  • Jang,

    The compiler team investigated this pretty thoroughly, and have concluded that there is a Linker bug that is causing this issue.

    They advised that they will fix this in 22.6.1.LTS with plans to release this summer.

    Thanks,

    Sira

  • Sira

    Thank you very much for confirming the problem.

    When using DSP28F0049C, 20.12.0.STS was used. (C:\ti\ccs1120\ccs\tools\compiler\ti-cgt-c2000_20.12.0.STS )
    I am using 22.6.0.LTS while changing to DSP28F0039C. (C:\ti\ccs1210\ccs\tools\compiler\ti-cgt-c2000_22.6.0.LTS)
    So, is the compiler version only 22.6.0.LTS the problem? Is it possible to use a version lower than 22.6.0.LTS without linker bugs?
    Please let me know if there is a compiler version that can be used without linker bugs in ccs1210 version.

    Thanks,

    Jang

  • Jang,

    I was advised that the issue is likely present in both 22.6 and 21.6, just manifesting in slightly different ways.

    So at this time I can't specify a compiler version where you will not run into this issue.

    Thanks,

    Sira

  • Sira

    Please check again.
    "With DSP28F0049C, ldfu can be implemented, but with DSP28F0039C, it is not yet possible due to a linker bug", right?

    Thanks,

    Jang

  • Jang,

    The device should not matter here, only the compiler version.

    20.12.0.STS did not have any the LFU features, and since it is an "STS" release, we would not recommend going to production with it. An "LTS" release should be used. And as I mentioned, both the 21.6 and 22.6 LTS releases seem to have the issue.

    Thanks,

    Sira

  • Sira

    Sorry for the long question,
    You said there is no lfu in 20.12.0.STS version, but I tested lfu on DSP28F0049C.
    I'm not mass-producing, I'm just trying to test.
    I was able to test with the 20.12.0.STS version, but is it impossible to test with the 22.6.1.LTS version?

    Thanks,

    Jang

  • Jang,

    I mistyped - I meant to say 20.12.STS did not have "many" (not "any") LFU related features.

    Are you saying that you are not getting the LFU error (with PMBus code + data included) with 20.12.STS??

    Thanks,

    Sira

  • Sira

    In the 20.12.STS version applied with DSP28F0049C, it is a project without PMBus code.

    This is a project to apply PMBus code to DSP28F0039C.

    If so, can we understand the current LFU error as a problem caused by the inclusion of the PMBus code?

    Thanks,

    Jang

  • Jang,

    Correct, the inclusion of the PMBus code is leading to a situation where a header file that defines a static type, when included in two separate source files, leads to duplication of the same static type (only with LFU, not otherwise), which is unexpected. This is the linker error the compiler team discovered.

    Thanks,

    Sira