arm: cortex-m: allow configurable ROM offset
Currently, ARM Cortex-M image ROMs are linked starting at the flash device's base address (CONFIG_FLASH_BASE_ADDRESS). This prevents XIP Zephyr applications from being linked to run from elsewhere on the flash device. Linking Zephyr applications to run from elsewhere can be necessary when running under a bootloader (i.e., booting into a Zephyr application from a bootloader, not using Zephyr as a bootloader). To enable this use case, add a new config option: FLASH_LOAD_OFFSET. This option directs the linker to treat ROM as if it started that many bytes from the base of flash on Cortex-M targets. The option defaults to zero to preserve backwards compatibility. Change-Id: I64f82aee257c19c2451f9789b0ab56999775b761 Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
This commit is contained in:
parent
c6e27a05c2
commit
bf2d34ba30
3 changed files with 16 additions and 4 deletions
|
@ -40,8 +40,8 @@
|
|||
#define SKIP_TO_KINETIS_FLASH_CONFIG
|
||||
#endif
|
||||
|
||||
#define ROM_ADDR CONFIG_FLASH_BASE_ADDRESS
|
||||
#define ROM_SIZE CONFIG_FLASH_SIZE*1K
|
||||
#define ROM_ADDR (CONFIG_FLASH_BASE_ADDRESS + CONFIG_FLASH_LOAD_OFFSET)
|
||||
#define ROM_SIZE (CONFIG_FLASH_SIZE*1K - CONFIG_FLASH_LOAD_OFFSET)
|
||||
|
||||
#if defined(CONFIG_XIP)
|
||||
#if defined(CONFIG_IS_BOOTLOADER)
|
||||
|
@ -72,7 +72,7 @@ SECTIONS
|
|||
{
|
||||
GROUP_START(ROMABLE_REGION)
|
||||
|
||||
_image_rom_start = CONFIG_FLASH_BASE_ADDRESS;
|
||||
_image_rom_start = ROM_ADDR;
|
||||
|
||||
SECTION_PROLOGUE(_TEXT_SECTION_NAME,,)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue