added firmware section
This commit is contained in:
80
firmware/Readme.md
Normal file
80
firmware/Readme.md
Normal file
@@ -0,0 +1,80 @@
|
||||
# CH32V003 Firmware & Linux Development Setup
|
||||
|
||||
This folder contains the firmware source code for the CNC Water Flow Controller, built using the [ch32fun](https://github.com/cnlohr/ch32fun) framework.
|
||||
|
||||
Below is the guide to set up the build environment, compile, and flash the CH32V003 series on Linux using CLI tools.
|
||||
|
||||
*Tested on: Ubuntu Linux, CH32V003J4M6 (8-pin)*
|
||||
|
||||
---
|
||||
|
||||
## 1. Install toolchain
|
||||
|
||||
Download xPack RISC-V GCC:
|
||||
[https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases](https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases)
|
||||
|
||||
Extract it:
|
||||
```bash
|
||||
mkdir -p ~/toolchains
|
||||
tar -xzf xpack-riscv-none-elf-gcc-*-linux-x64.tar.gz -C ~/toolchains
|
||||
```
|
||||
|
||||
Activate it (add this to your ~/.bashrc for permanence):
|
||||
```Bash
|
||||
export TOOLCHAIN=$HOME/toolchains/xpack-riscv-none-elf-gcc-* # Update e.g.: xpack-riscv-none-elf-gcc-15.2.0-1
|
||||
export PATH=$TOOLCHAIN/bin:$PATH
|
||||
```
|
||||
|
||||
Verify the installation:
|
||||
```Bash
|
||||
riscv-none-elf-gcc --version
|
||||
```
|
||||
|
||||
## 2. Install Flashing Tool (minichlink)
|
||||
Clone the ch32fun repository and build minichlink:
|
||||
```Bash
|
||||
git clone https://github.com/cnlohr/ch32fun ~/ch32fun
|
||||
cd ~/ch32fun/minichlink
|
||||
make
|
||||
sudo mv minichlink /usr/local/bin/
|
||||
```
|
||||
|
||||
## 3. Build the Firmware
|
||||
Navigate to this firmware directory where the Makefile and main.c are located. Make sure the CH32FUN path in the Makefile points to where you cloned ch32fun.
|
||||
```Bash
|
||||
cd Flow-Controller/firmware
|
||||
make clean
|
||||
make
|
||||
```
|
||||
This will generate main.bin and main.elf.
|
||||
|
||||
## 4. Flash Firmware
|
||||
Connect your WCH-LinkE programmer to the board's J1 header:
|
||||
| Signal | Programmer | MCU Header (J1) |
|
||||
| :--- | :--- | :--- |
|
||||
| SWIO | SWDIO | Pin 3 (SWIO) |
|
||||
| GND | GND | Pin 2 (GND) |
|
||||
| 5V | 3.3V | Pin 1 (+3.3V) |
|
||||
Flash the compiled binary:
|
||||
```Bash
|
||||
make flash
|
||||
```
|
||||
or manually:
|
||||
```bash
|
||||
minichlink -w main.bin flash
|
||||
```
|
||||
|
||||
## 5. Logs
|
||||
See logs on the SWIO pin:
|
||||
```Bash
|
||||
minichlink -T
|
||||
```
|
||||
|
||||
## 6. Unbricking
|
||||
If you accidentally misconfigure the SWIO pin and lock yourself out, you can use the CH32V003 Unbrick CLI tool:
|
||||
```Bash
|
||||
git clone https://github.com/shakir-abdo/ch32v003-unbrick.git
|
||||
cd ch32v003-unbrick
|
||||
npm install
|
||||
./unbrick.js
|
||||
```
|
||||
Reference in New Issue
Block a user