proxmark3/bootrom/ldscript-flash
Henry Gabryjelski 44676bde72 Bootrom: Enable serial number from flash
* Add `.ramfunc` section to bootrom loader script
* exclude spiffs functionality from flashmem.h/flashmem.c
   (allows bootrom to use flashmem)
* hide unused tick.h / flashmem.h functions from bootrom
   (not technically necessary; see comments)
* bootrom: add source files, include path, and defines when
  `PLATFORM_DEFS` defines `WITH_FLASH`
* Define `AS_BOOTROM` to indicate code is building for bootrom
2023-02-17 17:07:13 -08:00

75 lines
1.9 KiB
Text

/*
-----------------------------------------------------------------------------
Copyright (C) Jonathan Westhues, Mar 2006
Copyright (C) Proxmark3 contributors. See AUTHORS.md for details.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
See LICENSE.txt for the text of the license.
-----------------------------------------------------------------------------
Bootrom linker script
-----------------------------------------------------------------------------
*/
INCLUDE ../common_arm/ldscript.common
PHDRS
{
phase1 PT_LOAD;
phase2 PT_LOAD;
bss PT_LOAD;
}
ENTRY(flashstart)
SECTIONS
{
.bootphase1 : {
*(.startup)
. = ALIGN(4);
_version_information_start = .;
KEEP(*(.version_information));
. = LENGTH(bootphase1) - 0x4;
LONG(_version_information_start);
} >bootphase1 :phase1
.bootphase2 : {
*(.startphase2)
*(.text)
*(.text.*)
*(.eh_frame)
*(.glue_7)
*(.glue_7t)
*(.rodata)
*(.rodata.*)
*(.data)
*(.data.*)
*(.ramfunc)
. = ALIGN(4);
} >ram AT>bootphase2 :phase2
__bootphase2_src_start__ = LOADADDR(.bootphase2);
__bootphase2_start__ = ADDR(.bootphase2);
__bootphase2_end__ = __bootphase2_start__ + SIZEOF(.bootphase2);
.bss : {
__bss_start__ = .;
*(.bss)
*(.bss.*)
. = ALIGN(4);
__bss_end__ = .;
} >ram AT>ram :bss
.commonarea (NOLOAD) : {
*(.commonarea)
} >commonarea
}