0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「50円マイコン ch32v003 を使った簡単キット(AKBONE2024)を組み立てる」
https://qiita.com/nanbuwks/items/22680849ee7674d66a89

のキットのファームウェア開発のための環境はいくつかありますが、今回は「ch32v003fun」 を使い、Ubuntu Linux のPCを使ってビルド&書き込むところまで試してみます。

環境

  • Ubuntu 22.04 LTS

ch32v003fun

以下のページのうち、

インストールは以下をもとにやっていきます。

下準備

WCH-LinkE を用意し、WindowsPC を用いてファームウェアの更新およびRISC-Vモードの設定を行います。
「WCH-LinkE を初期設定する」
https://qiita.com/nanbuwks/items/fd43cb92c6d381917f7e

その後、Ubuntu 上で WCH-LinkE のためのデバイス設定を以下のようにしておきます。

$ sudo usermod -aG $USER plugdev
$ sudo chmod a+r /etc/udev/rules.d/10-wch-linke.rules

cch32v003fun をインストール、ビルド

レポジトリをクローン。

$ git clone git@github.com:cnlohr/ch32v003fun.git
$ cd ch32v003fun
$ ls
LICENSE        ch32v003fun    examples_v20x  extralibs   package.json
README.md      examples       examples_v30x  minichlink  platformio.ini
build_scripts  examples_v10x  examples_x035  misc

Make 環境などは examples* などに入っているようだ。

$ cd  examples/blink

ここで make でいいのかな。

$ make
riscv64-elf-gcc -E -P -x c -DTARGET_MCU=CH32V003 -DMCU_PACKAGE= -DTARGET_MCU_LD=0 -DTARGET_MCU_MEMORY_SPLIT= ../../ch32v003fun/ch32v003fun.ld > ../../ch32v003fun/generated_ch32v003.ld
/bin/sh: 1: riscv64-elf-gcc: not found
make: *** [../../ch32v003fun/ch32v003fun.mk:225: ../../ch32v003fun/generated_ch32v003.ld] エラー 127

クロスコンパイル環境が入ってないのでここでエラーが出ます。

$ cd ../..

minichlink が書き込みツールかな?

$ cd ch32v003fun/minichlink/

必要なライブラリをインストールします。

$ sudo apt-get install build-essential libnewlib-dev gcc-riscv64-unknown-elf libusb-1.0-0-dev libudev-dev

先にエラーの出た、クロス開発環境も一緒に設定しました。

minichlink をビルドします。

$ make
gcc -o minichlink minichlink.c pgm-wch-linke.c pgm-esp32s2-ch32xx.c nhc-link042.c ardulink.c serial_dev.c pgm-b003fun.c minichgdb.c -lpthread -lusb-1.0 -ludev -O0 -g3 -Wall -DCH32V003 -I. 
gcc -o minichlink.so minichlink.c pgm-wch-linke.c pgm-esp32s2-ch32xx.c nhc-link042.c ardulink.c serial_dev.c pgm-b003fun.c minichgdb.c -lpthread -lusb-1.0 -ludev -O0 -g3 -Wall -DCH32V003 -I.  -shared -fPIC
$ ls -alh minichlink*
-rwxrwxr-x 1 nanbuwks nanbuwks 459K  9月  8 12:55 minichlink
-rw-rw-r-- 1 nanbuwks nanbuwks  61K  9月  7 16:38 minichlink.c
-rw-rw-r-- 1 nanbuwks nanbuwks 101K  9月  7 16:38 minichlink.exe
-rw-rw-r-- 1 nanbuwks nanbuwks 6.8K  9月  7 16:38 minichlink.h
-rwxrwxr-x 1 nanbuwks nanbuwks 480K  9月  8 12:55 minichlink.so

これで minichlink と minichlink.so が生成されました。 なお Windows 環境のためには minichlink.exe はバイナリがもともと用意されていたようです。

