From 8ee7bbdf2dd84658e0dfc4c01777f46d0aa96fd1 Mon Sep 17 00:00:00 2001
From: CNLohr <lohr85@gmail.com>
Date: Wed, 21 Jun 2023 02:20:36 -0400
Subject: [PATCH]  * Update Windows build, allowing programmer to be specified.
  * Convert `sandbox` to `template`

---
 examples/sandbox/sandbox.c                    |  52 --------------
 .../template/.vscode/c_cpp_properties.json    |  20 ++++++
 examples/template/.vscode/launch.json         |  39 +++++++++++
 examples/template/.vscode/settings.json       |  15 ++++
 examples/template/.vscode/tasks.json          |  56 +++++++++++++++
 examples/{sandbox => template}/Makefile       |   2 +-
 examples/template/template.c                  |  38 +++++++++++
 minichlink/minichlink.c                       |  64 ++++++++++++------
 minichlink/minichlink.exe                     | Bin 89600 -> 90112 bytes
 minichlink/minichlink.h                       |   3 +-
 10 files changed, 216 insertions(+), 73 deletions(-)
 delete mode 100644 examples/sandbox/sandbox.c
 create mode 100644 examples/template/.vscode/c_cpp_properties.json
 create mode 100644 examples/template/.vscode/launch.json
 create mode 100644 examples/template/.vscode/settings.json
 create mode 100644 examples/template/.vscode/tasks.json
 rename examples/{sandbox => template}/Makefile (84%)
 create mode 100644 examples/template/template.c

diff --git a/examples/sandbox/sandbox.c b/examples/sandbox/sandbox.c
deleted file mode 100644
index 33b76fd..0000000
--- a/examples/sandbox/sandbox.c
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Small example showing how to use the SWIO programming pin to 
-   do printf through the debug interface */
-
-#include "ch32v003fun.h"
-#include <stdio.h>
-
-uint32_t count;
-
-
-
-// Tell the compiler to put this code in the .data section.  That
-// will cause the startup code to copy it from flash into RAM where
-// it can be easily modified at runtime.
-void SRAMCode( ) __attribute__(( section(".data"))) __attribute__((noinline)) __attribute__((noreturn));
-void SRAMCode( )
-{
-	asm volatile( 
-"li a0, 0x40011410\n"
-"li a1, (1 | (1<<4))\n"
-"li a2, (1 | (1<<4))<<16\n"
-"1: c.sw a1, 0(a0)\n"
-"   c.sw a2, 0(a0)\n"
-"   j 1b\n" );
-    __builtin_unreachable();
-}
-
-int main()
-{
-	SystemInit48HSI();
-	SetupDebugPrintf();
-
-	// Boost CPU supply.
-	EXTEN->EXTEN_CTR = EXTEN_LDO_TRIM;
-
-	// Enable GPIOs
-	RCC->APB2PCENR |= RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOC;
-
-	// GPIO D0 Push-Pull
-	GPIOD->CFGLR &= ~(0xf<<(4*0));
-	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0);
-
-	// GPIO D4 Push-Pull
-	GPIOD->CFGLR &= ~(0xf<<(4*4));
-	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*4);
-
-	// GPIO C0 Push-Pull
-	GPIOC->CFGLR &= ~(0xf<<(4*0));
-	GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0);
-
-	SRAMCode();
-}
-
diff --git a/examples/template/.vscode/c_cpp_properties.json b/examples/template/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..b52c5f5
--- /dev/null
+++ b/examples/template/.vscode/c_cpp_properties.json
@@ -0,0 +1,20 @@
+{
+    "configurations": [
+        {
+            "name": "Linux",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "${workspaceFolder}/../../ch32v003fun"
+            ],
+            "defines": [],
+            "compilerPath": "/usr/bin/clang",
+            "cppStandard": "c++14",
+            "intelliSenseMode": "linux-clang-x64",
+            "compilerArgs": [
+                "-DCH32V003FUN_BASE"
+            ],
+            "configurationProvider": "ms-vscode.makefile-tools"
+        }
+    ],
+    "version": 4
+}
\ No newline at end of file
diff --git a/examples/template/.vscode/launch.json b/examples/template/.vscode/launch.json
new file mode 100644
index 0000000..b8cdedf
--- /dev/null
+++ b/examples/template/.vscode/launch.json
@@ -0,0 +1,39 @@
+{
+	"configurations": [
+		{
+			"name": "GDB Debug Target",
+			"type": "cppdbg",
+			"request": "launch",
+			"program": "template.elf",
+			"args": [],
+			"stopAtEntry": true,
+			"cwd": "${workspaceFolder}",
+			"environment": [],
+			"externalConsole": false,
+			"MIMode": "gdb",
+			"deploySteps": [
+				{
+					"type": "shell",
+					"continueOn": "GDBServer",
+					"command": "make --directory=${workspaceFolder} closechlink flash gdbserver"
+				},
+			],
+			"setupCommands": [
+				{
+					"description": "Enable pretty-printing for gdb",
+					"text": "-enable-pretty-printing",
+					"ignoreFailures": true
+				}
+			],
+			"miDebuggerPath": "gdb-multiarch",
+			"miDebuggerServerAddress": "127.0.0.1:2000"
+		},
+		{
+			"name": "Run Only (In Terminal)",
+			"type": "node",
+			"request": "launch",
+			"program": "",
+			"preLaunchTask": "run_flash_and_gdbserver",
+		}	
+		]
+}
diff --git a/examples/template/.vscode/settings.json b/examples/template/.vscode/settings.json
new file mode 100644
index 0000000..5f7790e
--- /dev/null
+++ b/examples/template/.vscode/settings.json
@@ -0,0 +1,15 @@
+{
+    "cmake.configureOnOpen": false,
+    "makefile.launchConfigurations": [
+        {
+            "cwd": "",
+            "sbinaryPath": "blink.elf",
+            "binaryArgs": []
+        }
+    ],
+    "editor.insertSpaces": false,
+    "editor.tabSize": 4,
+    "files.associations": {
+        "ch32v003fun.h": "c"
+    }
+}
diff --git a/examples/template/.vscode/tasks.json b/examples/template/.vscode/tasks.json
new file mode 100644
index 0000000..d086ce2
--- /dev/null
+++ b/examples/template/.vscode/tasks.json
@@ -0,0 +1,56 @@
+{
+	"version": "2.0.0",
+	"tasks": [
+		{
+			"type": "shell",
+			"label": "flash",
+			"presentation": {
+				"echo": true,
+				"focus": false,
+				"group": "build",
+				"panel": "shared",
+				"showReuseMessage" : false
+			},
+			"command": "make closechlink flash",
+		},
+		{
+			"type": "shell",
+			"label": "run_flash_and_gdbserver",
+			"command": "make closechlink flash gdbserver",
+
+			"presentation": {
+				"echo": true,
+				"focus": false,
+				"group": "build",
+				"panel": "shared",
+				"close": true,
+				"showReuseMessage" : false
+			},
+
+			"isBackground": true,
+			"options": {
+				"cwd": "${workspaceFolder}",
+			},
+			"runOptions": {
+				"instanceLimit": 2,
+			},			 
+			"group": "build",
+			"problemMatcher": {
+				"pattern": [
+					{
+						"regexp": ".",
+						"file": 1,
+						"location": 2,
+						"message": 3
+					}
+				],
+
+				"background": {
+					"activeOnStart": false,
+					"beginsPattern": "^.*Image written.*",
+					"endsPattern": "^.*GDBServer*"
+				}
+			},
+		}
+	]
+}
diff --git a/examples/sandbox/Makefile b/examples/template/Makefile
similarity index 84%
rename from examples/sandbox/Makefile
rename to examples/template/Makefile
index b3f8b71..64198f4 100644
--- a/examples/sandbox/Makefile
+++ b/examples/template/Makefile
@@ -1,6 +1,6 @@
 all : flash
 
