前言

由於最近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 SoC

關於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
", 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,為了便於切換啟動模式,官方已經為我們寫好了配置文件,直接通過openocdtelnet軟體就可以完成對FOPT寄存器的配置。

支持的開發工具

RISC-V核開發工具

  • Eclipse開發框架 + GNU MCU Build Tools編譯工具 + openocd調試軟體 + riscv32-unknown-elf-gcc編譯器
  • GCC命令行編譯

ARM核開發工具

和其他的ARM內核開發一樣,織女星開發板的ARM內核開發,可以使用以下環境

  • Keil-MDK
  • IAR
  • GCC命令行編譯

注意:Keil環境要安裝要安裝openisa的器件支持包

關於織女星開發板開發環境的搭建及相關配置可以參考:

  • 手把手教你搭建織女星開發板RISC-V開發環境
  • 織女星開發板啟動模式修改——從ARM M4核啟動

點亮一個LED

參考上述文章,搭建完成開發環境後,就可以導入Demo工程,點亮一個LED燈,如下效果。

參考資料

  • RV32M1數據手冊
  • RV32M1參考手冊
  • 織女星開發板快速入門指南.pdf
  • Develop_Multicore_Application_on_RV32M1.pdf

歷史精選

  • Jlink使用技巧系列教程索引
  • NXP恩智浦VEGA織女星開發板免費申請!
  • 手把手教你製作Jlink-OB調試器(含原理圖、PCB、外殼、固件)
  • Qt實現軟體自動更新的一種簡單方法

歡迎關注我的個人博客:www.wangchaochao.top

或微信掃碼關注我的公眾號

推薦閱讀:

相关文章