. = 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 */
} > 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 (NOLOAD) : {
+ __boot_start__ = .;
+ *(.boot)
+ . = ALIGN(4);
+ __boot_end__ = .;
+ } >ram
+
/* Functions placed in RAM (required for flashing) */
.textram : {
- __text_ram_start = .;
+ __text_ram_start__ = .;
__data_start__ = .;
*(.text.ram)
. = ALIGN(4);