X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstm%2Fao_flash_stm.c;h=39dc81444a1bb23bc1e48e885b9d594f213094b9;hb=7348cc4736c9a94f9ad299edd78199b544d0e95a;hp=d7a855827723cbee2ce3bc226e99860bca9ac74d;hpb=106d212ff5920c39d95751ef6249dc141970412c;p=fw%2Faltos diff --git a/src/stm/ao_flash_stm.c b/src/stm/ao_flash_stm.c index d7a85582..39dc8144 100644 --- a/src/stm/ao_flash_stm.c +++ b/src/stm/ao_flash_stm.c @@ -69,7 +69,7 @@ ao_flash_wait_bsy(void) ; } -static void __attribute__ ((section(".text.ram"),noinline)) +static void __attribute__ ((section(".ramtext"),noinline)) _ao_flash_erase_page(uint32_t *page) { stm_flash.pecr |= (1 << STM_FLASH_PECR_ERASE) | (1 << STM_FLASH_PECR_PROG); @@ -83,15 +83,17 @@ _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(".text.ram"), noinline)) +static void __attribute__ ((section(".ramtext"), noinline)) _ao_flash_half_page(uint32_t *dst, uint32_t *src) { uint8_t i; @@ -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(); }