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.

What is the address range of CC1310 memory ?

Other Parts Discussed in Thread: CC1310

Hello, everyone!

   Where can I find the details of CC1310 memory? I want to know the address range of CC1310 info page,  ROM and flash.

  Hellc

  • Hi,

    please find a memory map in the CC13XXWare documentation.

  • Hi, Richard W.

    I find that the info page is FCFG1, and there are some byte used by RTOS. Every byte in FCFG2 is 0xFF, so I think that I can save my config info into FCFG2. It is right?

    Best Regards,
    Gilbert
  • Hi Gilbert,

    the FCFG1/2 sections contain factory settings are not writeable. The CCFG section contains the application configuration and maps to the last page in flash. You can use this section to store additional configuration settings, but you need to use the flash address. I reommend using the flash section before CCFG in order to not delete the CCFG by accident. Here is a more application-centric memory map:

    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+
    | Segment       | Begin       | End         | Size         | Description                                                              |
    +===============+=============+=============+==============+==========================================================================+
    | Flash         | 0x0000 0000 | 0x0000 0FFF | 4 KiB        | Free for application. 0x0000 is used as default reset vector.            |
    | (32/128 KiB)  +-------------+-------------+--------------+--------------------------------------------------------------------------+
    |               | 0x0000 1000 | 0x0000 14FF | 1280 B       | When using TI-RTOS in ROM, this section contains kernel data structures  |
    |               |             |             |              | at fixed addresses.                                                      |
    |               +-------------+-------------+--------------+--------------------------------------------------------------------------+
    |               | 0x0000 1500 | 0x0001 FFA7 | 1280 B       | Free for application                                                     |
    |               +-------------+-------------+--------------+--------------------------------------------------------------------------+
    |               | 0x0001 FFA8 | 0x0001 FFFF | 88 B         | Customer configuration (CCFG) area. It contains configuration            |
    |               |             |             |              | parameters for the ROM bootcode, device hardware, and device firmware.   |
    |               |             |             |              | Please refer to the Device Configuration chapter in the                  |
    |               |             |             |              | `Technical Reference Manual`_                                            |
    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+
    | ROM           | 0x1000 0000 | 0x1001 FFFF | 128 KiB      | Pre-built functions from TI-RTOS kernel and DriverLib. This reduces the  |
    | (128 KiB)     |             |             |              | size of applications. See `Rom Functions`_ and also                      |
    |               |             |             |              | :ref:`using_internal_rom`.                                               |
    |               |             |             |              |                                                                          |
    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+
    | GPRAM         | 0x1100 0000 | 0x1100 1FFF | 8 KiB        | Used as internal instruction cache by default. Can be used for           |
    |               |             |             |              | application purpose. Please refer to the VIMS chapter in the             |
    |               |             |             |              | `Technical Reference Manual`_.                                           |
    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+
    | SRAM          | 0x2000 0000 | 0x2004 FFFF | 20 KiB       | Free for application data.                                               |
    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+
    | RFC_RAM       | 0x2100 0000 | 0x2100 FFFF | 4 KiB        | Internal RF Core RAM. Not accessible from the application.               |
    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+
    | Peripheral    | 0x4000 0000 | 0xFFFF FFFF |              | Internal registers of peripheral units. Not accessible from the          |
    | and internal  |             |             |              | application. Please refer to `CPU Domain Memory Map`_ for details.       |
    | registers     |             |             |              |                                                                          |
    +---------------+-------------+-------------+--------------+--------------------------------------------------------------------------+

  • Hi, Richard W.

    I have some questions about CCFG:

    1. The size of CCFG is 4KB. Why is the size of  the Customer configuration (CCFG) area in flash 88B? Should I use other 4KB-88B?

    2. In "SmartRF Flash Programmer2 ver.1.7.2 ---> Edit ---> CCFG", I change the value in address 0x0001ffb8 from 0xFF to 0x01. After reload new code in CCS, the value in address 0x0001ffb8 has been 0xFF. I hope to know how to do in order to make sure that the value in CCFG won't  be changed.

    Best Regards,

    Gilbert

  • Hi Gilbert,

    1. The flash section size (also referred to as page size/ segment size) on the CC1310 is 4KiB. This is only important when erasing, because only whole sections can be deleted on a flash. The CCFG is located at the end of the last section and uses 88 bytes that are memory-mapped to internal registers.
    2. When you perform a chip erase, then the whole flash is wiped out, including the CCFG. The default value after erase is 1 for a cell, hence 0xFF for every byte. If you don't erase that section, the content remains. In order to keep the content of this section:
      1. Uncheck the "Erase" action in Flash programmer
      2. Do not build the ccfg.c file with your TI-RTOS application, but build it separately and only flash it once. be warned that you can only flip bits from 1 to 0 without erasing. When you erase the section where the CCFG remains, you must immediately restore the content. If something bad happens during that procedure, then your application won't boot after the next reset. 

  • Hi Richard W.

    Selecting this can help me make sure the content in CCFG won't be changed?

    Best Regards,

    Gilbert

  • This makes sure that the debugger won't overwrite the .ccfg section when it uploads an application even though it is included in the application image. If you don't build the ccfg.c file in your project, then this option is not necessary because a ccfg section is not included. However, TI-RTOS requires this section to be present when it starts. So you must flash it at least once. Afther that you can reflash your device as many times as you want as long as the .ccfg section is not deleted.

    I don't know about the internal ROM bootloader, maybe it requires some of the bytes in the .ccfg, too.

    In my previous post, I talked about FlashProgrammer2 which is a separate programming tool.

  • Hi, Richard.

    Another question.
    In my CC1310 project, executing malloc(n) must failed when n is more than 1000. And I find that malloc is defined in cfg_pem3.c file. I guess that it will execute successfully if calling malloc declarated in stdlib.h. file. But I don't know how to call the malloc declarated in stdlib.h file.

    Best Regards,
    Gilbert
  • Hello Richard,

                      I am trying to write my data into the flash using following code :

      if( FlashProtectionGet( FLASHMEM_BASE_ADDR ) == FLASH_NO_PROTECT)
            {
                  if(FlashSectorErase(FLASHMEM_BASE_ADDR ) != FAPI_STATUS_SUCCESS)
                  {
                      while(1);
                  }
                  FlashProgram( (uint8_t *)pbuffer, FLASHMEM_BASE_ADDR, 16);
            }
             
    
    

    FLASHMEM_BASE_ADDR = 0xF00.

    However I am not able to erase the flash and FlashSectorErase function is returning FAPI_STATUS_INCORRECT_DATABUFFER_LENGTH.
    Am I using wrong flash address to write the user data ?

  • Hi,

    Omkar Inamdar said:
    However I am not able to erase the flash and FlashSectorErase function is returning FAPI_STATUS_INCORRECT_DATABUFFER_LENGTH.
    Am I using wrong flash address to write the user data ?

    The flash sector/page size is 4 KiB. Hence the address provided to FlashSectorErase() must be a multiple of 4 KiB (4 * 1024 bytes), e.g. 0x0000, 0x1000, 0x2000, ...

  • Hello Richard,
    Yes, I made that correction and it is working. However I would like to ask that I am using 0xF000 for storing 180 bytes of data. Is the address within range of user data flash?
  • Yes, it is. I have also updated the table in my previous post to make it more visible.

  • Hello Richard,
    Yes, I got it. Thank you ! You have been of great help :)