This document summarizes the CC1352R flash/RAM placement used by Rehydrator and the boot order expected by TI BIM.
| Region | Address range | Use |
|---|---|---|
| Flash | 0x00000000 - 0x00057FFF |
Firmware images, OAD headers, BIM, and CCFG |
| SRAM | 0x20000000 - 0x20013FFF |
Runtime data, stack, BSS, and DMA tables |
| GPRAM | 0x11000000 - 0x11001FFF |
Cache/GPRAM area |
| ROM | Device internal | TI ROM boot code and helper routines |
| Slot | Start | End | Role |
|---|---|---|---|
| User image | 0x00000000 |
0x0002FFFF |
First APPSTACKLIB image checked by BIM |
| Persistent fallback | 0x00030000 |
0x00051FFF |
Fallback when the user image is missing or invalid |
| Metadata | 0x00052000 |
0x00053FFF |
Reserved update metadata area |
| Recovery | 0x00054000 |
0x00055FFF |
Reserved recovery/staging area |
| BIM + CCFG | 0x00056000 |
0x00057FFF |
TI BIM and critical device configuration |
Each image reserves the first 0x100 bytes for the OAD image header. The reset
vector table starts immediately after that header area.
| Image | Header | Entry / reset vector | Image type |
|---|---|---|---|
new-firmware |
0x00000000 |
0x00000100 |
APPSTACKLIB |
old-firmware |
0x00030000 |
0x00030100 |
PERSISTENT_APP |
flowchart TD
A[Reset] --> B[ROM boot and CCFG settings]
B --> C[TI BIM at 0x00056000]
C --> D{Valid APPSTACKLIB at page 0?}
D -- Yes --> E[new-firmware entry 0x00000100]
D -- No --> F{Valid persistent fallback?}
F -- Yes --> G[old-firmware entry 0x00030100]
F -- No --> H[Boot failure or recovery path]
BIM checks the page 0 user image first. If only old-firmware is programmed,
the user slot is empty and BIM falls back to the persistent image. After
new-firmware is programmed at page 0, BIM selects it as long as its OAD header
is valid.
CCFG controls reset and boot behavior. In this layout CCFG is bundled with BIM inside the last flash sector:
0x00056000 - 0x00057FFF
Do not use full chip erase while testing this layout unless BIM + CCFG will be reprogrammed immediately afterwards.
| Question | Answer |
|---|---|
| Where is the first working old image placed? | old-firmware is placed in the persistent fallback slot: 0x00030000 - 0x00051FFF. |
| Where is the update image placed? | new-firmware is placed in the page 0 user slot: 0x00000000 - 0x0002FFFF. |
| Can two complete images exist at the same time? | Yes for these small examples. The general answer depends on application size and the chosen OAD layout. |
| What if only a staging area exists? | A bootloader or recovery routine must verify and copy the staged image into an executable slot, or expose it through a BIM-compatible header. |
| Why avoid erasing the running image or BIM sector? | Flash erase is sector based. Erasing the active image, fallback image, BIM, or CCFG can break the boot flow. |