沁恆CH32V003(二): Ubuntu20.04 MRS和Makefile開發環境設定

2022-10-31 12:01:27

目錄

硬體準備

  • 沁恆CH32V003F4P6開發板
  • WCH-LinkE

MounRiver Studio Community 環境

使用 MounRiver Studio Community IDE 進行開發是比較簡單的一種方式, 前往 http://mounriver.com/download 下載 MounRiver_Studio_Community_Linux_V130, 解壓後

  • 參照 beforeinstall/start.sh 的內容, 新增動態連結庫檔案以及udev規則檔案
  • 執行可執行檔案 MounRiver Studio_Community 即可啟動MRS

建立專案

File -> New -> MounRiver Project

  • Project Name: 專案名稱,隨便輸入
  • Use Default Location: 使用預設的工作空間或另外指定
  • 勾選 RISC-V Core, 因為要查詢的是 CH32V003, 在下面的選擇框中選中 CH32V003, 然後選擇 CH32V003F4P6
  • 其它預設

點選Finish後, IDE會建立一個帶內容的專案模板

編譯專案

可以直接按 Ctrl + B 或從選單 Project -> Build All 編譯. 如果提示編譯錯誤, 可能是工具鏈未設定, 需要設定一下工具鏈路徑

全域性預設工具鏈路徑設定

選單 Window -> Preferences -> MCU, 只需要設定和CH32V003相關的工具鏈

  • Global OpenOCD Path, 設定為自帶的openocd路徑, 例如 /opt/wch/MRS_Community/toolchain/OpenOCD/bin
  • Global RISC-V Toolchains Paths, 設定為自帶的gcc路徑, 例如 /opt/wch/MRS_Community/toolchain/RISC-V Embedded GCC/bin

專案工具鏈路徑設定

Project -> Properties 下可以設定當前專案相關的工具鏈路徑, 條目和全域性的一樣.

燒錄

Flash -> Config, 設定燒錄選項

  • 點選第一個圖示查詢程式設計器狀態
  • 如果開啟了讀防寫(底下狀態為綠), 要點選解鎖圖示解鎖
  • 檢查Target中的MCU型別, Target File是否正確
  • Options預設全部勾選

應用後, 按F8就會開始燒錄

問題處理

啟動後無建立MounRiver Project的選項

如果將解壓得到的 MRS_Community 目錄修改為其它使用者, 例如將其移動到 /opt 下並 chown -R root:root, 那麼在啟動後, 在 New 選單中會看不到建立 MounRiver Project 的選項, 是因為有幾個 plugins 的許可權不正確導致, 檔案許可權為600, 應該修改為644.

plugins目錄下 com.mounriver 開頭的檔案

-rw-r--r-- 1 root root   115170 Sep 20 00:35 com.mounriver.editor.ld_1.8.2.jar
-rw------- 1 root root   581702 Oct 10 19:19 com.mounriver.flash_1.8.2.jar
-rw------- 1 root root  2088946 Oct 10 19:19 com.mounriver.project_1.8.2.jar
-rw-r--r-- 1 root root   141287 Sep 22  2020 com.sun.el_2.2.0.v201303151357.jar
# 執行命令
sudo chmod 644 com.mounriver.*

以及 plugins/org.eclipse.epp.package.embedcdt_4.17.0.20200921-0821 目錄下的幾個png檔案

-rw-r--r-- 1 root root   1036 Sep 22  2020 about.properties
-rw------- 1 root root    777 Sep  7  2021 eclipse16.png
-rw------- 1 root root  18913 Sep  7  2021 eclipse256.png
-rw------- 1 root root   1739 Sep  7  2021 eclipse32.png
-rw------- 1 root root   2826 Sep  7  2021 eclipse48.png
-rwxrw-r-- 1 root root  95552 Apr  3  2020 eclipse_lg.png*
-rw-r--r-- 1 root root  10655 Sep 22  2020 intro-eclipse.svg
drwxr-xr-x 3 root root   4096 Sep 22  2020 META-INF/
-rw------- 1 root root 137750 Sep  1  2021 MounRiver.png
drwxr-xr-x 2 root root   4096 Sep 22  2020 org.eclipse.ui.intro.universal.solstice/
# 執行命令
sudo chmod 644 *.png

Makefile, VSCode 環境

如果傾向於使用其它的IDE, 例如VSCode, 則需要使用 Makefile 方式進行設定

  • 硬體 依然使用 CH32V003F4P6開發板以及WCH-LinkE,
  • 軟體 從http://mounriver.com/download下載 MRS_Toolchain_Linux_x64_V1.60.tar.xz, 注意需要使用V1.60, 舊版本不支援CH32V003.

注意: 當前CH32V系列的開發都不能使用公版RISC-V GCC和公版OpenOCD, 因為包含沁恆客製化部分, 未在開源專案主幹中支援.

設定步驟

解壓工具鏈後

  • 參照 beforeinstall/start.sh 的內容, 新增動態連結庫檔案以及udev規則檔案
  • 將工具鏈移動到合適的位置, 並修改owner為root避免誤修改

匯出專案模板

git clone https://gitee.com/iosetting/ch32v003-template.git

根據自己本地環境, 修改Makefile中的設定

TOOL_CHAIN_PATH ?= /opt/gcc-riscv/riscv-wch-embedded-gcc-v1.60/bin
OPENOCD_PATH    ?= /opt/openocd/wch-openocd-v1.60/bin

編譯和燒錄

# 清空
make clean
# 編譯
make
# 燒錄 = 擦除 + 燒錄 + 重啟執行
make flash
# 擦除
make erase
# 重啟執行
make reset

編譯引數

CH32V003編譯的基本引數如下, 注意 march 和 mabi, 和 CH32V103 是不一樣的, 使用CH32V103引數編譯寫入後不執行, 這些引數是從MRS中實際執行的編譯命令中提取的

CCFLAGS := -march=rv32ec \
           -mabi=ilp32e \
           -msmall-data-limit=0 \
           -msave-restore \
           -Os \
           -fmessage-length=0 \
           -fsigned-char \
           -ffunction-sections \
           -fdata-sections \
		   -fno-common \
           -Wunused -Wuninitialized -g