前言
由於最近ARM公司要求員工“停止所有與華為及其子公司正在生效的合約、支持及未決約定”,即暫停與華為的相關合作,大家紛紛把注意力投向了另一個的處理器架構RISC-V,它是基於精簡指令集(RISC)的一個開源指令集架構。相比於其他指令集,"RISC-V 指令集可以自由地用於任何目的,允許任何人設計、制造和銷售 RISC-V 芯片和軟件",正是由於這種開放性,於2015年成立的RISC-V基金會,吸引了很多科技巨頭加入RISC-V基金會,現在的RISC-V基金會成員已經超過了235個,包括國外的Google、三星、英偉達、微芯、高通、惠普、意法半導體、西數、NXP等,國內的阿里巴巴、華為、高雲等公司。可能是由於智能推薦的算法,我在知乎上的一篇關於RISC-V文章:國產處理器的逆襲機會——RISC-V,最近收到了很多網友的關注和評論。正好前一段時間申請到一塊NXP恩智浦的一款真正的RISC-V開發板——織女星開發板,所以拿來玩玩,學習一下RISC-V架構處理器的開發。
關於RISC-V架構
RISC-V(發音同“risk-five”)是一種免費開源指令集架構(ISA),通過開放標准協作開創處理器創新的嶄新紀元。RISC-V基金會創立 於2015年,由超過235家成員組織組成,建立了首個開放、協作的軟硬件創新者社區,開創了處理器創新的新時代。RISC-V ISA發端於深厚的學術研究,將免費且可擴展的軟硬件架構自由度提升至新的水平,為未來50年的計算設計與創新鋪平了道路。——來自RISC-V_百度百科
現在的處理器指令集主要分為RISC和CISC,即精簡指令集和復雜指令集,RISC的代表就是著名的ARM架構,專注於高性能,低功耗,小體積,主要應用於移動設備;而CISC的代表是x86架構,像常用的PC、服務器的CPU等等,專注於桌面,高性能和民用市場。
而RISC-V是屬於RISC陣營的,RISC-V,即第五代精簡指令集。相比於ARM,RISC-V的歷史很短,2010年誕生於加州大學伯克利分校,當時的Krste Asanovic教授希望尋找一個合適的CPU指令架構,但x86架構復雜臃腫、ARM架構需要授權費、開源的OpenRISC架構又太老舊了,所以他最終決定自己做個開源CPU架構,並在2015年成立了RISC-V基金會(RISC-V Foundation ),專門推動RISC-V發展,現在的RISC-V基金會成員也超過了235個,包括國外的Google、三星、英偉達、微芯、高通、惠普、意法半導體、西數、NXP,國內的阿里巴巴、華為、高雲等公司。最新的RISC-V基金會成員:RISC-V基金會成員列表
本着大道至簡的原則,《RISC-V架構文檔(The RISC-V Instruction Set Manual)》僅有236頁,熟悉體系結構的工程師僅需一至兩天便可將其通讀,雖然RISC-V的架構文檔還在不斷地豐富,但是相比x86的架構文檔與ARM的架構文檔,RISC-V的篇幅可以說是極其短小精悍。
ARM處理器按位數可分為32位和64位,按架構又可分為Cortex-A/Cortex-R/Cortex-M三大系列,分別針對不同的應用領域。而RISC-V也有很多內核,截止目前(2019-06-22),RISC-V社區顯示的Core共有29個,SOC PLATFORM共有13個,SOC共有7個。
- 部分RISC-V Core
RISC-V Core | Supplier | Github | Bit | License |
---|---|---|---|---|
RI5CY | ETH Zurich, Università di Bologna | Github | 32 | Solderpad Hardware License v. 0.51 |
Zero-riscy | ETH Zurich, Università di Bologna | Github | 32 | Solderpad Hardware License v. 0.51 |
Hummingbird E200 | Bob Hu(胡振波) | Github | 32 | Apache 2.0 |
Riscy Processors | MIT CSAIL CSG | Github | / | MIT |
SweRV EH1 | Western Digital | Github | 32 | Apache 2.0 |
K210 | Kendryte(嘉楠耘智) | Github | 64 | BSD |
freedom | SiFive | Github | / | BSD |
- RISC-V SoC
RISC-V SoC | Supplier | Core | OS | Bit | Link |
---|---|---|---|---|---|
RV32M1 | NXP | RI5CY,Zero RI5CY,ARM Cortex-M4F,ARM Cortex-M0+ | RTOS | 32 | Datasheet |
FE310-G000 | SiFive | E31 | RTOS | 32 | Datasheet |
FE310-G002 | SiFive | E31 | RTOS | 32 | Product Page |
Freedom U540 | SiFive | U54, E51 | Linux | 64 | Product Page |
GAP8 | GreenWaves Technologies | PULP / 1 + 8 RI5CY | RTOS | 32 | Product Page |
K210 | Kendryte(嘉楠耘智) | K210 | RTOS | 32 | Datasheet |
RavenRV32 | efabless | PicoRV32 | RTOS | 32 | Datasheet |
關於VEGA織女星開發板
織女星開發板是OPEN-ISA社區為中國大陸地區定制的一款體積小、功耗超低和功能豐富的基於RV32M1 的 RISC-V評估開發板。利用該開發板,用戶可以快速建立一個使用 RV32M1 的 RISC-V應用和演示系統。
RISC-V內核支持使用SEGGER公司的JLink調試器來進行程序的下載、調試,沒錯,就是那個經常用來調試ARM內核的調試器,要使用帶有TMS(SWDIO)、TCLK(SWCLK)、TDI、TDO接口的調試器,不能使用那種只有SWDIO和SWCLK的調試器。當然,也可以使用板載的FreeLink調試器,不過在使用板載調試器調試RISC-V之前,需要使用LPCScrypt_installer_2.1.0_842.exe軟件,把FreeLink的CMSIS-DAP固件升級為JLink固件,這樣才可以調試RISC-V核。可以參考:織女星開發板調試器升級為Jlink固件
之所以說這是一塊真正的RISC-V開發板,是因為它的主控芯片RV32M1是真正的RISC-V內核芯片,眾所周知,市面上很多RISC-V開發板基本都是基於FPGA實現的RISC-V軟核處理器。
基於FPGA實現的RISC-V開發板
- Perf-V:國內澎峰科技出品,基於Xilinx Artix-7系列FPGA-XC7A50T實現
- 蜂鳥E203:國內芯來科技出品,基於Xilinx Artix-7系列FPGA-XC7A75T,可以配置為RV32IC或RV32EC架構。
- 小腳丫STEP開發板:國內思得普科技出品,基於Intel公司Cyclone 10系列FPGA芯片10CL016YU256C8G
- 小腳丫STEP-MXO2 二代FPGA開發板:基於Lattice公司MXO2系列的FPGA芯片LCMO2-4000HC-4MG132
基於RISC-V芯片實現的開發板
- NXP VEGA織女星開發板:NXP恩智浦出品,基於NXP四核異構處理器,片上集成兩個ARM內核和兩個RISC-V內核,板載資源豐富。目前還買不到這塊開發板和RV32M1芯片,想體驗這塊RISC-V板子的朋友,可以免費申請:NXP恩智浦VEGA織女星開發板免費申請!官方社區:OPEN-ISA社區
- Sipeed M1(荔枝丹)開發板:基於K210 RISC-V芯片,K210是國內嘉楠耘智的團隊在2018年研發出一款7nmAI芯片,采用了基於rocket-chip的雙核RV64GCC RISC-V CPU。
- Lichee Tang(荔枝糖)開發板:基於國產FPGA芯片EG4S20,EG4S20是國內安路科技開發設計的FPGA芯片,20K邏輯單元,130KB SRAM。
VEGA織女星開發板分為兩種,一種是國際版,一種是國內版
- 國際版本VEGA開發板
- 國內版織女星開發板RV32-VEGA-Lite
硬件上稍微有所不同,軟件上完全兼容國際版VEGABoad 開發板,充分利用已有的 OPEN-ISA的生態環境,希望進一步帶動中國大陸地區 RISC-V的軟件生態鏈。
開箱爆照
這塊開發板從申請到收到,大概用了兩周的時間,包裝盒、開發板、跳線帽、MicroUSB數據線,一應俱全,全國包郵,不得不說大廠就是大氣。
- 開發板正面
- 芯片特寫
板載資源簡介
VEGA織女星開發板采用6層PCB設計,以滿足 RM32M1 設備所需的射頻電路。沉金PCB工藝,藍色油墨,白色絲印,符合歐盟RoHS標准,無鉛環保。芯片周圍留有屏蔽罩的焊接位置,不過並沒焊接。好了,我們來看一下板載的資源吧。
- 主控芯片:恩智浦的RV32M1, 四核異構:兩個ARM核,兩個RISC-V核,自帶無線功能。
- 板載調試器:基於LPC4322的FreeLink調試器,默認為CMSIS固件,升級為Jlink固件后可調試ARM核和RISC-V內核。
- 調試接口:兩個ARM核共用一個JTAG調試口,兩個RISC-V核共用一個JTAG調試口,可能是由於PCB空間大小的限制,這兩個2*5P的接口並不是通用的2.54mm間距的排針,而是比較少用的1.25的排針,對於手頭沒有這種接口排線的朋友,可能不是很方便的使用,不過我們有萬能的淘寶。
- RF射頻電路:板載有射頻電路,當然也留有了J16天線端子的位置。
- 串行Flash:美信的MX25R3235FZNIL0,4MB串行閃存,可以存儲一些非易失性數據。
- 加速度和磁力傳感器:恩智浦的FXOS8700CQ,六軸傳感器,IIC接口
- SDHC卡槽:PCB背面留有位置,但是並沒有焊接。
- 光敏傳感器:PCB留有位置,沒有焊接。
- 按鍵:4個用戶按鍵,板載的兩側各2個,可以實現人機交互操作。
- LED指示:1個RGB和1個狀態指示LED 。
- Arduino接口:內部的兩排插座,是兼容Arduino的,如果之前玩過Arduino,那么它的一些擴展模塊,可以直接使用,而無需連線。
- 調試跳線:板子中部留有兩排跳線,一邊是FreeLink調試器的輸出,一邊是RV32M1芯片的ARM調試接口,如果想使用板載調試器調試ARM內核,那么只需要使用幾個跳線帽直接短接排針即可,但是如果想使用板載調試調試RISC-V內核,需要將跳線斷開,並使用導線將FreeLink的調試輸出和RISV-V調試接口J17相連接。
主控芯片RV32M1簡介
要重點介紹一下織女星開發板的主控芯片RV32M1,RV32M1是一顆真正的 RISC-V芯片,其目的是為了擴大和推動 RISC-V生態系統的發展,讓廣大的MCU 嵌入式開發工程師有真正的 RISC-V 芯片可用。目前該芯片只供應給OPEN-ISA 社區生產評估開發板使用,不單獨銷售。如果需要樣片,可以到社區申請。下面來看一下RV32M1的片上資源。
-
兩個RISC-V內核,一個 RI5CY 核、一個 ZERO_RISCY 核。關於這兩款RISC-V Core,是由博洛尼亞大學蘇和黎世聯邦理工學院(ETH Zurich, Università di Bologna)開發的32位內核,遵循Solderpad Hardware License v. 0.51許可。
-
兩個ARM內核,一個 Cortex-M4F 核、一個 Cortex-M0+ 內核。
-
1.25 MB Flash 、384 KB SRAM
-
集成了可工作在 2.36 GHz 到 2.48 GHz 頻率范圍,支持 FSK/GFSK 和 O-QPSK調制的無線收發器。
-
支持低功耗藍牙(BLE)、通用 FSK(支持250、500、1000、2000 kbps)或者 IEEE 802.15.4 標准,可以運行 BLE Mesh、Thread和 Zigbee協議棧。
-
兩個ARM核共用一個JTAG調試口,兩個RISC-V核共用一個JTAG調試口,每個核都可以運行在48MHz頻率,但在高速模式(HSRUN)時,可達72MHz,如果要查看系統當前的運行頻率,可以在主程序中使用如下函數來獲取系統時鍾頻率:
uint32_t SysClk; SystemCoreClockUpdate(); SysClk = SystemCoreClock; PRINTF("系統時鍾: %d \r\n", SysClk);
-
4個核被分為兩個子系統,大核CM4F/RI5CY和小核CM0+/ZERO-RISCY,片上集成1.25 MB Flash 、384 KB SRAM,其中1 MB的Flash被大核所使用,起始地址0x0000_0000,另外的256 KB Flash被小核所使用,起始地址0x0100_0000。
-
Flash地址示意
-
為了支持多核運行模式,RV32M1片上集成了多核管理系統(Multi_Core Unit),包括消息傳遞單元(Messaging Unit)、信號量2(SEMA42)、系統控制模塊 (MSCM)、 擴展資源控制器 (XRDC)等模塊,用於多核間的通信和控制。
-
內部整體框圖
-
通過配置RV32M1片上的FOPT寄存器(Flash Option Register),可以支持上電時從不同的核來啟動,默認從RISC-V RI5CY內核啟動,如果要進行ARM核開發,如M4開發,則必須切換為從ARM核啟動,否則當使用調試器進行程序下載時,根本不能識別到ARM芯片,這一點要特別注意。關於FOPT寄存器各位的描述,可以查看RV32M1參考手冊P450,為了便於切換啟動模式,官方已經為我們寫好了配置文件,直接通過openocd和telnet軟件就可以完成對FOPT寄存器的配置。
支持的開發工具
RISC-V核開發工具
- Eclipse開發框架 + GNU MCU Build Tools編譯工具 + openocd調試軟件 + riscv32-unknown-elf-gcc編譯器
- GCC命令行編譯
ARM核開發工具
和其他的ARM內核開發一樣,織女星開發板的ARM內核開發,可以使用以下環境
- Keil-MDK
- IAR
- GCC命令行編譯
注意:Keil環境要安裝要安裝openisa的器件支持包
關於織女星開發板開發環境的搭建及相關配置可以參考:
點亮一個LED
參考上述文章,搭建完成開發環境后,就可以導入Demo工程,點亮一個LED燈,如下效果。
參考資料
歷史精選
歡迎關注我的個人博客:www.wangchaochao.top
或微信掃碼關注我的公眾號