projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
process updates made during 1.6.3 release cycle
[fw/altos]
/
src
/
stm
/
ao_flash_stm.c
diff --git
a/src/stm/ao_flash_stm.c
b/src/stm/ao_flash_stm.c
index d7a855827723cbee2ce3bc226e99860bca9ac74d..39dc81444a1bb23bc1e48e885b9d594f213094b9 100644
(file)
--- 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);
_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)
{
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_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;
_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);
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++) {
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();
src += 32;
}
ao_flash_lock();
+ ao_arch_release_interrupts();
}
}