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.

Compiler/LAUNCHXL-CC2640R2: Simple_Peripheral link failed for Converting Library Build to Split Image

Part Number: LAUNCHXL-CC2640R2
Other Parts Discussed in Thread: SYSBIOS, CC2640R2F

Tool/software: TI C/C++ Compiler

For on-chip OAD, I want split the simple peripheral example from library to split image.

I use the simple perpheral example and follow the instructions of TI step by step, but the Application link fails. Did anyone encounter a similar problem?

Thank you in advance.

 

My SDK version: simplelink_cc2640r2_sdk_1_40_00_45

IAR version:8.11

The link error information:

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

IAR ELF Linker V8.11.3.13950/W32 for ARM
Copyright 2007-2017 IAR Systems AB.
Error[Lp022]: absolute placement (in [0x20004bf8-0x20004fff]) overlaps with previous absolute placement A111 rw (in [0x20000204-0x20004f7f]), at line 109 of C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\simple_peripheral\tirtos\iar\app\..\..\..\..\..\..\..\..\source\ti\ble5stack\common\cc26xx\iar\cc26xx_app.icf 246
"C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/kernel/tirtos/packages/ti/sysbios/rom/cortexm/cc26xx/r2/golden/CC26xx/TIRTOS_ROM.icf"
Error[Lp023]: absolute placement (in [0x20004bf8-0x20004fff]) overlaps with absolute symbol: C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\simple_peripheral\tirtos\iar\app\..\..\..\..\..\..\..\..\source\ti\ble5stack\common\cc26xx\iar\cc26xx_app.icf 246
[0x20004f80-0x20004f83] "eccRom_param_Gx"
[0x20004f84-0x20004f87] "eccRom_param_Gy"
... and 6 more

Error[Lp011]: section placement failed
unable to complete "place at" directives with a total estimated minimum size of 0x508 bytes in <[0x20000100-0x20000143], [0x20000144-0x20000177], [0x20000178-0x200001a3], [0x200001a4-0x200001c7],
[0x200001c8-0x200001e3], [0x200001e4-0x200001eb], [0x200001ec-0x200001ef], [0x200001f0-0x200001f7], [0x200001f8-0x200001ff], [0x20000200-0x20000203], [0x20000204-0x20004fff]> (total space 0x4f00).
Needed:
[0x20000100-0x20000143]: 0x44 min, align 0x4 (size: 0x44)
[0x20000144-0x20000177]: 0x34 min, align 0x4 (size: 0x34)
[0x20000178-0x200001a3]: 0x2c min, align 0x4 (size: 0x2c)
[0x200001a4-0x200001c7]: 0x24 min, align 0x4 (size: 0x24)
[0x200001c8-0x200001e3]: 0x1c min, align 0x4 (size: 0x1c)
[0x200001e4-0x200001eb]: 0x8 min, align 0x4 (size: 0x8)
[0x200001ec-0x200001ef]: 0x4 min, align 0x4 (size: 0x4)
[0x200001f0-0x200001f7]: 0x8 min, align 0x4 (size: 0x8)
[0x200001f8-0x200001ff]: 0x8 min, align 0x4 (size: 0x8)
[0x20000200-0x20000203]: 0x4 min, align 0x4 (size: 0x4)
[0x20000204-0x20004f7f]: 0x2 min, align 0x2 (size: 0x4d7c)
[0x20004bf8-0x20004fff]: 0x401 min, align 0x8 (size: 0x408)
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.
Error[Lp021]: the destination for compressed initializer batch "RWDATA-1" is placed at an address that is dependent on the size of the batch, which is not allowed when using lz77 compression. Consider using "initialize by copy with
packing = zeros" (or none) instead.

33 871 bytes of readonly code memory
4 676 bytes of readonly data memory
1 287 bytes of readwrite data memory

Errors: 15
Warnings: none

  • Hello,

    Were you following the instructions found here? 

    http://software-dl.ti.com/lprf/simplelink_cc2640r2_latest/docs/blestack/ble_user_guide/html/cc2640/architecture.html#converting-library-build-to-split-image

    If so, can you please try the following additional steps?

    Under the Application project settings, 

    1. Go to C/C++ Compiler Options –> Extra Options

      • Add the following to the Command line options: (one per line) window:

    -f $PROJ_DIR$\..\config\iar_boundary.bdef

    2. Go to Linker Options –> Extra Options Tab

      • Remove the following from the Command line options: (one per line) window:

    -f $PROJ_DIR$/../config/lib_linker.cmd

      • Add the following from the Command line options: (one per line) window:

    -f $PROJ_DIR$\..\config\iar_boundary.xcl

    -Sy Su

     

  • Thanks for you quick response.
    I have compile and link the simple_peripheral application success according your instruction.
    But when I use Flash Programmer to flash stack and app to CC2640R2F Launch, it failed because overlap flash .
    (Error info: Overlapping flash area in page: 15, offset address 0x0928), I found the stack need 54971( 53K)Bytes, Is this normal?
    To solve this problem, do I have to manually configure the boundary of application and stack flash?


    content about iar_boundary.bdef
    -----------------------------------------
    -D ICALL_STACK0_ADDR=0x0000f929
    -D ICALL_STACK0_START=0x0000f928
    -D ICALL_RAM0_START=0x20003d30

    content about Application flashRom map:
    ---------------------------------------
    39 017 bytes of readonly code memory
    4 110 bytes of readonly data memory
    8 356 bytes of readwrite data memory

    content Stack flashROM map
    ------------------------------------------
    54 971 bytes of readonly code memory
    8 165 bytes of readonly data memory
    1 742 bytes of readwrite data memory
  • Hi,

    I went through the instructions and added split image support for the simple_peripheral project.

    I have attached the project below:

    simple_peripheral_split_img.zip

    It's possible that a misstep occurred?

    Just extract the project in the following directory of the SDK: C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\blestack

    The project configuration you will want to use is called FlashROM for both the app and stack.

    Let me know if that works for you.

    -Sy Su

  • Hi,
    After I put the simple_perpheral_split_img to the SDK directory, it compile and link success. But it also failed during overlapping error when I use FlashProgramer2 to flash the chip.


    Flash programer error info
    --------------------------------------------------------------
    >Initiate access to target: XDS-L50001MX.
    >Reading file: C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/examples/rtos/CC2640R2_LAUNCHXL/blestack/simple_peripheral_split_img/tirtos/iar/stack/FlashROM/Exe/ble_simple_peripheral_cc2640r2lp_stack_FlashROM.hex.
    >Reading file: C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/examples/rtos/CC2640R2_LAUNCHXL/blestack/simple_peripheral_split_img/tirtos/iar/app/FlashROM/Exe/ble_simple_peripheral_cc2640r2lp_app_FlashROM.hex.
    >Overlapping flash area in page: 22, offset address 0x0384
    >Reset target ...


    iar_boundary.bdef file
    -------------------------------
    /*
    ** Stack Frontier Generator 1.1.0 (2017-10-25 13:24:56.522000)
    **
    ** WARNING - Auto-generated file. Modifications could be lost!
    */

    -D ICALL_STACK0_ADDR=0x00016385
    -D ICALL_STACK0_START=0x00016384
    -D ICALL_RAM0_START=0x200040a8
    -D NV_FLASH_PAGES=0
  • Hi,
    I am facing the same issue... How did you solved it??

    Please help me...