(macOS) Adafruit QT Py CH32V203 공장 초기화 방법

PlatformIO로 ESP32-S2 펌웨어 플래시 성공 후 CH32V203에도 바로 도전을 했다.

가지고 있던 기기는 Adafruit QT Py CH32V203.

그런데, 나중에 또 기록하겠지만, 생각보다 잘 안 됐다 ㅜ

잘못된 펌웨어를 억지로 쑤셔 넣으려고 해서 그런지 결국은 내 MacBook에서 인식하지 못 하기 시작했다.

>> ls /dev/cu.*

를 했을 때 port가 안 뜬다는 말이 되겠음.

그나마 다행인 건 bootloader 모드 (Boot 버튼 누른 채로 USB 연결) 로 연결하면 System report에서는 "Vendor-Specific Device"라는 이름으로 보이긴 한다.

그냥 연결하면 이것조차 안 뜸.


아, 보드 버려야 되나 싶다가 ChatGPT에 공장 초기화하는 방법을 물어봤다.


Step 1. wchisp - WCH ISP Tool in Rust

일단 port가 안 뜨기 때문에 PlatformIO로 빈 펌웨어를 덮어쓰는 것이 불가능하다.

하지만 위에 언급한 대로 "Vendor-Specific Device"라는 이름이 뜨니 어떻게든 연결시키는 방법이 있을 것 같은데, 우선 ChatGPT는 WCH In-System Programming (ISP) Tool를 설치해서 해결하라고 추천해 줬다.

WCH는 RISC-V류 CH32V 개발 보드 만드는 회사라고 함.

그러므로 CH32V를 위한 wchisp는 ESP 보드들을 위한 espidf 같은 것이 아닐까?


"wchisp - WCH ISP Tool in Rust" GitHub에 들어가면 설치하는 방법이 나온다.


>> brew install libusb

# install wchisp
>> cargo install wchisp --git https://github.com/ch32-rs/wchisp


먼저 libusb.

macOS에서 libusb는 개발자가 USB 장치에 접근하고 제어할 수 있도록 해주는 C 언어 기반 라이브러리라고 함.

이를 통해 애플리케이션이 macOS 자체의 드라이버나 프레임워크에 의존하지 않고, low-level에서 직접 USB 장치와 통신할 수 있어 다양한 맞춤형 USB 장치 제어 및 개발을 가능하게 한다고 한다.

오, 뭔가 희망적이다.


다음 cargo.

시스템 프로그래밍 언어 중 하나인 Rust의 공식 패키지 매니저이자 빌드 시스템 도구.

프로젝트 생성, 외부 라이브러리 다운로드, 코드 빌드 등 Rust 개발에 필요한 전반적인 작업을 자동화하여 개발 효율성을 높여준다고 함.

이것도 Anaconda의 conda, Homebrew의 brew와 비슷한 것이 아닐까


wchisp가 제대로 설치되었는지 확인하려면

>> wchisp info


뭔가 전반적인 파일 구조를 보여 주는 것 같다.

그리고 결과 첫 번째와 두 번째 줄에 보면 USB device #0의 CH32V203이 보인다!


2. 공장 초기화

PlatformIO와 같은 IDE 없이도 wchisp로 .bin 파일만 있으면 펌웨어를 갈아엎을 수 있다고 한다.

그럼 CH32V203의 초기 펌웨어가 필요할 텐데, "Adafruit QT Py CH32V203" 웹사이트에서 "Factory Reset Binary File"을 다운 받을 수 있다.

초기 펌웨어는 "NeoPixel swirl"인데, built-in LED의 색이 계속 변하는 펌웨어다.

명령어는 다음과 같다.

>> wchisp flash /path/to/factory_reset.bin


오 다시 port가 살아났다!


굳.

이제 다시 처음부터 시작해 볼까..?

ㅜㅜ


Comments