Yasin Engin Embedded Firmware
Rehydrator - CC1352R OAD Firmware Layout
A Contiki-NG firmware adaptation for keeping TI BIM intact while placing old and new CC1352R images into predictable flash slots.
Problem
Firmware update work on a constrained MCU is unforgiving: the bootloader, CCFG area, OAD header, vector table, and image body all need to land at the right addresses. Rehydrator focuses on making that layout explicit and repeatable for a CC1352R workflow.
Architecture
The project keeps the existing TI BIM unchanged. The new firmware image is placed at page 0, the older firmware is kept as a persistent fallback image, and the BIM plus CCFG region remains protected at the end of flash.
Technologies
- C and Contiki-NG for the firmware applications.
- TI BIM/OAD image headers for bootloader-compatible image selection.
- Custom linker scripts for old and new firmware slot placement.
- Makefile targets for building upload-ready HEX and BIN artifacts.
What I Built
- Separate old-firmware and new-firmware application paths.
- OAD header definitions aligned with the expected image type, entry point, and start address.
- Flash slot layout constants shared by the application and header code.
- Upload artifact generation and verification notes for HEX/BIN output.
Memory Layout
GitHub Repository
What I Learned
- Bootloader compatibility is mostly about disciplined memory boundaries.
- Firmware artifacts need address-aware formats or very clear programming instructions.
- A small embedded project becomes much easier to review when linker decisions are documented next to the code.
Future Improvements
- Add automated checks for section addresses and slot limits after each build.
- Document a release OAD flow with signed headers and CRC generation.
- Capture hardware test evidence for the old-to-new firmware transition.