]> cvs.zerfleddert.de Git - proxmark3-svn/blobdiff - bootrom/ldscript-flash
Merge linker scripts in bootrom to have a single linker script for the bootloader...
[proxmark3-svn] / bootrom / ldscript-flash
index 0d5d732561bfacfe524dcd571cf0c46693a2c2d0..fa6fb26e4fec6cc4ce2dfe83a72a0eada3fdd75e 100644 (file)
@@ -1,11 +1,43 @@
+MEMORY \r
+{\r
+       /* AT91SAM7S256 has 256k Flash and 64k RAM */\r
+       /* Important note: the correct ORIGIN for bootphase1 is 0x00100000 and for bootphase2 is 0x00100200\r
+          However, this will confuse the currently deployed flash code which expects logical and and not\r
+          physical addresses and performs no sanity checks at all. If confronted with physical addresses, \r
+          it will happily erase everything and brick the device. So for the time being pretend these addresses\r
+          to start at 0x0 while updating all the flash code with proper sanity checks, then come back later and\r
+          fix the addresses. -- Henryk Plötz <henryk@ploetzli.ch> 2009-08-27 */\r
+        bootphase1 : ORIGIN = 0x00000000, LENGTH = 0x200 /* Phase 1 bootloader: Copies real bootloader to RAM */\r
+        bootphase2 : ORIGIN = 0x00000200, LENGTH = 0x2000 - 0x200 /* Main bootloader code, stored in Flash, executed from RAM */\r
+        ram     : ORIGIN = 0x00200000, LENGTH = 32K\r
+}\r
+\r
+\r
 SECTIONS\r
 {\r
-    . = 0x00000000;\r
-    .text : { obj/flash-reset.o(.text) *(.text) }\r
-    .rodata : { *(.rodata) }\r
-    . = 0x00200000;\r
-    .data : { *(.data) }\r
-    __bss_start__ = .;\r
-    .bss : { *(.bss) }\r
+    . = 0;\r
+    \r
+    bootphase1 : {\r
+       *(.startup) \r
+       *(.bootphase1)\r
+    } >bootphase1\r
+    \r
+    bootphase2 : {\r
+       __bootphase2_start__ = .;\r
+       *(.startphase2)\r
+       *(.text)\r
+       *(.glue_7)\r
+       *(.rodata)\r
+        *(.data)\r
+       . = ALIGN( 32 / 8 );\r
+       __bootphase2_end__ = .;\r
+    } >ram AT>bootphase2\r
+    \r
+    .bss : {\r
+       __bss_start__ = .; \r
+       *(.bss)\r
+    } >ram\r
+    \r
+    . = ALIGN( 32 / 8 );\r
     __bss_end__ = .;\r
 }\r
Impressum, Datenschutz