diff --git a/minichlink/minichlink.c b/minichlink/minichlink.c
index 9ee525d05834b0bf3d14dfdc708b02393fc6c003..3c610a48db6f2952b8e646e79fabc6eb790d0d89 100644
--- a/minichlink/minichlink.c
+++ b/minichlink/minichlink.c
@@ -600,8 +600,14 @@ keep_going:
 					exit( -9 );
 				}
 
+
 				int is_flash = IsAddressFlash( offset );
-				if( MCF.HaltMode ) MCF.HaltMode( dev, is_flash ? HALT_MODE_HALT_AND_RESET : HALT_MODE_HALT_BUT_NO_RESET );
+				//if( MCF.HaltMode ) MCF.HaltMode( dev, is_flash ? HALT_MODE_HALT_AND_RESET : HALT_MODE_HALT_BUT_NO_RESET );
+				if( MCF.HaltMode && is_flash )
+				{
+					if ( offset == 0x1ffff000 ) MCF.HaltMode( dev, HALT_MODE_HALT_BUT_NO_RESET ); // do not reset if writing bootloader, even if it is considered flash memory
+					else MCF.HaltMode( dev, HALT_MODE_HALT_AND_RESET );
+				}
 
 				if( MCF.WriteBinaryBlob )
 				{