This is an automated email from Gerrit. Jonas Norling ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/4169
-- gerrit commit 22dbe9f41c09b9b6d4a6133812db278da5fdefa0 Author: Jonas Norling <[email protected]> Date: Mon Jun 26 14:54:00 2017 +0200 efm32: Remove unnecessary code from EFM32 flash loader The instructions to enable writes in MSC_WRITECTRL and unlock the flash in MSC_LOCK are not needed, because this is done by efm32x_msc_lock() and efm32x_set_wren() before running the flash loader. The problem is that the MSC_LOCK register is in different locations on EFM32 and EFR32, which is easy to handle in C code but tricky to handle in pre-built assembly. Change-Id: I72393f16d56fa02e14fbcc2b0fbb9057aaddece0 Signed-off-by: [email protected] diff --git a/contrib/loaders/flash/efm32.S b/contrib/loaders/flash/efm32.S index 25d6301..efd2072 100644 --- a/contrib/loaders/flash/efm32.S +++ b/contrib/loaders/flash/efm32.S @@ -39,19 +39,10 @@ */ /* offsets of registers from flash reg base */ -#define EFM32_MSC_WRITECTRL_OFFSET 0x008 #define EFM32_MSC_WRITECMD_OFFSET 0x00c #define EFM32_MSC_ADDRB_OFFSET 0x010 #define EFM32_MSC_WDATA_OFFSET 0x018 #define EFM32_MSC_STATUS_OFFSET 0x01c -#define EFM32_MSC_LOCK_OFFSET 0x03c - - /* unlock MSC */ - ldr r6, =#0x1b71 - str r6, [r0, #EFM32_MSC_LOCK_OFFSET] - /* set WREN to 1 */ - movs r6, #1 - str r6, [r0, #EFM32_MSC_WRITECTRL_OFFSET] wait_fifo: ldr r6, [r2, #0] /* read wp */ diff --git a/src/flash/nor/efm32.c b/src/flash/nor/efm32.c index 81c1a37..9143a52 100644 --- a/src/flash/nor/efm32.c +++ b/src/flash/nor/efm32.c @@ -589,17 +589,10 @@ static int efm32x_write_block(struct flash_bank *bank, const uint8_t *buf, /* see contrib/loaders/flash/efm32.S for src */ static const uint8_t efm32x_flash_write_code[] = { - /* #define EFM32_MSC_WRITECTRL_OFFSET 0x008 */ /* #define EFM32_MSC_WRITECMD_OFFSET 0x00c */ /* #define EFM32_MSC_ADDRB_OFFSET 0x010 */ /* #define EFM32_MSC_WDATA_OFFSET 0x018 */ /* #define EFM32_MSC_STATUS_OFFSET 0x01c */ - /* #define EFM32_MSC_LOCK_OFFSET 0x03c */ - - 0x15, 0x4e, /* ldr r6, =#0x1b71 */ - 0xc6, 0x63, /* str r6, [r0, #EFM32_MSC_LOCK_OFFSET] */ - 0x01, 0x26, /* movs r6, #1 */ - 0x86, 0x60, /* str r6, [r0, #EFM32_MSC_WRITECTRL_OFFSET] */ /* wait_fifo: */ 0x16, 0x68, /* ldr r6, [r2, #0] */ @@ -656,9 +649,6 @@ static int efm32x_write_block(struct flash_bank *bank, const uint8_t *buf, /* exit: */ 0x30, 0x46, /* mov r0, r6 */ 0x00, 0xbe, /* bkpt #0 */ - - /* LOCKKEY */ - 0x71, 0x1b, 0x00, 0x00 }; /* flash write code */ -- ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
