diff --git a/ChangeLog b/ChangeLog index 1231e9f..224b8bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,13 @@ 2012-05-28 Niibe Yutaka - * src/gnuk.ld.in (.sys): Add alignment settings. - - * boards/common/hwinit.c (hwinit0): Define here. - * boards/*/board.c (hwinit0): Removed. + * boards/*/board.c (hwinit0): Removed... + * boards/common/hwinit.c (hwinit0): ... and define here. + (hwinit0) [DFU_SUPPORT]: Don't set SCB->VTOR here. + * src/sys.c (reset) [DFU_SUPPORT]: Set SCB->VTOR here. * polarssl-0.14.0/library/aes.c (FT0, FT1, FT2): Specify the section ".sys", so that we will have more room for flash ROM. + * src/gnuk.ld.in (.sys): Add alignment settings. * tool/gnuk_upgrade.py (main): First 4096-byte of Gnuk is system block. Don't send it to reGNUal. diff --git a/boards/common/hwinit.c b/boards/common/hwinit.c index a12f1b9..e84788e 100644 --- a/boards/common/hwinit.c +++ b/boards/common/hwinit.c @@ -32,10 +32,6 @@ void hwinit0 (void) { -#ifdef DFU_SUPPORT - SCB->VTOR = 0x08003000; -#endif - stm32_clock_init(); } diff --git a/src/sys.c b/src/sys.c index d178f19..c8065f2 100644 --- a/src/sys.c +++ b/src/sys.c @@ -1,3 +1,4 @@ +#include "config.h" #include "ch.h" #include "hal.h" #include "board.h" @@ -173,8 +174,6 @@ flash_protect (void) return (option_bytes_value & 0xff) == 0xff ? 1 : 0; } -#define FLASH_MASS_ERASE_TIMEOUT 0xF0000000 - extern uint8_t __flash_start__, __flash_end__; extern uint8_t _regnual_start; @@ -249,9 +248,14 @@ reset (void) asm volatile ("cpsid i\n\t" /* Mask all interrupts */ "mov.w r0, #0xed00\n\t" /* SCR */ "movt r0, #0xe000\n\t" - "mov.w r1, #0x1000\n\t" /* 08001000 */ +#ifdef DFU_SUPPORT + "mov.w r1, #0x4000\n\t" /* 0x08004000 */ "movt r1, #0x0800\n\t" - "str r1, [r0, #8]\n\t" /* SCR->VCR = 0x08001000 */ +#else + "mov.w r1, #0x1000\n\t" /* 0x08001000 */ + "movt r1, #0x0800\n\t" +#endif + "str r1, [r0, #8]\n\t" /* Set SCR->VCR */ "ldr r0, [r1], #4\n\t" "msr MSP, r0\n\t" /* Main (exception handler) stack */ "ldr r0, [r1]\n\t" /* Reset handler */