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.
Hi,
Recently we have moved from TI's CC110L to TI CC1310. But it comes to us at very high cost on firmware size.
Here are the few examples program analysis (from simplelink SDK):
empty_CC1310_LAUNCHXL_tirtos_ccs Dependency - tirtos_builds_CC1310_LAUNCHXL_release_ccs_4_20_01_03 |
name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- FLASH 00000000 00020000 00003f92 0001c06e R X SRAM 20000000 00005000 00001e4f 000031b1 RW X |
= 0x3f92 ~ 16274 Bytes (~15.92 KB) |
rfPacketTx_CC1310_LAUNCHXL_tirtos_ccs | name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- FLASH 00000000 00020000 00006b32 000194ce R X SRAM 20000000 00005000 000023e2 00002c1e RW X |
0x6b32 ~ 27442 Bytes (~26.69 KB) |
rfPacketTx_CC1310_LAUNCHXL_nortos_ccs | name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- FLASH 00000000 00020000 00005d34 0001a2cc R X SRAM 20000000 00005000 00000fc5 0000403b RW X |
0x5d34 ~ 23860 Bytes (~23.30 KB) |
rfPacketRx_CC1310_LAUNCHXL_nortos_ccs | name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- FLASH 00000000 00020000 00005d8c 0001a274 R X SRAM 20000000 00005000 00001031 00003fcf RW X |
0x5d8c ~ 23948 Bytes (~23.38 KB) |
rfWakeOnRadioRx_CC1310_LAUNCHXL_tirtos_ccs | name origin length used unused attr fill ---------------------- -------- --------- -------- -------- ---- -------- FLASH 00000000 00020000 0000660a 000199f6 R X SRAM 20000000 00005000 00002896 0000276a RW X |
0x5d8c ~ 26122 Bytes (~25.50 KB) |
Queries
1. The basic empty program itself takes ~16KB of memory. Is this the minimum memory footprint for firmware to run on CC1310 ?
2. The RX/Tx program takes around ~24KB of memory. So to write vendor code for 32KB variant, one has max 8KB available. It looks like basic rtos/nortos code is occupying large portion of code and leaving very less space user space program. Don't we have minimal example set where we can write firmware fo 32KB (with basic tx/rx capability)
3. I am sure many other vendor might be using 32KB variant for Tx/Rx and power management. Wondering how they are managing to fit the firmware in 32KB. Any pointer ? I am really surprise example set is only for 128KB version but 32KB version is overlooked by the team.
4. With CC110L (Along with external controller) we could able to fit entire firmware (along with CC110L lib) in 17KB. I am afraid if 32KB variant of CC1310 provides flexibilty to do so.
Any pointer for tx/rx & power code optimization on TI CC1310 (32KB) will be highly appreciated . We are blocked on this and don't have any clue whether to drop this variant or still have posibility to reduce memory footprint
Hi Satish,
Have you tried increasing the optimization level in the Build options of the project? You can also optimize for size instead of speed.
There is also a one additional thing that might help and it is using the RF driver in Single Mode.
From the documentation:
The RF driver comes in two versions: single-client and multi-client. The single-client version allows only one driver instance to access the RF core at a time. The multi-client driver version allows concurrent access to the RF core with different RF settings. The multi-client driver has a slightly larger footprint and is not needed for many proprietary applications. The driver version can be selected in the build configuration by linking either against a RFCC26XX_singleMode or RFCC26XX_multiMode pre-built library. When using the single-client driver, RF_SINGLEMODE
has to be defined globally in the build configuration. The multi-client driver is the default configuration in the SimpleLink SDKs.
After doing this for rfPacketTx_CC1310_LAUNCHXL_nortos_ccs I got the following results:
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
FLASH 00000000 00020000 0000558e 0001aa72 R X
SRAM 20000000 00005000 00000f8d 00004073 RW X
Unfortunately, it is not a lot but still, hopefully it helps. Of course you can probably find some things that can be removed or adjusted in your particular application to get some extra room for your application.
BR,
Andres