From: Keith Packard Date: Sat, 1 Feb 2014 08:32:43 +0000 (-0800) Subject: altos/stm: Block interrupts while reprogramming flash X-Git-Tag: 1.3.2~9 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=324073d14ed8215b74d9df51f2229827cd4401d0 altos/stm: Block interrupts while reprogramming flash Wouldn't work well to get interrupted... Signed-off-by: Keith Packard --- diff --git a/src/stm/ao_flash_stm.c b/src/stm/ao_flash_stm.c index 38b1c2d8..39dc8144 100644 --- a/src/stm/ao_flash_stm.c +++ b/src/stm/ao_flash_stm.c @@ -83,12 +83,14 @@ _ao_flash_erase_page(uint32_t *page) void ao_flash_erase_page(uint32_t *page) { + ao_arch_block_interrupts(); ao_flash_pecr_unlock(); ao_flash_pgr_unlock(); _ao_flash_erase_page(page); ao_flash_lock(); + ao_arch_release_interrupts(); } static void __attribute__ ((section(".ramtext"), noinline)) @@ -116,6 +118,8 @@ ao_flash_page(uint32_t *page, uint32_t *src) uint8_t h; ao_flash_erase_page(page); + + ao_arch_block_interrupts(); ao_flash_pecr_unlock(); ao_flash_pgr_unlock(); for (h = 0; h < 2; h++) { @@ -124,4 +128,5 @@ ao_flash_page(uint32_t *page, uint32_t *src) src += 32; } ao_flash_lock(); + ao_arch_release_interrupts(); }