-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Labels
Description
There are 2 types of apps in the EC:
- main app
- Scratch ROM apps
The Scratch ROM apps are built and embedded into the main app using a hack: their binary is converted to hex using xxd and then included as a byte array at the desired address.
ec/src/board/system76/common/scratch.c
Lines 13 to 16 in a5e34b5
// Include scratch ROM uint8_t __code __at(SCRATCH_OFFSET) scratch_rom[] = { #include <scratch.h> }; ec/src/board/system76/common/flash/wrapper.c
Lines 13 to 16 in a5e34b5
// Include flash ROM uint8_t __code __at(FLASH_OFFSET) flash_rom[] = { #include <flash.h> };
Rework the toolchain usage to support building multiple apps, with their own compiler and linker flags, at specific base addresses. This requires compiling them in their own segment that can then have its start address set (-Wl -b<SEG>=<ADDR>).
Ref: SDCC Manual, 3.3.5 Linker Options