cancel
Showing results for 
Search instead for 
Did you mean: 

After writing to flash memory using stm32f207ztg6, when I try to run debug again, an error appears and the program cannot be run.

t-oka
Associate III

Hello everyone

After using the stm32f207ztg6 to write to flash memory, when I try to run the debug again, the following error appears and the program cannot be executed.
How can I solve the problem?

■ Program used
uint32_t flash_addr = 0x080E0000;
uint32_t writeAddr = flash_addr;
uint8_t testData[8] = {10, 30, 50, 70, 20, 40, 60, 80};

HAL_FLASH_Unlock();

// Flash erase
FLASH_EraseInitTypeDef erase; // Define the erase structure
uint32_t error = 0; // Variable to store the error code
erase.TypeErase = FLASH_TYPEERASE_SECTORS; // Sector erase
erase.Sector = FLASH_SECTOR_11; // Sector to erase: Sector 11
erase.NbSectors = 1; // Number of sectors to erase: 1
erase.VoltageRange = FLASH_VOLTAGE_RANGE_3; // Voltage setting

HAL_FLASHEx_Erase(&erase, &error); // Erase

// Flash write

for (int i = 0; i < 8; i++)

{

HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, writeAddr, testData[i]+1); // Write 8 bits

writeAddr += 1; // Advance address by 1 byte (8 bits)

}

HAL_FLASH_Lock(); // Flash lock

testData[0] = *((uint8_t*)flash_addr);

■Error content

error in final launch sequence:

Failed to execute MI command:

load path \\Debug\\flashTest.elf

Error message from debugger back end:

Error finishing flash operation

Failed to execute MI command:

load path \\Debug\\flashTest.elf

Error message from debugger back end:

Error flash finishing operation Failed to execute MI command: load path\\Debug\\flashTest.elf Error message from debugger back end: Error finishing flash operation Error finishing flash operation

1 ACCEPTED SOLUTION

Accepted Solutions
TDK
Guru

> Error message from debugger back end: Error finishing flash operation

When you perform a flash erase operation at the start of the program, the debugger can lose access as the chip is blocking during that time. Note that during the start of debug, the start of your program will be executed a couple times.

If this is the problem, ensure your program doesn't erase the flash immediately upon start. A delay of 1 second should be sufficient.

If you feel a post has answered your question, please click "Accept as Solution".

View solution in original post

2 REPLIES 2
TDK
Guru

> Error message from debugger back end: Error finishing flash operation

When you perform a flash erase operation at the start of the program, the debugger can lose access as the chip is blocking during that time. Note that during the start of debug, the start of your program will be executed a couple times.

If this is the problem, ensure your program doesn't erase the flash immediately upon start. A delay of 1 second should be sufficient.

If you feel a post has answered your question, please click "Accept as Solution".
t-oka
Associate III

Thanks Guru!
I fixed it by adding a 1 second delay so the program doesn't erase the flash immediately on startup!
Thanks!