diff --git a/.gitignore b/.gitignore
index 449fc15f746d0797925a51a746d8f7fa0a2b4227..b56264024e9f393f86ba06d2418e24078af823ac 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@
 *.lst
 *.bin
 *.map
+minichlink/minichlink
+minichlink/minichlink.so
diff --git a/examples/spi_24L01_rx/ch32v003_SPI.h b/examples/spi_24L01_rx/ch32v003_SPI.h
index 522ec90566ae3db8d36fd5b675296377bd91ea3a..7f30a051583a07ed3f417202fbd54ebefd7395b3 100644
--- a/examples/spi_24L01_rx/ch32v003_SPI.h
+++ b/examples/spi_24L01_rx/ch32v003_SPI.h
@@ -127,31 +127,31 @@ _Static_assert(SPI_CLK_PRESCALER >= 0 && SPI_CLK_PRESCALER <= 7, "SPI_CLK_PRESCA
 #endif
 
 #if ((defined(CH32V003_SPI_CLK_MODE_POL0_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) > 1
-    #warning "more than one of the CH32V003_SPI_CLK_MODE_ options were defined!"
+	(defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) > 1
+	#warning "more than one of the CH32V003_SPI_CLK_MODE_ options were defined!"
 #endif
 #if ((defined(CH32V003_SPI_CLK_MODE_POL0_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) == 0
-    #warning "none of the CH32V003_SPI_CLK_MODE_ options were defined!"
+	(defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) == 0
+	#warning "none of the CH32V003_SPI_CLK_MODE_ options were defined!"
 #endif
 
 #if ((defined(CH32V003_SPI_NSS_HARDWARE_PC0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) > 1
-    #warning "more than one of the CH32V003_SPI_NSS_ options were defined!"
+	(defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) > 1
+	#warning "more than one of the CH32V003_SPI_NSS_ options were defined!"
 #endif
 #if ((defined(CH32V003_SPI_NSS_HARDWARE_PC0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) == 0
-    #warning "none of the CH32V003_SPI_NSS_ options were defined!"
+	(defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) == 0
+	#warning "none of the CH32V003_SPI_NSS_ options were defined!"
 #endif
 
 
@@ -318,17 +318,13 @@ static inline void restore_interrupts() {
 
 //########  small internal function definitions, static inline
 static inline void SPI_wait_TX_complete() {
-	while(!(SPI1->STATR & SPI_STATR_TXE)) {
-		asm volatile("nop");
-	}
+	while(!(SPI1->STATR & SPI_STATR_TXE)) {}
 }
 static inline uint8_t SPI_is_RX_empty() {
 	return SPI1->STATR & SPI_STATR_RXNE;
 }
 static inline void SPI_wait_RX_available() {
-	while(!(SPI1->STATR & SPI_STATR_RXNE)) {
-		asm volatile("nop");
-	}
+	while(!(SPI1->STATR & SPI_STATR_RXNE)) {}
 }
 
 
diff --git a/examples/spi_24L01_tx/ch32v003_SPI.h b/examples/spi_24L01_tx/ch32v003_SPI.h
index 522ec90566ae3db8d36fd5b675296377bd91ea3a..7f30a051583a07ed3f417202fbd54ebefd7395b3 100644
--- a/examples/spi_24L01_tx/ch32v003_SPI.h
+++ b/examples/spi_24L01_tx/ch32v003_SPI.h
@@ -127,31 +127,31 @@ _Static_assert(SPI_CLK_PRESCALER >= 0 && SPI_CLK_PRESCALER <= 7, "SPI_CLK_PRESCA
 #endif
 
 #if ((defined(CH32V003_SPI_CLK_MODE_POL0_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) > 1
-    #warning "more than one of the CH32V003_SPI_CLK_MODE_ options were defined!"
+	(defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) > 1
+	#warning "more than one of the CH32V003_SPI_CLK_MODE_ options were defined!"
 #endif
 #if ((defined(CH32V003_SPI_CLK_MODE_POL0_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) == 0
-    #warning "none of the CH32V003_SPI_CLK_MODE_ options were defined!"
+	(defined(CH32V003_SPI_CLK_MODE_POL0_PHA1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA0) ? 1 : 0) + \
+	(defined(CH32V003_SPI_CLK_MODE_POL1_PHA1) ? 1 : 0)) == 0
+	#warning "none of the CH32V003_SPI_CLK_MODE_ options were defined!"
 #endif
 
 #if ((defined(CH32V003_SPI_NSS_HARDWARE_PC0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) > 1
-    #warning "more than one of the CH32V003_SPI_NSS_ options were defined!"
+	(defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) > 1
+	#warning "more than one of the CH32V003_SPI_NSS_ options were defined!"
 #endif
 #if ((defined(CH32V003_SPI_NSS_HARDWARE_PC0) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
-     (defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) == 0
-    #warning "none of the CH32V003_SPI_NSS_ options were defined!"
+	(defined(CH32V003_SPI_NSS_HARDWARE_PC1) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC3) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_PC4) ? 1 : 0) + \
+	(defined(CH32V003_SPI_NSS_SOFTWARE_ANY_MANUAL) ? 1 : 0)) == 0
+	#warning "none of the CH32V003_SPI_NSS_ options were defined!"
 #endif
 
 
