booting to dfu, detaching, fast flash write

This commit is contained in:
Conor Patrick
2018-12-04 20:23:06 -05:00
parent b475c8391a
commit 173b8833ce
6 changed files with 61 additions and 7 deletions

View File

@@ -139,6 +139,39 @@ void flash_write(uint32_t addr, uint8_t * data, size_t sz)
}
// NOT YET working
void flash_write_fast(uint32_t addr, uint32_t * data)
{
__disable_irq();
while (FLASH->SR & (1<<16))
;
FLASH->SR = FLASH->SR;
// Select fast program action
FLASH->CR |= (1<<18);
int i;
for(i = 0; i < 64; i++)
{
*(volatile uint32_t*)addr = (*data);
addr+=4;
data++;
}
while (FLASH->SR & (1<<16))
;
if(FLASH->SR & (1<<1))
{
printf2(TAG_ERR,"program NOT successful %lx\r\n", FLASH->SR);
}
FLASH->SR = (1<<0);
FLASH->CR &= ~(1<<18);
__enable_irq();
}
void flash_lock()
{
FLASH->CR |= (1U<<31);

View File

@@ -4,6 +4,7 @@
void flash_erase_page(uint8_t page);
void flash_write_dword(uint32_t addr, uint64_t data);
void flash_write(uint32_t addr, uint8_t * data, size_t sz);
void flash_write_fast(uint32_t addr, uint32_t * data);
void flash_option_bytes_init(int boot_from_dfu);
#define FLASH_PAGE_SIZE 2048