-TARGET:=sandbox
+TARGET:=template
 
 include ../../ch32v003fun/ch32v003fun.mk
 
diff --git a/examples/template/template.c b/examples/template/template.c
new file mode 100644
index 0000000..25d236b
--- /dev/null
+++ b/examples/template/template.c
@@ -0,0 +1,38 @@
+/* Template app on which you can build your own. */
+
+#include "ch32v003fun.h"
+#include <stdio.h>
+
+uint32_t count;
+
+int main()
+{
+	SystemInit48HSI();
+	SetupDebugPrintf();
+
+	// Enable GPIOs
+	RCC->APB2PCENR |= RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOC;
+
+	// GPIO D0 Push-Pull
+	GPIOD->CFGLR &= ~(0xf<<(4*0));
+	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0);
+
+	// GPIO D4 Push-Pull
+	GPIOD->CFGLR &= ~(0xf<<(4*4));
+	GPIOD->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*4);
+
+	// GPIO C0 Push-Pull
+	GPIOC->CFGLR &= ~(0xf<<(4*0));
+	GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0);
+
+	while(1)
+	{
+		GPIOD->BSHR = 1 | (1<<4);	 // Turn on GPIOs
+		GPIOC->BSHR = 1;
+		printf( "+%lu\n", count++ );
+		GPIOD->BSHR = (1<<16) | (1<<(16+4)); // Turn off GPIODs
+		GPIOC->BSHR = (1<<16);
+		printf( "-%lu\n", count++ );
+	}
+}
+
diff --git a/minichlink/minichlink.c b/minichlink/minichlink.c
index 0abb1ff..fbfe5bf 100644
--- a/minichlink/minichlink.c
+++ b/minichlink/minichlink.c
@@ -28,27 +28,46 @@ struct MiniChlinkFunctions MCF;
 void * MiniCHLinkInitAsDLL( struct MiniChlinkFunctions ** MCFO, const init_hints_t* init_hints )
 {
 	void * dev = 0;
-	if( (dev = TryInit_WCHLinkE()) )
-	{
-		fprintf( stderr, "Found WCH Link\n" );
-	}
-	else if( (dev = TryInit_ESP32S2CHFUN()) )
-	{
-		fprintf( stderr, "Found ESP32S2 Programmer\n" );
-	}
-	else if ((dev = TryInit_NHCLink042()))
-	{
-		fprintf( stderr, "Found NHC-Link042 Programmer\n" );
-	}
-	else if ((dev = TryInit_B003Fun()))
+	
+	const char * specpgm = init_hints->specific_programmer;
+	if( specpgm )
 	{
-		fprintf( stderr, "Found B003Fun Bootloader\n" );
+		if( strcmp( specpgm, "linke" ) == 0 )
+			dev = TryInit_WCHLinkE();
+		else if( strcmp( specpgm, "esp32s2chfun" ) == 0 )
+			dev = dev = TryInit_ESP32S2CHFUN();
+		else if( strcmp( specpgm, "nchlink" ) == 0 )
+			dev = dev = TryInit_NHCLink042();
+		else if( strcmp( specpgm, "b003boot" ) == 0 )
+			dev = dev = TryInit_B003Fun();
+		else if( strcmp( specpgm, "ardulink" ) == 0 )
+			dev = dev = TryInit_B003Fun();
 	}
-	else if ((dev = TryInit_Ardulink(init_hints)))
+	else
 	{
-		fprintf( stderr, "Found Ardulink Programmer\n" );
+		if( (dev = TryInit_WCHLinkE()) )
+		{
+			fprintf( stderr, "Found WCH Link\n" );
+		}
+		else if( (dev = TryInit_ESP32S2CHFUN()) )
+		{
+			fprintf( stderr, "Found ESP32S2 Programmer\n" );
+		}
+		else if ((dev = TryInit_NHCLink042()))
+		{
+			fprintf( stderr, "Found NHC-Link042 Programmer\n" );
+		}
+		else if ((dev = TryInit_B003Fun()))
+		{
+			fprintf( stderr, "Found B003Fun Bootloader\n" );
+		}
+		else if ( init_hints->serial_port && (dev = TryInit_Ardulink(init_hints)))
+		{
+			fprintf( stderr, "Found Ardulink Programmer\n" );
+		}
 	}
-	else
+
+	if( !dev )
 	{
 		fprintf( stderr, "Error: Could not initialize any supported programmers\n" );
 		return 0;
@@ -93,6 +112,12 @@ int main( int argc, char ** argv )
 			if( i < argc )
 				hints.serial_port = argv[i];
 		}
+		else if( strncmp( v, "-c", 2 ) == 0 )
+		{
+			i++;
+			if( i < argc )
+				hints.specific_programmer = argv[i];
+		}
 	}
 
 	void * dev = MiniCHLinkInitAsDLL( 0, &hints );
