Hi
We have mixed stock of 64K and 128K CC1310 devices and I was wondering if there is a way of using a single firmware for both device versions?
Our code is less than 50K and fits well within 64K device memory. I understand that there is "ccfg" flash memory area that the device (TI firmware?) uses to program the "CCFG" registers (at runtime?). I am using 64K device linker file and have edited "CC1310_LAUNCHXL.c" to change from:
NVS_REGIONS_BASE 0x1A000
to
NVS_REGIONS_BASE 0xF000
This is so that the ccfg flash section is fixed to address 0xF000 whether its a 64k device or a 128K device.
Since the linker file is for 64K device and the ccfg section is defined to be in last sector of a 64K device as per below:

I expected the 128K device to work with this firmware too.
However, that is not quite the case.
When this 64K firmware is programmed into a 128K device, it boots up fine for the very first time but doesn't appear to boot up afterwards on power cycling or resetting. On boot up, we print some data over UART and that simply doesn't show up. A reprogramming of the chip in this condition, revives it but again for the very first reset/power-up.
If we create 128K device firmware (by using the 128K linker file), and first program 128K device with this 128K firmware and then program it with 64K device firmware (erase "necessary sections" only), it seems to work fine. This suggests that 128K firmware programs the upper 64K flash memory with some data that is required by the device to run? 64K firmware, of course, doesn't program anything in that space.
Question is, if ccfg section has been fixed to last sector of 64K memory as per the linker file, then why does the device need/expect something in the last sector of the 128K memory? Is it the chip or TI code that expects ccfg data in last sector of the flash memory?