×
嵌入式 > 技术百科 > 详情

全球第一款基于RISC-V架构的商用SoC——差一点就追上STM32F7性能的HiFive1到底有多拽

发布时间:2020-06-17 发布时间:
|

可能没多少人知道HiFive1开发板,所以先给大家简单介绍下背景。

HiFive1是全球首款基于开源指令集RISC-V架构的商用SoC Freedom E310-G000(下面都简称FE310)的开发板,由SiFive公司推出的,同时,这个公司也是RISC-V架构指令集的发明者创办的,所以,自然而然的,此次故事的主角就是围绕HiFive1这块板子以及FE310这块SoC。

第一时间拿到HiFive1开发板还是非常兴奋的,迫不及待地想向大家炫(分)耀(享),因此前段时间潜心修行,推掉无数应酬,只是为了能第一时间给广大网友同胞呈上全球第一款基于RISC-V商用SoC的开发板的体验。

所以各种废话就不多说了,直接进入正题。文中自然会一一解答网友现在可能还云里雾里的问题,比如RISC-V是啥?跟ARM有啥区别?FE310性能怎样?等等...

HiFive1开发板

第一眼看到HiFive1开发板是什么感受?如果你对Arduino比较熟悉,又比较拥护,说不定你已经开启了吐槽模式,确实HiFive1像Arduino UNO开发板毋庸置疑,毕竟它本身就是仿照着设计的,开发板打着的旗号本身就是兼容Arduino,没什么好奇怪的,至少在硬件接口这一块你能很快的熟悉HiFive1.

板子上的硬件资源并不是很多,布局可以直接参考下图。

HiFive1开发板特性:

  • SoC:SiFive Freedom E310(FE310)、320+ MHz
  • 内存:16 KB指令高速缓存,16 KB数据暂存器
  • 其他特性:硬件乘/除,调试模块,灵活的时钟生成与片上振荡器和PLL
  • 工作电压:3.3 V和1.8 V.
  • 输入电压:5 V USB或7-12 VDC插孔
  • IO电压:支持3.3 V或5 V
  • 数字输入/输出引脚:19
  • PWM引脚:9
  • SPI控制器/硬件CS引脚:1/3
  • 外部中断引脚:19
  • 外部唤醒引脚:1
  • 闪存:128 Mbit片外
  • 主机接口(microUSB):程序,调试和串行通信
  • 尺寸:68 mm x 51 mm

硬件电路虽然看起来简单,但是实际电路设计以及用料还是十分考究的。

USB转串口/JTAG电路采用了FTDI的FT2232HL芯片,板子上兼容Arduino UNO的接口是通过德州仪器的电平转换IC实现的,另外,板子上也额外搭载了一个16MB的SPI FLASH,这个片外存储可以存放代码,用于开发板的程序运行,同样的,除了片外的启动模式,板子上的这颗FE310 SoC本身也支持Gate ROM、Mask ROM以及OTP的启动。

HiFive1开发板可以通过DC JACK接口或者MicroUSB供电,其中DC JACK接口支持7~12V的电源适配器供电,相应的可以支持更多的外设扩展。板子上的其实接口不多,剩下的基本就是一个复位按键、一个wake按键,和标准的Arduino开发板基本吻合。

HiFive开发板的背面是SiFive公司大大的logo,宣传作用很突出,另外还有这个公司的网址,很重要,你所需要的资料就在上面找了。

SiFive Freedom E310-G000 SoC

当然,开发板的重点还是在于板子上的这颗FE310-G000 SoC(下面简称FE310)。FE310采用QFN封装,尺寸大概在7mm*7mm(不是精确值,笔者自己量的,找了半天没找到这个SoC的尺寸)

FE310 SoC可以分为两部分,包含了一个核心处理器E31 Coreplex,以及其他的资源包括灵活的外设IO口,一个片外QSPI Flash控制器,8KiB OTP存储、8KB Mask ROM、时钟发生器以及一个always-on模块(包括一个可编程电源管理单元),系统框图如下。

在剖析FE310内部的同时,我们也正在逐渐地逼近真相,用更通俗易懂的话来说,FE310 SoC中集成的E31 Coreplex处理器就相当于我们平时经常接触的微控制器中的ARM Cortex-M系列处理器(这只是个比喻),而E31 Coreplex处理器与ARM Coretx-M系列处理器明显不同的地方在于架构和指令集。

我们知道ARM Cortex-M系列处理器目前是基于ARMv6-M、ARMv7-M、ARMv8-M这几种架构,以后可能还会更多,但这些并且是不开源的,而E31 Coreplex处理器则是基于RV32IMAC RISC-V架构,并且是一个开源的架构。先不谈性能如何,就以如果一个企业要拿来使用,如果选择ARM,那要付昂贵的IP授权费的,而E31 Coreplex则是免费的,并且源代码开放,因此企业能够全面检查RTL,以确保最高的信任级别以及具有相当大的灵活性。

