前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >国产RISCV MCU 沁恒CH32V103上手体验

国产RISCV MCU 沁恒CH32V103上手体验

作者头像
bigmagic
发布2021-09-15 15:28:58
2.7K0
发布2021-09-15 15:28:58
举报
文章被收录于专栏:嵌入式iot嵌入式iot

国产RISCV MCU 沁恒CH32V103上手体验

  • 1.概述
  • 2.上手体验
  • 3.深度探究
    • 3.1 编程模型
    • 3.2 riscv寄存器分析
    • 3.3 代码尺寸
  • 4.小结

1.概述

最近由于stm32的价格疯涨以及stm32 mcu芯片的缺货,导致很多电子产品的方案慢慢会考虑一些国产替代方案,比如兆易创新的GD系列芯片等等。随着riscv在国内的发展壮大,许多riscv架构的mcu芯片也逐渐的成为可以供选择的方案。那么这款MCU的性能、体验、开发上手难度、实用性等等角度上,究竟体验如何,下面文章将做一个简单的概述,同时利用目前对RISCV的知识层面的理解,去分析这个芯片的使用。

从官网上购得一块评估板,价格55元,这个价格买一块mcu开发板,还带调试器,感觉还是合理的。

发货配置上,有一块开发板,一个调试器,还有两颗芯片。

这看起来还是有一些特点,开发板还有一个产品质保卡,这个也算是有心了。

那么这块开发板一些特性如何,根据芯片手册可以查阅到:

  • 内核

首先内核部分采用riscv架构,指令集为RV32IMAC,这些基本上都是标准的MCU的配置,当然没有支持F(单精度浮点),D(双精度浮点),更不用考虑DSP扩展,或者一些加密指令扩展,或者向量V扩展了。

对于基本的单片机功能,RV32IMAC的指令集架构完全是足够的,可以类似于stm32f103系列。

在主频上,是80MHz系统的主频。

  • 外设存储

作为MCU选型方案中,SRAM和FLASH也是非常重要的评估参数,CH32V103配置了20KB的SRAM以及64KB的Flash,封装引脚为48pin或者64pin。这样对标stm32的产品线系列如下所示。

可以和STM32F103C8或者STM32F103R8做一个横向对比。

另外可以看一下外设接口部分

这些都是比较常用的功能,作为一款MCU来说,没有什么可以评价的。

下面来看一下上手体验。

2.上手体验

用MCU做产品,很重要的是开发调试方便,而目前riscv这一块和arm还是有一些差距的。在用户体验方面,也需要不断的积累经验。但是有了IDE,就不用命令行了,这样开发难度就会少许多。

硬件连接

CH32V103需要使用WCH-Link进行开发连接,不同于传统的FT232H等,WCH-Link采用的是自研的CH549G。应该也是集成了JTAG和串口等协议。

整体的硬件连接如下所示:

连接上调试器采用的是两线JTAG。

下载软件

首先需要下载WCH-Link的驱动,可以从下面的地址下载:

代码语言:javascript
复制
http://www.wch.cn/downloads/WCHISPTool_Setup_exe.html

下载安装完成后,可以在电脑的设备管理器中找到安装的设备。最好安装设备后,重新插拔一下。

下载编程的IDE,这里采用的是MounRiver Studio

代码语言:javascript
复制
http://mounriver.com/

下载完成后,打开可以看到是通过eclipse改进的。

在功能和插件上做了一些定制,对于现有的IDE来说,用eclipse进行改进是最高效也是最简单的方式。如果重新写一个IDE,那么工作量也是非常大的。

下载调试,都可以通过eclipse上的图标进行,整体上和其他的riscv ide的使用上差别不大。

下载demo

作为一款mcu,其功能很重要,开发体验很重要,提供的库函数和示例代码也非常的重要。

代码语言:javascript
复制
http://www.wch.cn/downloads/CH32V103EVT_ZIP.html

在官方的例程中,提供了下面一些示例代码。

这些例子基本可以满足工程师开发的需求。从这一点来说,还是可以的。

3.深度探究

前面文章只是介绍了可见的东西,下面来分析一些比较关键的问题。

3.1 编程模型

作为使用芯片的评估者来说,代码写的好不好用,API写的稳不稳定,是否规范,这些都是非常关键的,好的底层代码直接拿来用,非常的放心,只用关注业务逻辑的好坏即可。因为直接操作寄存器也是有一定的门槛的。

就拿常用的UART的API来分析,可以看到如下API列表

采用的是结构体对象定义设备的方式,这种与STM32的编程模型类似,基本上是为了满足习惯了使用STM32的客户群体。

而拿出一个函数分析编程的风格,注释还是比较的清晰,整体的编程模型,和STM32类似。

这一块,外设编程模型算是比较简单,那么中断的编程模型呢?

在riscv定义中,一般有两种中断模型,一种是向量中断,一般常用的MCU都会是这样,一种是非向量中断模型,非向量中断模型只有一个中断入口,在一个入口中判断中断的类型。很显然,CH32V103采用的是向量中断。

向量中断的实时性稍微好一些。

在其中断的判决上,也是采用了一个NVIC的中断控制器,这个中断控制器与Cortex相比有什么区别,不得而知,个人认为应该是一样的,通过编程模型可以看到。

首先设置中断线,再设置NVIC,这一点与STM32很像。

3.2 riscv寄存器分析

虽然硬件调试器采用的是WH-Link,但是还是可以看到调试用的是openocd协议。

此时会列出所有的寄存器的信息。大概看了一下,基本没有自定义寄存器,所有的寄存器都是官方定义好的,而且只实现了m-mode下的寄存器。

这就意味着,不用修改编译器,不用修改openocd等等,直接用标准的即可。

然后再进一步分析编译工具链

上述图片可以得出如下结论:

  • 编译器版本为8.2.0
  • 从xPack获取的编译器的源代码
  • 编译器只使能了abi=ilp32,arch=rv32imac的选项
  • 该编译器是沁恒自己编译出来的,并未直接采用编译好的网上可以下载好的二进制文件

3.3 代码尺寸

在这种小容量的MCU上,代码尺寸也是需要关注的问题,在这个方面,一般是通过编译器库函数做优化。先看一个EXTI0的例子,编译出来后,效果如下:

文本段7.2KB,hex的大小为2.5K,所以整体上来看,占用的尺寸还算可以,但是在库函数的优化上,也应该没有做特殊的优化处理。

4.小结

以上就是沁恒CH32V103芯片相关的信息,本次探究基本上是简单的上手体验,加入一些自己的思考。在目前的情况下来看,沁恒的这个芯片总体上来说,从开发体验上,资料提供的完整度上来看,我都还是比较认可,抛开国产芯片的角度上来看,新的riscv架构做的芯片,在生态建设上确实还需要加强。如果后期生态完善,那将是更加的有利的事情。总体上手并不复杂,做产品方案评估感觉也比较简单,后续还要再看看性能方面的问题。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式IoT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 国产RISCV MCU 沁恒CH32V103上手体验
    • 1.概述
      • 2.上手体验
        • 3.深度探究
          • 3.1 编程模型
          • 3.2 riscv寄存器分析
          • 3.3 代码尺寸
        • 4.小结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档