booting to dfu, detaching, fast flash write
This commit is contained in:
@@ -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);
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user