WCH-LinkE の認識

WCH-LinkE をつないでおきます。そのまま起動するとエラー。

$ ./minichlink
Error: couldn't open wch link device (libusb_open() = -3)
Error: Could not initialize any supported programmers
Error: Could not initialize any supported programmers

sudo すると認識しました。

$ sudo ./minichlink
WARNING: You are not in the plugdev group, the canned udev rules will not work on your system.
Found WCH Link
WCH Programmer is LinkE version 2.11
Already Connected
Full Chip Type Reply: [4] 81-55-01-01-11-00-00-00
Detected: CH32V10x

パスの通った場所にコピーしておきます。

$ sudo cp minichlink /usr/local/bin/

サンプルプログラムのビルド

$ make
riscv64-unknown-elf-gcc -E -P -x c -DTARGET_MCU=CH32V003 -DMCU_PACKAGE= -DTARGET_MCU_LD=0 ../../ch32v003fun/ch32v003fun.ld > ../../ch32v003fun/generated_ch32v003.ld
riscv64-unknown-elf-gcc -o blink.elf ../../ch32v003fun/ch32v003fun.c blink.c   -g -Os -flto -ffunction-sections -fdata-sections -fmessage-length=0 -msmall-data-limit=8 -march=rv32ec -mabi=ilp32e -DCH32V003=1 -static-libgcc -I/usr/include/newlib -I../../ch32v003fun/../extralibs -I../../ch32v003fun -nostdlib -I. -Wall  -Wl,--print-memory-usage -L../../ch32v003fun/../misc -lgcc -T ../../ch32v003fun/generated_ch32v003.ld -Wl,--gc-sections
Memory region         Used Size  Region Size  %age Used
           FLASH:         560 B        16 KB      3.42%
             RAM:          0 GB         2 KB      0.00%
riscv64-unknown-elf-objdump -S blink.elf > blink.lst
riscv64-unknown-elf-objdump -t blink.elf > blink.map
riscv64-unknown-elf-objcopy -O binary blink.elf blink.bin
riscv64-unknown-elf-objcopy -O ihex blink.elf blink.hex
make -C ../../ch32v003fun/../minichlink all
make[1]: ディレクトリ '/home/nanbuwks/Downloads/ch32v003fun/minichlink' に入ります
make[1]: 'all' に対して行うべき事はありません.
make[1]: ディレクトリ '/home/nanbuwks/Downloads/ch32v003fun/minichlink' から出ます
../../ch32v003fun/../minichlink/minichlink -w blink.bin flash -b
Error: Could not initialize any supported programmers
Error: Could not initialize any supported programmers
make: *** [../../ch32v003fun/ch32v003fun.mk:229: cv_flash] エラー 224

ビルドはうまくできているみたいです。

WCH-LINKE を接続してもう一度。

$ make
riscv64-unknown-elf-gcc -E -P -x c -DTARGET_MCU=CH32V003 -DMCU_PACKAGE= -DTARGET_MCU_LD=0 ../../ch32v003fun/ch32v003fun.ld > ../../ch32v003fun/generated_ch32v003.ld
riscv64-unknown-elf-gcc -o blink.elf ../../ch32v003fun/ch32v003fun.c blink.c   -g -Os -flto -ffunction-sections -fdata-sections -fmessage-length=0 -msmall-data-limit=8 -march=rv32ec -mabi=ilp32e -DCH32V003=1 -static-libgcc -I/usr/include/newlib -I../../ch32v003fun/../extralibs -I../../ch32v003fun -nostdlib -I. -Wall  -Wl,--print-memory-usage -L../../ch32v003fun/../misc -lgcc -T ../../ch32v003fun/generated_ch32v003.ld -Wl,--gc-sections
Memory region         Used Size  Region Size  %age Used
           FLASH:         560 B        16 KB      3.42%
             RAM:          0 GB         2 KB      0.00%
