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.

CC1310: migration from 64k to 128k device

Part Number: CC1310

Hi,

We have been using the 64k version of CC1310 for several years and had no problems. When this version went out of stock, we decided to use the 128k version.

What we do for this change is:

1.- Change from CC1310F64 to CC1310F128 in the project configuration.

2.- Modify the file CC1310_LAUNCHXL_TIRTOS.cmd

Old file (64k version):

/*

*  ======== CC1310_LAUNCHXL.cmd =======================================================================================

*/

 

--stack_size=1024   /* C stack is also used for ISR stack */

 

HEAPSIZE = 0x1000;  /* Size of heap buffer used by HeapMem */

 

/* Override default entry point.                                             */

--entry_point ResetISR

/* Allow main() to take args                                                 */

--args 0x8

/* Suppress warnings and errors:                                             */

/* - 10063: Warning about entry point not being _c_int00                     */

/* - 16011, 16012: 8-byte alignment errors. Observed when linking in object  */

/*   files compiled using Keil (ARM compiler)                                */

--diag_suppress=10063,16011,16012

 

/* The starting address of the application.  Normally the interrupt vectors  */

/* must be located at the beginning of the application.                      */

#define FLASH_BASE              0x0

//#define FLASH_SIZE              0x20000

#define FLASH_SIZE              0x10000

#define RAM_BASE                0x20000000

//#define RAM_SIZE                0x5000

#define RAM_SIZE                0x4000

 

/* System memory map */

 

MEMORY

{

    /* Application stored in and executes from internal flash */

    FLASH (RX) : origin = FLASH_BASE, length = FLASH_SIZE

    /* Application uses internal RAM for data */

    SRAM (RWX) : origin = RAM_BASE, length = RAM_SIZE

}

 

/* Section allocation in memory */

 

SECTIONS

{

    .text           :   > FLASH

    .TI.ramfunc     : {} load=FLASH, run=SRAM, table(BINIT)

    .const          :   > FLASH

    .constdata      :   > FLASH

    .rodata         :   > FLASH

    .cinit          :   > FLASH

    .pinit          :   > FLASH

    .init_array     :   > FLASH

    .emb_text       :   > FLASH

    .ccfg           :   > FLASH (HIGH)

 

    .data           :   > SRAM

    .bss            :   > SRAM

    .sysmem         :   > SRAM

    .nonretenvar    :   > SRAM

 

    /* Heap buffer used by HeapMem */

    .priheap   : {

        __primary_heap_start__ = .;

        . += HEAPSIZE;

        __primary_heap_end__ = .;

    } > SRAM align 8

 

    .stack          :   > SRAM (HIGH)

}

/*===============================================================================================================*/

New file (128k version):

/*

*  ======== CC1310_LAUNCHXL.cmd =================================================================================

*/

 

--stack_size=1024   /* C stack is also used for ISR stack */

 

HEAPSIZE = 0x1000;  /* Size of heap buffer used by HeapMem */

 

/* Override default entry point.                                             */

--entry_point ResetISR

/* Allow main() to take args                                                 */

--args 0x8

/* Suppress warnings and errors:                                             */

/* - 10063: Warning about entry point not being _c_int00                     */

/* - 16011, 16012: 8-byte alignment errors. Observed when linking in object  */

/*   files compiled using Keil (ARM compiler)                                */

--diag_suppress=10063,16011,16012

 

/* The starting address of the application.  Normally the interrupt vectors  */

/* must be located at the beginning of the application.                      */

#define FLASH_BASE              0x0

#define FLASH_SIZE              0x20000

#define RAM_BASE                0x20000000

#define RAM_SIZE                0x5000

 

/* System memory map */

 

MEMORY

{

    /* Application stored in and executes from internal flash */

    FLASH (RX) : origin = FLASH_BASE, length = FLASH_SIZE

    /* Application uses internal RAM for data */

    SRAM (RWX) : origin = RAM_BASE, length = RAM_SIZE

}

 

/* Section allocation in memory */

 

SECTIONS

{

    .text           :   > FLASH

    .TI.ramfunc     : {} load=FLASH, run=SRAM, table(BINIT)

    .const          :   > FLASH

    .constdata      :   > FLASH

    .rodata         :   > FLASH

    .cinit          :   > FLASH

    .pinit          :   > FLASH

    .init_array     :   > FLASH

    .emb_text       :   > FLASH

    .ccfg           :   > FLASH (HIGH)

 

    .data           :   > SRAM

    .bss            :   > SRAM

    .sysmem         :   > SRAM

    .nonretenvar    :   > SRAM

 

    /* Heap buffer used by HeapMem */

    .priheap   : {

        __primary_heap_start__ = .;

        . += HEAPSIZE;

        __primary_heap_end__ = .;

    } > SRAM align 8

 

    .stack          :   > SRAM (HIGH)

}

/*===============================================================================================================*/

Results for the emmiter are good. Everything works OK, just like the 64K version.

But we have some troubles with the receiver. Almost all of the times, receiver does not react to the emmiter commands. Ocasionally, if the emmiter is really near (cm) and after lots of attempts, receiver works.

Any idea about what´s happening?  (No changes in the Hardware)

Thanks for your help. Regards

  • If you are able to run code on the F128 the cmd should not be the issue. The only difference between them is the available memory. Just as a double check, could you read out the CCFG section and verify that this is the same and on the last flash page for both version? 

    Do you see this issue only on one PCB or do you have the same issue on all boards? Just to verify that not some (unknown) changes have occurred, if you switch back to a F64 the receiver works as expected?   

  • Hi TER,

    Thanks for the reply.

    Regarding hardware, I have tested  it in various different boards, and the result is always the same. And yes, if I switch back to 64k, board works OK again...

    Regarding the CCFG section, I will try to check it this afternoon and tell you the result. 

  • If you read out the flash for the F64 and F128 versions the content should be equal  except for 0xFF for the pages that not in use and the CCFG section should be equal and placed on the last flash page.