From 5a08545794cefc9fd9450707e739784c8c84839e Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 7 Oct 2016 00:12:09 +0200 Subject: [PATCH] ADD: added a compiling flag -DHAS_512_FLASH i common/Makefile.common, to be used for PM3 devices with 512KB. Original commit from @hewitt --- bootrom/bootrom.c | 6 +++++- client/flash.c | 8 +++++++- common/Makefile.common | 1 + common/ldscript.common | 3 ++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c index 44bfaba6..26231b01 100644 --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@ -275,7 +275,11 @@ void BootROM(void) AT91C_BASE_EFC0->EFC_FMR = AT91C_MC_FWS_1FWS | MC_FLASH_MODE_MASTER_CLK_IN_MHZ(48); - +#ifdef HAS_512_FLASH + AT91C_BASE_EFC1->EFC_FMR = + AT91C_MC_FWS_1FWS | + MC_FLASH_MODE_MASTER_CLK_IN_MHZ(48); +#endif // Initialize all system clocks ConfigClocks(); diff --git a/client/flash.c b/client/flash.c index 576f0d27..b0ae46b3 100644 --- a/client/flash.c +++ b/client/flash.c @@ -28,7 +28,13 @@ int OpenProxmark(size_t i); unsigned int current_command = CMD_UNKNOWN; #define FLASH_START 0x100000 -#define FLASH_SIZE (256*1024) + +#ifdef HAS_512_FLASH +# define FLASH_SIZE (512*1024) +#else +# define FLASH_SIZE (256*1024) +#endif + #define FLASH_END (FLASH_START + FLASH_SIZE) #define BOOTLOADER_SIZE 0x2000 #define BOOTLOADER_END (FLASH_START + BOOTLOADER_SIZE) diff --git a/common/Makefile.common b/common/Makefile.common index f5640bc9..477cd6a3 100644 --- a/common/Makefile.common +++ b/common/Makefile.common @@ -59,6 +59,7 @@ DETECTED_OS=Windows endif +APP_CFLAGS += -DHAS_512_FLASH # Also search prerequisites in the common directory (for usb.c), the fpga directory (for fpga.bit), and the zlib directory VPATH = . ../common ../fpga ../zlib diff --git a/common/ldscript.common b/common/ldscript.common index ea57ec24..c0134ffd 100644 --- a/common/ldscript.common +++ b/common/ldscript.common @@ -10,11 +10,12 @@ ms of the GNU GPL, version 2 or, */ /* AT91SAM7S256 has 256k Flash and 64k RAM */ +/* AT91SAM7S512 has 512k Flash and 64k RAM */ MEMORY { bootphase1 : ORIGIN = 0x00100000, LENGTH = 0x200 /* Phase 1 bootloader: Copies real bootloader to RAM */ bootphase2 : ORIGIN = 0x00100200, LENGTH = 0x2000 - 0x200 /* Main bootloader code, stored in Flash, executed from RAM */ - osimage : ORIGIN = 0x00102000, LENGTH = 256K - 0x2000 /* Place where the main OS will end up */ + osimage : ORIGIN = 0x00102000, LENGTH = 512K - 0x2000 /* Place where the main OS will end up */ ram : ORIGIN = 0x00200000, LENGTH = 64K - 0x20 /* RAM, minus small common area */ commonarea : ORIGIN = 0x00200000 + 64K - 0x20, LENGTH = 0x20 /* Communication between bootloader and main OS */ } -- 2.39.2