嵌入式系統(tǒng)開(kāi)發(fā)人員一直在想方設(shè)法進(jìn)一步縮短開(kāi)發(fā)時(shí)間,特別是針對(duì)概念驗(yàn)證和快速原型開(kāi)發(fā)。雖然開(kāi)發(fā)套件已成為捷徑之選,但設(shè)計(jì)人員需要找到一個(gè)平衡點(diǎn),既兼顧外形尺寸和廣受支持的生態(tài)系統(tǒng),又要考慮性能要求。
Arduino Uno 開(kāi)發(fā)板就是這種需要找到平衡點(diǎn)的很好例子。由于成本低廉,并在理論上具有數(shù)百個(gè)可提供 Arduino I/O 插件擴(kuò)展功能的 Arduino 盾板,其外形尺寸在這一領(lǐng)域極其流行。但是,針對(duì)特定嵌入式應(yīng)用,某些開(kāi)發(fā)人員可能需要比 8 位微控制器所能提供的更高性能。
對(duì)于他們來(lái)說(shuō),Crowd Supply 的 HiFive1 開(kāi)發(fā)套件可能才是解決方案。本文將介紹低成本的 HiFive1 開(kāi)發(fā)套件,討論如何通過(guò)其功能實(shí)現(xiàn)高性能嵌入式系統(tǒng)的快速原型開(kāi)發(fā)。此外,本文將介紹幫助設(shè)計(jì)人員入門(mén)的可用開(kāi)發(fā)工具。
什么是 HiFive1?
HiFive1 開(kāi)發(fā)套件基于一款集成 32 位 RISC-V(讀音“risk-five”)處理器內(nèi)核的微控制器(圖 1)。該開(kāi)發(fā)板可接受 Arduino 式盾板,從而大幅提升了其對(duì)嵌入式設(shè)計(jì)快速原型開(kāi)發(fā)的實(shí)用性。
圖 1:HiFive1 Arduino 兼容開(kāi)發(fā)板使用一個(gè)基于 32 位 RISC-V 處理器內(nèi)核的微控制器。(圖片來(lái)源:SiFive)
HiFive1 的核心是 RISC-V 處理器內(nèi)核。這就需要 Arduino 開(kāi)發(fā)板背后的開(kāi)源概念,并將其一直擴(kuò)展到處理器本身。RISC-V 是開(kāi)放式指令集架構(gòu) (ISA),基于兩個(gè)基礎(chǔ):自 20 世紀(jì) 80 年代以來(lái)一直采用的精簡(jiǎn)指令集計(jì)算 (RISC) 概念,以及開(kāi)源原則。因?yàn)?RISC-V ISA 是開(kāi)源的,所以可自由地用于任何目的。任何人都可以設(shè)計(jì)、制造和銷(xiāo)售基于 RISC-V 的芯片和軟件,而無(wú)需支付版稅。
HiFive1 板上基于 RISC-V 的微控制器可通過(guò)編程支持芯片內(nèi)執(zhí)行 (XIP) 模式,以便在指令高速緩存重新填充期間降低 SPI 指令執(zhí)行時(shí)間。微控制器的四路 SPI (QSPI) 端口支持 32 字節(jié)猝發(fā)讀取,使用存儲(chǔ)器的 XIP 模式,加快來(lái)自 QSPI 閃存的指令高速緩存重新填充,進(jìn)而提升性能。
微控制器可在高于 320 MHz 的時(shí)鐘速率下運(yùn)行,但在 HiFive1 板上,應(yīng)限制時(shí)鐘速率不高于 133 MHz,以便保持微控制器的 SPI 串行時(shí)鐘在開(kāi)發(fā)板的 128 Mbit QSPI 閃存限制范圍內(nèi)工作。
Arduino 式針座(包含注意事項(xiàng))
HiFive1 開(kāi)發(fā)套件復(fù)制了 Arduino 獨(dú)特的 I/O 針座布局。它可以接受數(shù)以百計(jì)可用 Arduino 盾板中的多數(shù)類(lèi)型,但有幾點(diǎn)需要注意。
首先,微控制器沒(méi)有模擬輸入引腳。HiFive1 開(kāi)發(fā)套件的 Arduino 式針座只能進(jìn)行數(shù)字 I/O、中斷和脈沖寬度調(diào)制 (PWM) 引腳分配。Arduino Uno 開(kāi)發(fā)板上 A0 至 A5 模擬引腳所用的物理針座位置在 HiFive1 開(kāi)發(fā)板上標(biāo)注為 D14 至 D19 數(shù)字 I/O 引腳。如果有必要添加模擬功能,可使用眾多可用模數(shù)轉(zhuǎn)換器 (ADC)、數(shù)模轉(zhuǎn)換器 (DAC) 或組合 ADC/DAC Arduino 盾板中的一種。
另請(qǐng)注意:
-
設(shè)計(jì)人員可將多達(dá) 9 個(gè) PWM 發(fā)生器分配到 HiFive1 開(kāi)發(fā)套件上的 Arduino 式針座引腳。
-
HiFive1 開(kāi)發(fā)套件的所有 19 個(gè) Arduino 式針座 I/O 引腳均可用作中斷輸入。
板載電壓轉(zhuǎn)換器可根據(jù)跳線設(shè)置,靈活地將所有 HiFive1 開(kāi)發(fā)套件的數(shù)字 I/O 引腳設(shè)置為 3.3 V 或 5 V 邏輯電平。單跳線設(shè)置(圖 1 開(kāi)發(fā)板上帶 IOREF 標(biāo)志)可定義 HiFive1 開(kāi)發(fā)套件的 Arduino 式針座上所有 I/O 引腳的邏輯電平。
這就引出了第二個(gè)注意事項(xiàng):迄今為止,只有以下兩款 Adafruit Arduino 盾板通過(guò)了 HiFive1 測(cè)試,因?yàn)橹挥嗅槍?duì)這兩款盾板的 Adafruit 支持庫(kù)已移植到 HiFive1 庫(kù):
-
Adafruit 的 BLE SPI Friend
即便如此,盡管支持庫(kù)可能需要微調(diào),但任何與 SPI、UART 或數(shù)字 I/O 通信的盾板都應(yīng)該易于搭配 HiFive1 使用。HiFive1 外設(shè)盾板支持庫(kù)還處于初期階段:預(yù)計(jì)支持的盾板數(shù)量會(huì)增加。
好硬件需要好軟件支持
GitHub 上提供了針對(duì) HiFive1 開(kāi)發(fā)套件的軟件開(kāi)發(fā)工具。這些工具包括用于 RISC-V 處理器架構(gòu)的 C 編譯器和匯編器、用于 RISC-V 處理器的 GDB 主機(jī)駐留調(diào)試器和 OpenOCD(片上調(diào)試器)的 RISC-V 版本。
一旦程序被編寫(xiě)、編譯和匯編,開(kāi)發(fā)人員就可以通過(guò) USB 調(diào)試接口將其上傳到 HiFive1 開(kāi)發(fā)套件。HiFive1 將該程序存儲(chǔ)在其板載 SPI 閃存芯片中。板載閃存芯片的容量為 16 Mb,比 8 位 Arduino Uno 板上的代碼存儲(chǔ)容量大得多。地址空間擴(kuò)展只是諸如 RISC-V 的 32 位處理器架構(gòu)的眾多優(yōu)點(diǎn)之一。該微控制器的片上 16 Kb SRAM 也相對(duì)較大。
處于開(kāi)發(fā)板核心地位的芯片
接下來(lái)將詳細(xì)介紹 HiFive1 開(kāi)發(fā)套件的核心,即微控制器(圖 2)。
圖 2:基于 RISC-V 的開(kāi)源微控制器的簡(jiǎn)化框圖。(圖片來(lái)源:SiFive)
該微控制器的中心是基于開(kāi)源的 32 位 RISC-V ISA 的 CPU 內(nèi)核。就 RISC-V 而言,核心是 RV32IMAC 處理器,這意味著它使用的是基本 32 位 RISC-V 整數(shù)指令集 (RV32I),具有整數(shù)硬件乘除 (M) ;原子、實(shí)時(shí)指令 (A);以及對(duì) 16 位精簡(jiǎn) (C) 指令集的附加支持。另外還有 64 位和 128 位版本的 RISC-V ISA。該內(nèi)核還包括 16 Kb 的指令緩存(在框圖中標(biāo)記為“I $”)和 16 Kb 的暫存器 SRAM。幾個(gè)標(biāo)準(zhǔn)外設(shè)包括定時(shí)器、PWM 信號(hào)發(fā)生器、實(shí)時(shí)時(shí)鐘、UART、QSPI 串行接口以及圍繞處理器內(nèi)核的一個(gè)片上硬件調(diào)試模塊。
RISC-V 架構(gòu)幕后有誰(shuí)或者說(shuō)有什么?為什么?
HiFive1 開(kāi)發(fā)套件和微控制器實(shí)際上是開(kāi)源 RISC-V 處理器架構(gòu)的硬件演示工具,是一個(gè)假設(shè)論證:世界真的需要另一種處理器架構(gòu)嗎?
RISC-V 項(xiàng)目始于加州大學(xué)伯克利分校,最終超越了大學(xué)研究的范疇,充分發(fā)揮了更多自愿參與者和電子行業(yè)人士的想象力。該項(xiàng)目的最終結(jié)果是開(kāi)源代碼 RISC 處理器 ISA(指令集架構(gòu)),與其他任何 32 位 RISC ISA 幾乎一樣。不同之處在于任何人都可以自由地將 RISC-V ISA 用于任何目的。
它需要一個(gè)生態(tài)系統(tǒng)
就 HiFive1 開(kāi)發(fā)板而言,嵌入式系統(tǒng)開(kāi)發(fā)人員需要的不僅僅是處理器或微控制器芯片。對(duì)于 RISC-V,嵌入式開(kāi)發(fā)人員需要工具、示例代碼、庫(kù)和軟件堆棧等形式的開(kāi)發(fā)支持。這類(lèi)支持來(lái)自圍繞成功的處理器架構(gòu)和用戶而發(fā)展的生態(tài)系統(tǒng)。RISC-V 處理器架構(gòu)相對(duì)較新,其生態(tài)系統(tǒng)也一樣,但它在不斷發(fā)展。除了上面討論的 SiFive 開(kāi)發(fā)工具外,RISC-V 生態(tài)系統(tǒng)中的其他開(kāi)發(fā)工具目前還包括:
總結(jié)
經(jīng)濟(jì)實(shí)惠的 Arduino Uno 開(kāi)發(fā)板外形小巧輕便,可訪問(wèn)數(shù)百個(gè) I/O 和外設(shè)盾板。HiFive1 開(kāi)發(fā)套件利用這些現(xiàn)有盾板,通過(guò)緊密復(fù)制緊湊型 Arduino Uno 開(kāi)發(fā)板的外形尺寸和獨(dú)特針座配置,將其與基于 RISC-V 的 32 位微控制器配接。
HiFive1 開(kāi)發(fā)套件具有 16 Mb 板載閃存,可提供更高的代碼存儲(chǔ)能力。盡管它是一款新的架構(gòu),但嶄露頭角的開(kāi)源 RISC-V 生態(tài)系統(tǒng)提供了一套擴(kuò)展的軟件開(kāi)發(fā)工具,包括編譯器、匯編器、調(diào)試器和 Arduino IDE 庫(kù)。
-
嵌入式
+關(guān)注
關(guān)注
5083文章
19131瀏覽量
305536 -
Arduino
+關(guān)注
關(guān)注
188文章
6470瀏覽量
187179
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論