Hot/cold linking is a strategy used by PROS for splitting a program into two binary packages to reduce upload size.
- The cold image (cold.bin) contains libraries (libpros, liblvgl, libstdc++, etc...). The cold image is uploaded once, or whenever it is modified.
- The hot image (hot.bin) contains user functions and links against the cold image. The hot image is uploaded every time the program is built, and thus must be optimized for size.
Each image has its own address offset in memory:
- Cold memory begins at address
0x03800000
. This is the actual entrypoint of a user program's memory space and is the first thing that is executed by CPU0. - Hot memory begins at address
0x07800000
. - Source: https://github.com/purduesigbots/pros/blob/1e7513d4f110d2eac625b6300dbbb8c086ab6c0c/firmware/v5-hot.ld#L15