diff --git a/.vs/RP2040_UPS_Loader/FileContentIndex/1b953f1f-d3cd-4738-9bc4-944f3a8e10fa.vsidx b/.vs/RP2040_UPS_Loader/FileContentIndex/1b953f1f-d3cd-4738-9bc4-944f3a8e10fa.vsidx deleted file mode 100644 index 36c7d97..0000000 Binary files a/.vs/RP2040_UPS_Loader/FileContentIndex/1b953f1f-d3cd-4738-9bc4-944f3a8e10fa.vsidx and /dev/null differ diff --git a/.vs/RP2040_UPS_Loader/FileContentIndex/217a2168-c5ad-438f-94c5-d13417888a3b.vsidx b/.vs/RP2040_UPS_Loader/FileContentIndex/217a2168-c5ad-438f-94c5-d13417888a3b.vsidx new file mode 100644 index 0000000..d3014b4 Binary files /dev/null and b/.vs/RP2040_UPS_Loader/FileContentIndex/217a2168-c5ad-438f-94c5-d13417888a3b.vsidx differ diff --git a/.vs/RP2040_UPS_Loader/FileContentIndex/0ac3d3cc-dfa5-465d-8a92-c936a883a417.vsidx b/.vs/RP2040_UPS_Loader/FileContentIndex/37feb339-39ac-4d8a-835a-935d787227a0.vsidx similarity index 77% rename from .vs/RP2040_UPS_Loader/FileContentIndex/0ac3d3cc-dfa5-465d-8a92-c936a883a417.vsidx rename to .vs/RP2040_UPS_Loader/FileContentIndex/37feb339-39ac-4d8a-835a-935d787227a0.vsidx index 87fa1cd..53a3fcd 100644 Binary files a/.vs/RP2040_UPS_Loader/FileContentIndex/0ac3d3cc-dfa5-465d-8a92-c936a883a417.vsidx and b/.vs/RP2040_UPS_Loader/FileContentIndex/37feb339-39ac-4d8a-835a-935d787227a0.vsidx differ diff --git a/.vs/RP2040_UPS_Loader/FileContentIndex/7942641d-4c09-4170-a7a5-2d9f1def7839.vsidx b/.vs/RP2040_UPS_Loader/FileContentIndex/7942641d-4c09-4170-a7a5-2d9f1def7839.vsidx new file mode 100644 index 0000000..416f723 Binary files /dev/null and b/.vs/RP2040_UPS_Loader/FileContentIndex/7942641d-4c09-4170-a7a5-2d9f1def7839.vsidx differ diff --git a/.vs/RP2040_UPS_Loader/FileContentIndex/e0378374-4432-4148-ae0a-6021ba1f270b.vsidx b/.vs/RP2040_UPS_Loader/FileContentIndex/e0378374-4432-4148-ae0a-6021ba1f270b.vsidx deleted file mode 100644 index 9d1c3f5..0000000 Binary files a/.vs/RP2040_UPS_Loader/FileContentIndex/e0378374-4432-4148-ae0a-6021ba1f270b.vsidx and /dev/null differ diff --git a/.vs/RP2040_UPS_Loader/v17/.wsuo b/.vs/RP2040_UPS_Loader/v17/.wsuo index 9e9c53b..5d22a0d 100644 Binary files a/.vs/RP2040_UPS_Loader/v17/.wsuo and b/.vs/RP2040_UPS_Loader/v17/.wsuo differ diff --git a/.vs/RP2040_UPS_Loader/v17/DocumentLayout.backup.json b/.vs/RP2040_UPS_Loader/v17/DocumentLayout.backup.json index c9dfbad..976cc55 100644 --- a/.vs/RP2040_UPS_Loader/v17/DocumentLayout.backup.json +++ b/.vs/RP2040_UPS_Loader/v17/DocumentLayout.backup.json @@ -32,7 +32,7 @@ "RelativeDocumentMoniker": "rp2040_Loader.py", "ToolTip": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\rp2040_Loader.py", "RelativeToolTip": "rp2040_Loader.py", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAG4AAAA8AAAAAAAAAA==", + "ViewState": "AgIAAFQAAAAAAAAAAAAAAIIAAAASAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002457|", "WhenOpened": "2025-07-10T14:11:57.024Z", "EditorCaption": "" @@ -48,6 +48,10 @@ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002457|", "WhenOpened": "2025-07-23T11:07:29.706Z" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}" } ] } diff --git a/.vs/RP2040_UPS_Loader/v17/DocumentLayout.json b/.vs/RP2040_UPS_Loader/v17/DocumentLayout.json index 5dc5b06..91e72b1 100644 --- a/.vs/RP2040_UPS_Loader/v17/DocumentLayout.json +++ b/.vs/RP2040_UPS_Loader/v17/DocumentLayout.json @@ -2,6 +2,10 @@ "Version": 1, "WorkspaceRootPath": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\", "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\Releases\\CHANGE LOG.txt||{8B382828-6202-11D1-8870-0000F87579D2}", + "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:Releases\\CHANGE LOG.txt||{8B382828-6202-11D1-8870-0000F87579D2}" + }, { "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\rp2040_Loader.py||{8B382828-6202-11D1-8870-0000F87579D2}", "RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:rp2040_Loader.py||{8B382828-6202-11D1-8870-0000F87579D2}" @@ -27,27 +31,41 @@ { "$type": "Document", "DocumentIndex": 0, + "Title": "CHANGE LOG.txt", + "DocumentMoniker": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\Releases\\CHANGE LOG.txt", + "RelativeDocumentMoniker": "Releases\\CHANGE LOG.txt", + "ToolTip": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\Releases\\CHANGE LOG.txt", + "RelativeToolTip": "Releases\\CHANGE LOG.txt", + "ViewState": "AgIAAAAAAAAAAAAAAAAAACEAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003109|", + "WhenOpened": "2025-10-06T12:33:48.161Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 1, "Title": "rp2040_Loader.py", "DocumentMoniker": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\rp2040_Loader.py", "RelativeDocumentMoniker": "rp2040_Loader.py", "ToolTip": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\rp2040_Loader.py", "RelativeToolTip": "rp2040_Loader.py", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAHoAAAAkAAAAAAAAAA==", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAIIAAAASAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002457|", "WhenOpened": "2025-07-10T14:11:57.024Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 2, "Title": "main.py", "DocumentMoniker": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\Resources\\RP2040\\main.py", "RelativeDocumentMoniker": "Resources\\RP2040\\main.py", "ToolTip": "C:\\Users\\william\\Documents\\Git\\RP2040_UPS_Loader\\Resources\\RP2040\\main.py", "RelativeToolTip": "Resources\\RP2040\\main.py", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "ViewState": "AgIAAGYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.002457|", - "WhenOpened": "2025-07-23T11:07:29.706Z" + "WhenOpened": "2025-07-23T11:07:29.706Z", + "EditorCaption": "" } ] } diff --git a/.vs/slnx.sqlite b/.vs/slnx.sqlite index ad72801..a977fcb 100644 Binary files a/.vs/slnx.sqlite and b/.vs/slnx.sqlite differ diff --git a/Releases/CHANGE LOG.txt b/Releases/CHANGE LOG.txt index 877d491..ed03c68 100644 --- a/Releases/CHANGE LOG.txt +++ b/Releases/CHANGE LOG.txt @@ -24,4 +24,10 @@ Improvements: - Added logging to see which files get uploaded or skipped (if unchanged) Bug Fixes: -- Fixed `mpremote` \ No newline at end of file +- Fixed `mpremote` + +RP Loader V1.1.2 - 06/10/2025 + +Improvements: +- Added support for the RP2350-ETH (Pico 2 platform) + diff --git a/Releases/RP Loader V1.1.0.zip b/Releases/RP Loader V1.1.0.zip new file mode 100644 index 0000000..7fa27a5 Binary files /dev/null and b/Releases/RP Loader V1.1.0.zip differ diff --git a/rp2040_Loader.py b/rp2040_Loader.py index afa3a0a..e22457c 100644 --- a/rp2040_Loader.py +++ b/rp2040_Loader.py @@ -17,15 +17,14 @@ class RP2040UploaderApp: self.folder_path = os.path.join(os.getcwd(), "Resources/RP2040") self.config_path = os.path.join(self.folder_path, "config.json") - - self.label = tk.Label(master, text="Searching for RP2040...") + self.label = tk.Label(master, text="Searching for board...") self.label.pack(pady=10) - self.port = self.find_rp2040_port() + self.port, self.board_name = self.find_supported_port() if self.port: - self.label.config(text=f"RP2040 detected on {self.port}") + self.label.config(text=f"{self.board_name} detected on {self.port}") else: - self.label.config(text="RP2040 not found.") + self.label.config(text="No supported board found.") # Config entry fields self.ip_entry = self.create_labeled_entry("IP Address:") @@ -34,7 +33,13 @@ class RP2040UploaderApp: self.load_config() - self.upload_button = ttk.Button(master, text="Upload Files", style="Accent.TButton", command=self.upload_files, state=tk.NORMAL if self.port else tk.DISABLED) + self.upload_button = ttk.Button( + master, + text="Upload Files", + style="Accent.TButton", + command=self.upload_files, + state=tk.NORMAL if self.port else tk.DISABLED + ) self.upload_button.pack(pady=10) def create_labeled_entry(self, label_text): @@ -46,17 +51,20 @@ class RP2040UploaderApp: entry.pack(side=tk.RIGHT) return entry - def find_rp2040_port(self): - target_vid = 0x239A - target_pid = 0x80F2 + def find_supported_port(self): + # List of supported boards (VID, PID, Name) + supported_boards = [ + (0x239A, 0x80F2, "RP2040"), + (0x2E8A, 0x0009, "RP2350"), + ] ports = serial.tools.list_ports.comports() for port in ports: - if port.vid == target_vid and port.pid == target_pid: - return port.device - - return None + for vid, pid, name in supported_boards: + if port.vid == vid and port.pid == pid: + return port.device, name + return None, None def load_config(self): if os.path.isfile(self.config_path): @@ -120,7 +128,7 @@ class RP2040UploaderApp: if __name__ == "__main__": root = tk.Tk() app = RP2040UploaderApp(root) - root.title("RP2040 Loader V1.0.2") + root.title("RP Loader V1.1.0") root.iconbitmap(r'Resources/icon1.ico') @@ -135,7 +143,7 @@ if __name__ == "__main__": # Footer label in bottom right footer_frame = tk.Frame(root) footer_frame.pack(side=tk.BOTTOM, fill=tk.X) - footer_label = tk.Label(footer_frame, text="Made by Hendo 23/07/2025", anchor="e", justify="right", font=("TkDefaultFont", 7, "bold")) + footer_label = tk.Label(footer_frame, text="Made by Hendo 06/10/2025", anchor="e", justify="right", font=("TkDefaultFont", 7, "bold")) footer_label.pack(side=tk.RIGHT, padx=10, pady=5) root.mainloop()