另外,在实际的开发工程中,采用ARM架构还是具有某些局限性,而RISC-V可让不同的硬件平台具有完全的可移植性。比如一个客户在FPGA器件内实施RISC-V的设计,如果这个产品受欢迎,产品量显着增长,他们能够将其转移到ASIC中,而且不必支付许可费。如果采用ARM内核,这就行不通了,又要多付授权费用了。

当然,这样也并不是说RISC-V就是好到没边了,要知道,多数情况下,企业选择一个产品,尤其是像这类的IP架构那是要做芯片的,要做芯片还有多方面的因素,比如一开始的流片,比如正式量产后的销售,选择RISC-V虽然免费,但是你所需花大量的经历去验证自己的设计,另外,即便流片成功,上市后还要考虑到销量,在ARM生态圈遍地开花的今天,要重新打开一条路,让其它厂商接受你的产品并不容易。所以很多求稳的企业宁愿一开始花一部分钱去买ARM的IP授权,不但有支持,有测试,而且还有后端和工艺流程的支持,而不是只顾眼前的便宜直接选择RISC-V,这也是这个RISC-V要发展的难处。

最后,我们来看下官方例举的FE310 SoC的跟Arduino平台上的一些微控制器或者SoC的一些参数对比。

表格反应的参数对于FE310来说优势太大,而依我看,跟Arduino平台上的一些微控制器相比实在有些以大欺小,所以接下去的性能测试中我会直接跟目前主流的微控制器做比较,哪家粉丝多?当然ST,那就拿ST的微控制器来开涮,说错了,不是开涮,是对比。

HiFive1开发板上电

HiFive1开发板内置了一个RGB LED闪烁的程序,所以上电即可以运行看到效果。

由于HiFive1在设计上是兼容Arduino的,官方也介绍说可以直接用Arduino IDE作为开发,所以目前HiFive1有两套开发方式,第一用Arduino IDE,另外,通过Linux平台用官方提供的Freedom E SDK。

  • Arduino IDE开发

HiFive1能使用Arduino IDE开发这倒是真的非常方便,但是,折腾了半天,发现貌似不支持windows系统的环境,需要在Linux系统下开发。无奈,换台电脑装了个Ubuntu系统继续搞,不过,这样的话一下子就把开发环境拉高了不少,简单的事情搞复杂,苗头不太好啊。

安装支持Linux系统的Arduino IDE

添加HiFive1板卡支持包的网址

下载安装HiFive1开发板的支持包

下载SiFive Freedom Boards的开发板支持包,下载过程慢不说,甚至有时会下载出错或者直接卡住,毕竟是国外的服务器,如果有VPN的话尽量用VPN,可以省下不少时间,笔者试了多次总是下载不了,于是选用第二套方案。

  • 使用Freedom E SDK开发

除了Arduino IDE工具,我们可以直接通过Linux系统进行开发,首先下载Freedom E SDK软件开发包,在github上获取,命令如下。

git clone --recursive https://github.com/sifive/freedom-e-sdk.git

下载过程很慢,最好是找个空闲时间段让它慢慢下载,我是直接晚上下载,早上起来的时候发现完成了,或者也可以通过其他工具下载下来后再拷贝到Linux平台下。

Freedom E SDK软件包的开发需要安装一系列的工具如GCC 6.1.0交叉编译工具链,支持RISC-V的GDB以及OpenOCD工具等,这里提供下全套所需要安装工具的命令,可以节省下大家的时间。

sudo apt-get install autoconf automake libmpc-dev libmpfr-dev libgmp-dev gawk bison flex texinfo libtool libusb-1.0-0-dev make g++ pkg-config libexpat1-dev zlib1g-dev

安装完通过make tools命令编译这些工具。

工具装完,就可以编译自己需要的例程了。官方提供的一些例程在从git hub扒下来的软件包中。

编译例程以及下载例程的命令如下(以下的命令适用于你所处的位置在freedom-e-sdk的目录下):

make software PROGRAM=(你程序的名字)

make upload PROGRAM=(你程序的名字)

接下去就要看看激动人心的性能测试了。

不过,为了方便查看测试结果,还需要配置一个串口工具,这里用的是minicom。

先测试一下,串口没问题,如下是默认的出厂程序打印的logo信息。

下面的FE310 SoC的性能测试分为两个部分,分别用Dhrystone以及CoreMark测试,不清楚这两个软件的朋友可以自行百度下,这里不多做介绍了,主要是用于测试CPU性能的工具。

  • Dhrystone测试

