目录

硬件准备

  • 沁恒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

沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置的更多相关文章

  1. 二维码解码器Zbar+VS2012开发环境配置

    Zbar条码解码器是一个开源的二维码(包括条形码)解码器,可以识别来至于视频流,图像文件.手持扫码器和视频设备(如摄像头)等二维码识别,支持EAN-13/UPC-A, UPC-E, EAN-8, Co ...

  2. 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置

    目录 沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置 硬件准备 CH32V103 开发板 ...

  3. 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录

    目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...

  4. 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  5. 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明

    目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...

  6. Ubuntu 12.04 搭建 Eclipse Android 开发环境(转)

    Ubuntu 12.04 搭建 Eclipse Android 开发环境 http://blog.sina.com.cn/s/blog_93dc666c0101b39p.html (2012-09-0 ...

  7. OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建

    /******************************************************************************************** * OK33 ...

  8. 开发环境配置--Ubuntu+Qt4+OpenCV(二)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  9. C#进行CAD二次开发环境配置

    最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...

随机推荐

  1. DS二叉树——二叉树之数组存储

    题目描述 二叉树可以采用数组的方法进行存储,把数组中的数据依次自上而下,自左至右存储到二叉树结点中,一般二叉树与完全二叉树对比,比完全二叉树缺少的结点就在数组中用0来表示.,如下图所示 从上图可以看出 ...

  2. virtio 驱动的数据结构理解

    ps:本文基于4.19.204内核 Q:vqueue的结构成员解释: A:结构如下,解析附后: struct virtqueue { struct list_head list;//caq:一个vir ...

  3. 最大连续子序列(简单DP实现)

    最大连续子序列 最大连续子数列和一道很经典的算法问题,给定一个数列,其中可能有正数也可能有负数,我们的任务是找出其中连续的一个子数列(不允许空序列),使它们的和尽可能大.我们一起用多种方式,逐步优化解 ...

  4. 「题解报告」SP16185 Mining your own business

    题解 SP16185 Mining your own business 原题传送门 题意 给你一个无向图,求至少安装多少个太平井,才能使不管那个点封闭,其他点都可以与有太平井的点联通. 题解 其他题解 ...

  5. 【python】一些python用法规律笔记

    作为本科用了多年MATLAB的工科生,学起来python有些似曾相识但也有些不习惯的地方. 在这里总结一下,慢慢整理,希望能巩固python语法 一.前闭后开 这个是和MATLAB很大不同.不论是ra ...

  6. 字节跳动端智能工程链路 Pitaya 的架构设计

    Client AI 是字节跳动产研架构下属的端智能团队,负责端智能 AI 框架和平台的建设,也负责模型和算法的研发,为字节跳动开拓端上智能新场景.本文介绍的 Pitaya 是由字节跳动的 Client ...

  7. 第八十五篇:Vue购物车(六) 总价的动态计算

    好家伙, 1.实现总价的动态计算 商品数量被动态的改变后, 相应的总价同样会改变 所以我们需要重新计算总价格了 这个的实现并不难 我只要拿到商品的数量就好了 我们用一个计算属性计算出已勾选商品的总数量 ...

  8. python_跨文件二维全局变量传参

    因为业务需要,我需要创建一个可以在多模块公用全局变量,根据https://www.jianshu.com/p/6cee728f3490的代码,因为他提供的只能生成 { k: v, kk: v ... ...

  9. git rebase合并多个commit总结

    git rebase 合并多个commit 方法 在开发过程中,有时一个任务会分几次commit提交,这样可能对于有些分支要cherry pick时会比较麻烦,这是我们可以通过git rebase 将 ...

  10. Windows 客户端802.1x的一些设置

    802.1x作为网络准入的验证,自然有很多好处.但是在实施过程中也遇到了些小问题.我在这里记录下来,希望对大家有帮助,遇到问题的时候能有个参考. 基于用户验证的方式,当用户修改了密码后,验证失败.此时 ...