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.

CC2640R2F: Need more info about .snvVector section defined in cc26xx_app.cmd

Part Number: CC2640R2F

In porting from our code from BLE SDK 1.35 to 1.40, we come across a new memory section defined in cc26xx_app.cmd at FLASH (HIGH). Can you tell us more about it or where we can find further info? Just happen we have (and need) our own section defined exactly the same place, we need to resolve this conflict according. 

/*******************************************************************************
 * Section Allocation in Memory
 ******************************************************************************/
SECTIONS
{
  .intvecs        :   >  FLASH_START
  .text           :   >> FLASH | FLASH_LAST_PAGE
  .const          :   >> FLASH | FLASH_LAST_PAGE
  .constdata      :   >> FLASH | FLASH_LAST_PAGE
  .rodata         :   >> FLASH | FLASH_LAST_PAGE
  .cinit          :   >  FLASH | FLASH_LAST_PAGE
  .pinit          :   >> FLASH | FLASH_LAST_PAGE
  .init_array     :   >  FLASH | FLASH_LAST_PAGE
  .emb_text       :   >> FLASH | FLASH_LAST_PAGE
  .snvSectors     :   > FLASH (HIGH) <----------------------------------(new in 1.40)
  .ccfg           :   >  FLASH_LAST_PAGE (HIGH)

...

  • Hi Ming,

    That particular section is allocated for our SNV (simple non volatile) storage system. It's primarily used for saving bonding information by our protocol stack. It's completely optional - no space has to explicitly be reserved if you're not using it. Set OSAL_SNV = 0, and disable bonding on the GAPBondMgr. Also, location is very important for SNV, it must be located either on page 31 and/or 30, these are hard coded possible locations.

    The command you reference above in the linker command file effectively indicates that it starts at the end and reserves down in terms of the address range. (End -> Beginning) You can find documentation of this in the TI Arm linker documentation www.ti.com/.../spnu118s.pdf (See Section 8.5.5)

    Note: reservation methods have always been present in our SDKs for SNV, earlier it was done by a RESERVED_FLASH_SIZE define which modified the total flash available for the application. As you point out, in the latest SDK we reserve the space in Sections now instead of modifying the total Flash available to the application. A different way, same effect.

    It sounds like earlier you had no conflict, so then you may not be using bonding in your application. You should be able to disable SNV safely.

    Hope this helps,
    Regards,
    Rebel