# CH32v003 Cmake + CppUTest Template


## Goal

Be a flexable template repo for working with ch32v003 controllers while aslo
inegrating TDD scripts using Cmake.


## Requirements

- CMake
- Sh, Bash or compatible shell
- Make/GMake/BSDMake/etc
- clang/gcc
- clangd
- CppUTest(for unit tests)
- NewLIB/newlib-nano


## Installing toolchain

**FreeBSD:**

```sh
sudo pkg install gawk gsed

git clone https://github.com/riscv-collab/riscv-gnu-toolchain.git
cd ./riscv-gnu-toolchain

git submodule update --init --recursive

mkdir ./build && cd ./build

# Create needed dir for the output.
mkdir /usr/local/riscv && chmod -R 0775 /usr/local/riscv

# Setup to build newlib for 32bit embedded and compressed cpus.
./configure --prefix=/usr/local/riscv --with-arch=rv32ec \
    --with-arch=rv32ec \
    --with-abi=ilp32e \
    --with-multilib
make -j4 newlib

# Some Example options below.
make -j4 build-gcc1
make -j4 build-gcc2
make -j4 build-gdb
make -j4 build-libc
make -j4 build-llvm
make -j4 build-uclibc
make -j4 build-binutils
```

**Linux:**

Pretty much the same as FreeBSD, just follow the toolchain's `README.md` files 
instructions.


## TODO

- [X] Add ch32v003fun sources.
- [X] Add example blinky default main.
- [ ] Add useful test examples.
- [ ] Add useful mock examples.
- [X] Get Blinky to run on hardware.
- [ ] Set conditional compile/linker flags?
- [ ] Get RegEdit setup for 32bit addresses.

