diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm b/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm index 6dbb16c1..7b2a21eb 100644 Binary files a/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm and b/Host/Source/MicroBoot/interfaces/uart/XcpSettings.dfm differ diff --git a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas index d19b30bc..78650c39 100644 --- a/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas +++ b/Host/Source/MicroBoot/interfaces/uart/XcpTransport.pas @@ -218,6 +218,16 @@ begin // init the return value result := false; + // during high burst I/O the USB/RS232 emulated COM-ports sometimes have problems + // processing all the data. therefore, add a small delay time between packet I/O. + // exclude the CONNECT command because of the default small backdoor time of the + // bootloader + if packetData[0] <> $FF then + begin + Application.ProcessMessages; + Sleep(5); + end; + // prepare the packet. length goes in the first byte followed by the packet data SetLength(msgData, packetLen+1); msgData[0] := packetLen; diff --git a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr index bb41c3e7..6efe0a0e 100644 --- a/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr +++ b/Host/Source/MicroBoot/interfaces/uart/openblt_uart.dpr @@ -287,9 +287,17 @@ begin sessionStartResult := kProgSessionGenericError; while sessionStartResult <> kProgSessionStarted do begin - sessionStartResult := loader.StartProgrammingSession; - Application.ProcessMessages; - Sleep(5); + // disconnect COM-port for board that have on board FTDI type chip that powers down + // during power cycling + loader.Disconnect; + // reconnect COM-port. no need to check the return value because it might fail when + // an FTDI type chip is on board while it is cycling power. + if loader.Connect then + begin + sessionStartResult := loader.StartProgrammingSession; + Application.ProcessMessages; + Sleep(5); + end; // don't retry if the error was caused by not being able to unprotect the programming resource if sessionStartResult = kProgSessionUnlockError then begin @@ -561,7 +569,7 @@ end; //*** end of MbiDescription *** //*************************************************************************************** function MbiVersion : Longword; stdcall; begin - Result := 10000; // v1.00.00 + Result := 10001; // v1.00.01 end; //*** end of MbiVersion *** diff --git a/Host/openblt_uart.dll b/Host/openblt_uart.dll index 6fde1e8f..96a88ff4 100644 Binary files a/Host/openblt_uart.dll and b/Host/openblt_uart.dll differ