从输出的Logo信息中我们也能看到,FE310的运行频率在267MHz左右,如果以微控制器的角度来看,很高了,但是远没有达到宣称的320MHz+啊。

最终的测试结果被爱板网的logo给挡住了,真实的数据是740740。然后换算到DMIPs需要除以1757(为什么要除以1757?因为这个测试是拿VAX 11/780来做基准参考的,VAX 11/780每秒能执行1757次Dhrystone Benchmark测试),也就是说最终的结果为740740/1757=421 DMIPs。

  • CoreMark测试

CoreMark测试需要去coremark官方下载源码,然后需要用到core_list_join.c;core_main.c;coremark.h;core_matrix.c;core_state.c;core_util.c这几个文件。

执行的CoreMark测试

CoreMark的测试结果为 715。

对于这两个测试结果,直接看数值可能大家没什么概念,那拿出我们熟悉的ST系列微控制器产品作为对比。

FE310的整体性能介于ST的STM32F4与STM32F7之间。

        FE310            STM32F4          STM32F7
 主频  267MHz  180MHz  216MHz
 Dhrystone  421DMIPS  225DMIPS  462DMIPS
 CoreMark  715 CoreMark  608 CoreMark  1082 CoreMark

从上表可以看到,依托于高主频的关系,FE310的性能在Dhrystone的测试中几乎要追上STM32F7,差不多是STM32F4的两倍,但是CoreMark的测试几乎没有很大的差距,为什么会这样?

原本想把事情简单直白的讲讲,现在看来这个愿望落空了,结果还是要较真,还必须追本溯源的聊聊了,从上表测试结果看到了Dhrystone和CoreMark的测试呈现的结果导致了一些差距,而差距的产生主要还是在于Dhrystone和CoreMark两个测试方式本质的不同,Dhrystone测试的更偏向于系统的整体性能,包括相应的软件、代码优化都能提升其整体的性能,而CoreMark就比较针对性了,比的就是核心CPU的性能,所以我们从测试结果中可以发现一件有趣的事情,单看Dhrystone的测试FE310几乎要追上了STM32F7,这说明FE310配套的软件代码综合优势很大,而从CoreMark的测试结果与STM32F7还有较大差距说明单论CPU性能FE310不如STM32F7。而且,更进一步,如果单论每MHz的性能,更能体现出来FE310的劣势(性能:1.58DMIPs / MHz,2.68 Coremark / MHz),换句话说虽然表面看起来FE310很强大,但是如果主频控制在同一水平,FE310的性能和功耗的控制可能都不及ARM Cortex-M4优化的好,也就是说,如果针对那些性能要求不高,又对功耗敏感的应用市场,FE310的位置其实还挺尴尬的。

由于FE310 SoC以及HiFive1开发板本身面世没多久,所以配套的例程或者应用案例并不会很多,但是通过笔者的多次测试,基本功能应用是没有问题的,现在的问题是该给他如何定位。综合来讲,在整体性能上FE310离STM32F7差点,但要超过STM32F4,但是有一点是不容忽视的,从FE310的规格书上我是没有找到FPU的介绍,而在单独的E31 coreplex处理器介绍是有FPU的,这点也是奇怪的地方,难道是在这颗SoC上并没有集成FPU单元,若真是这样的话,这无疑又是F310的一个劣势。再通俗的讲,目前ARM Cortex-M系列产品在嵌入式系统,物联网领域可以说深入人心,牢牢掌控者生态圈,而且价格相比FE310(目前没公布FE310单独的售价,但是搭载FE310的HiFive1开发板为59美金)肯定有大把的优势,如何去横插一脚?

想来想去,目前来看,我把适合用HiFive1开发板的人理了下:一类是非常明确,就想学习RISC-V架构、有意向定制自主微控制器产品、或者FPGA开发者想移植RISC-V到自身平台的,另一类是出于爱好,比如那些前卫的创客、电子发烧友、想第一时间体验RISC-V架构产品的人群,那不妨买一块玩玩。其实就我个人而言的话挺希望中国企业能紧跟RISC-V步伐,原因很简单,我们没有太多选择,另外我们也至少要做做样子,吓唬一下已沦为日本资本家手中的ARM!

Update 2017.4.28

今天很不错,试了一下居然在Arduino IDE下的开发包顺利更新完成,想想还是在文章中更新出来,毕竟这下名正言顺可以使用Arduino IDE工具开发了(但还是仅限于Linux平台)

目前最新的是1.0.2版本的

开发包更新完成后能在Arduino IDE工具的配置中找到对应的板卡,相应的串口、下载器

串口监视工具功能正常

小试了下RGB LED的绿灯控制

完美下载运行,Arduino IDE工具还是非常适合创客玩的,这下HiFive1也算暂时的功德圆满了。


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
DAC811KP的技术参数