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;
                        break;
                }
                status = stm32x_wait_status_busy(bank, 5);
                
                if( status & FLASH_WRPRTERR )
+               {
+                       LOG_ERROR("flash memory not erased before writing");
                        return ERROR_FLASH_OPERATION_FAILED;
+               }
                if( status & FLASH_PGERR )
+               {
+                       LOG_ERROR("flash memory write protected");
                        return ERROR_FLASH_OPERATION_FAILED;
+               }
 
                bytes_written += 2;
                words_remaining--;
                status = stm32x_wait_status_busy(bank, 5);
                
                if( status & FLASH_WRPRTERR )
+               {
+                       LOG_ERROR("flash memory not erased before writing");
                        return ERROR_FLASH_OPERATION_FAILED;
+               }
                if( status & FLASH_PGERR )
+               {
+                       LOG_ERROR("flash memory write protected");
                        return ERROR_FLASH_OPERATION_FAILED;
+               }
        }
        
        target_write_u32(target, STM32_FLASH_CR, FLASH_LOCK);