• 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置


    目录

    硬件准备

    • 沁恒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.*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以及 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    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
    
    • 1

    根据自己本地环境, 修改Makefile中的配置

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

    编译和烧录

    # 清空
    make clean
    # 编译
    make
    # 烧录 = 擦除 + 烧录 + 重启运行
    make flash
    # 擦除
    make erase
    # 重启运行
    make reset
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    编译参数

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    前端面试基础面试题——9
    Python 文档解析:lxml库的使用
    【转】2022年“云计算的11类顶级威胁”报告
    2022杭电多校3——补题
    源码学习之Spring容器创建原理
    sh脚本 单独可以执行,放到crontab中不执行(定时清空redis)
    minio对象存储
    opencv定位图片中的图案?
    “蔚来杯“2022牛客暑期多校训练营1(补题)——ADG
    微信小程序——使用插槽slot快捷开发
  • 原文地址:https://blog.csdn.net/michaelchain/article/details/127610394