*/
MEMORY {
- rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K
+ rom (rx) : ORIGIN = 0x08001000, LENGTH = 124K
ram (!w) : ORIGIN = 0x20000000, LENGTH = 16K
}
. = ORIGIN(rom) + 0x100;
+
+ /* Ick. What I want is to specify the
+ * addresses of some global constants so
+ * that I can find them across versions
+ * of the application. I can't figure out
+ * how to make gnu ld do that, so instead
+ * we just load the two files that include
+ * these defines in the right order here and
+ * expect things to 'just work'. Don't change
+ * the contents of those files, ok?
+ */
ao_romconfig.o(.romconfig*)
ao_product.o(.romconfig*)
-
*(.text*) /* Executable code */
*(.rodata*) /* Constants */
.ARM.exidx : {
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
- __text_end__ = .;
} > rom
+ __text_end__ = .;
/* Boot data which must live at the start of ram so that
* the application and bootloader share the same addresses.
* This must be all uninitialized data
*/
- .boot : {
+ .boot (NOLOAD) : {
__boot_start__ = .;
*(.boot)
. = ALIGN(4);
.data : {
__data_start__ = .;
*(.data) /* initialized data */
+ . = ALIGN(4);
__data_end__ = .;
} >ram AT>rom
__bss_start__ = .;
*(.bss)
*(COMMON)
+ . = ALIGN(4);
__bss_end__ = .;
} >ram