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에 들어가면 설치하는 방법이 나온다.
>> 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
Post a Comment