riscv64-unknown-elf-objdump -S blink.elf > blink.lst
riscv64-unknown-elf-objdump -t blink.elf > blink.map
riscv64-unknown-elf-objcopy -O binary blink.elf blink.bin
riscv64-unknown-elf-objcopy -O ihex blink.elf blink.hex
make -C ../../ch32v003fun/../minichlink all
make[1]: ディレクトリ '/home/nanbuwks/Downloads/ch32v003fun/minichlink' に入ります
make[1]: 'all' に対して行うべき事はありません.
make[1]: ディレクトリ '/home/nanbuwks/Downloads/ch32v003fun/minichlink' から出ます
../../ch32v003fun/../minichlink/minichlink -w blink.bin flash -b
Found WCH Link
WCH Programmer is LinkE version 2.14
Already Connected
Full Chip Type Reply: [4] 81-55-01-01-11-00-00-00
Detected: CH32V10x
^Cmake: *** [../../ch32v003fun/ch32v003fun.mk:229: cv_flash] 割り込み

WCH-LinkE は認識しているみたいです。
ではWCH-LinkEにターゲットボードを接続します。

IMG_20241115_005204.jpg
必要なのは3線のみです。

IMG_20241115_005154.jpg
ターゲットボードは今回ははんだづけせず、L字ピンをひっかけました。

$ make
riscv64-unknown-elf-gcc -E -P -x c -DTARGET_MCU=CH32V003 -DMCU_PACKAGE= -DTARGET_MCU_LD=0 ../../ch32v003fun/ch32v003fun.ld > ../../ch32v003fun/generated_ch32v003.ld
riscv64-unknown-elf-gcc -o blink.elf ../../ch32v003fun/ch32v003fun.c blink.c   -g -Os -flto -ffunction-sections -fdata-sections -fmessage-length=0 -msmall-data-limit=8 -march=rv32ec -mabi=ilp32e -DCH32V003=1 -static-libgcc -I/usr/include/newlib -I../../ch32v003fun/../extralibs -I../../ch32v003fun -nostdlib -I. -Wall  -Wl,--print-memory-usage -L../../ch32v003fun/../misc -lgcc -T ../../ch32v003fun/generated_ch32v003.ld -Wl,--gc-sections
Memory region         Used Size  Region Size  %age Used
           FLASH:         560 B        16 KB      3.42%
             RAM:          0 GB         2 KB      0.00%
riscv64-unknown-elf-objdump -S blink.elf > blink.lst
riscv64-unknown-elf-objdump -t blink.elf > blink.map
riscv64-unknown-elf-objcopy -O binary blink.elf blink.bin
riscv64-unknown-elf-objcopy -O ihex blink.elf blink.hex
make -C ../../ch32v003fun/../minichlink all
make[1]: ディレクトリ '/home/nanbuwks/Downloads/ch32v003fun/minichlink' に入ります
make[1]: 'all' に対して行うべき事はありません.
make[1]: ディレクトリ '/home/nanbuwks/Downloads/ch32v003fun/minichlink' から出ます
../../ch32v003fun/../minichlink/minichlink -w blink.bin flash -b
Found WCH Link
WCH Programmer is LinkE version 2.14
Full Chip Type Reply: [8] 82-0d-05-09-00-30-05-00
Detected: CH32V003
Setup success
Flash Storage: 16 kB
Part UUID    : 53-a5-ab-cd-bb-73-bc-01
PFlags       : ff-ff-ff-ff
Part Type (B): 07-13-bb-91
Read protection: disabled
Interface Setup
Image written.

うまく書けたようです。

blink の変更

AKBONE2024 は PD5 に LED
が接続されています。サンプルプログラムでは、PD0,PD4,PD6,PC0 を blink していますが、
それを書き換えて PD0,PD4,PD5,PC0 にしました。

IMG_20241115_005722.jpg

右上のLEDが点滅し、無事プログラム変更が確認できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?