@@ -173,13 +198,14 @@ keep_going:
 				else
 					goto unimplemented;
 				break;
+			case 'C': // For specifying programmer
 			case 'c':
-				// COM port argument already parsed previously
+				// COM port or programmer argument already parsed previously
 				// we still need to skip the next argument
 				iarg+=1;
 				if( iarg >= argc )
 				{
-					fprintf( stderr, "-c argument (COM port) required 2 arguments\n" );
+					fprintf( stderr, "-c/C argument required 2 arguments\n" );
 					goto unimplemented;
 				}
 				break;
diff --git a/minichlink/minichlink.exe b/minichlink/minichlink.exe
index d3404712091bdd8dcc125d58deeb556c528a3c93..5bbad93764ed20f109bc7e89424a6ef4b3b783da 100644
GIT binary patch
delta 28715
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
aemzMy0(P#Ct4n+a;&WQ!yKpiuQT_wJ&1U)l

delta 28161
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

diff --git a/minichlink/minichlink.h b/minichlink/minichlink.h
index dfdb244..1433f6d 100644
--- a/minichlink/minichlink.h
+++ b/minichlink/minichlink.h
@@ -158,7 +158,8 @@ struct InternalState
 /* could be expanded with more in the future (e.g., PID/VID hints, priorities, ...)*/
 /* not all init functions currently need these hints. */
 typedef struct {
-	const char* serial_port;
+	const char * serial_port;
+	const char * specific_programmer;
 } init_hints_t;
 
 void * MiniCHLinkInitAsDLL(struct MiniChlinkFunctions ** MCFO, const init_hints_t* init_hints) DLLDECORATE;
-- 
GitLab