@@ -318,17 +318,13 @@ static inline void restore_interrupts() {
 
 //########  small internal function definitions, static inline
 static inline void SPI_wait_TX_complete() {
-	while(!(SPI1->STATR & SPI_STATR_TXE)) {
-		asm volatile("nop");
-	}
+	while(!(SPI1->STATR & SPI_STATR_TXE)) {}
 }
 static inline uint8_t SPI_is_RX_empty() {
 	return SPI1->STATR & SPI_STATR_RXNE;
 }
 static inline void SPI_wait_RX_available() {
-	while(!(SPI1->STATR & SPI_STATR_RXNE)) {
-		asm volatile("nop");
-	}
+	while(!(SPI1->STATR & SPI_STATR_RXNE)) {}
 }
 
 
diff --git a/minichlink/Makefile b/minichlink/Makefile
index 0bd37d30107a55504282a51cafd0406d905875f9..3174e25e7356b806edc9db82dbbf3df337c8c04a 100644
--- a/minichlink/Makefile
+++ b/minichlink/Makefile
@@ -1,3 +1,5 @@
+OS_NAME := $(shell uname -s | tr A-Z a-z)
+
 TOOLS:=minichlink minichlink.so
 
 all : $(TOOLS)
@@ -10,10 +12,9 @@ C_S:=minichlink.c pgm-wch-linke.c pgm-esp32s2-ch32xx.c nhc-link042.c minichgdb.c
 # gdb-multilib {file}
 # target remote :2345
 
-ifeq ($(OS),Windows_NT)
+ifeq ($(OS_name),windows_nt)
 	LDFLAGS:=-lpthread -lusb-1.0 -lsetupapi
 else
-	OS_NAME := $(shell uname -s | tr A-Z a-z)
 	ifeq ($(OS_NAME),linux)
 		LDFLAGS:=-lpthread -lusb-1.0 -ludev
 	endif
diff --git a/minichlink/minichlink b/minichlink/minichlink
index a92dfebdada0201b544bdc5af27e805a982cdd2e..4b0988b3f6f037bd908ea57b3750560f358eb0ca 100755
Binary files a/minichlink/minichlink and b/minichlink/minichlink differ
diff --git a/minichlink/minichlink.so b/minichlink/minichlink.so
index fe8f83436cbd1b3c09671ae6664a96cb12fb9cf8..ae7792b02a59af59d0675effbaa7bf97f790ac06 100755
Binary files a/minichlink/minichlink.so and b/minichlink/minichlink.so differ