Improved (for humans) error reporting for flash programming errors.

git-svn-id: svn://svn.berlios.de/openocd/trunk@1456 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
mlu 2009-04-14 17:17:38 +00:00
parent 699d246b1c
commit ba4e2c43fb

View File

@ -565,8 +565,16 @@ int stm32x_write_block(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 co
break; break;
} }
if (buf_get_u32(reg_params[3].value, 0, 32) & 0x14) if (buf_get_u32(reg_params[3].value, 0, 32) & FLASH_PGERR)
{ {
LOG_ERROR("flash memory not erased before writing");
retval = ERROR_FLASH_OPERATION_FAILED;
break;
}
if (buf_get_u32(reg_params[3].value, 0, 32) & FLASH_WRPRTERR)
{
LOG_ERROR("flash memory write protected");
retval = ERROR_FLASH_OPERATION_FAILED; retval = ERROR_FLASH_OPERATION_FAILED;
break; break;
} }
@ -647,9 +655,15 @@ int stm32x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
status = stm32x_wait_status_busy(bank, 5); status = stm32x_wait_status_busy(bank, 5);
if( status & FLASH_WRPRTERR ) if( status & FLASH_WRPRTERR )
{
LOG_ERROR("flash memory not erased before writing");
return ERROR_FLASH_OPERATION_FAILED; return ERROR_FLASH_OPERATION_FAILED;
}
if( status & FLASH_PGERR ) if( status & FLASH_PGERR )
{
LOG_ERROR("flash memory write protected");
return ERROR_FLASH_OPERATION_FAILED; return ERROR_FLASH_OPERATION_FAILED;
}
bytes_written += 2; bytes_written += 2;
words_remaining--; words_remaining--;
@ -674,9 +688,15 @@ int stm32x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
status = stm32x_wait_status_busy(bank, 5); status = stm32x_wait_status_busy(bank, 5);
if( status & FLASH_WRPRTERR ) if( status & FLASH_WRPRTERR )
{
LOG_ERROR("flash memory not erased before writing");
return ERROR_FLASH_OPERATION_FAILED; return ERROR_FLASH_OPERATION_FAILED;
}
if( status & FLASH_PGERR ) if( status & FLASH_PGERR )
{
LOG_ERROR("flash memory write protected");
return ERROR_FLASH_OPERATION_FAILED; return ERROR_FLASH_OPERATION_FAILED;
}
} }
target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK); target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK);