許多業(yè)余愛好者、創(chuàng)客和DIY愛好者都使用Arduino微機開發(fā)板來監(jiān)視和控制他們的項目。于是,越來越多的專業(yè)工程師也開始將這些開發(fā)板用作評估和原型開發(fā)平臺,以便加快開發(fā)速度,降低集成電路(IC)、傳感器和外設(shè)評估方面的成本。如《使用Arduino BOB快速評估傳感器和外設(shè)》一文所述,這些工程師所在的團隊可能比較精簡,而且還深受產(chǎn)品上市時間(TTM) 日益縮短的制約。因此,他們必須承擔(dān)多個工程領(lǐng)域的工作,同時設(shè)法加快元器件評估并降低成本。
其中一種解決方案是將Arduino與傳感器和外設(shè)分線板 (BOB) 之類的開源硬件及庫和示例程序之類的開源軟件結(jié)合使用。盡管有多種Arduino開發(fā)板可以滿足一系列的處理和存儲器要求,但是使用浮點運算器 (FPU) 卻能更好地完成某些計算,從而避免減慢主處理器的速度。
在Arduino生態(tài)系統(tǒng)中,ShieldBuddy就已經(jīng)解決了這一問題。 本文將介紹多種Arduino處理平臺選項,解釋為什么FPU功能對許多應(yīng)用都很重要,然后介紹ShieldBuddy,這款開發(fā)板與Arduino開發(fā)板采用類似的物理封裝,但具有三個獨立的200MHz 32位處理器內(nèi)核,并且每個內(nèi)核都有各自的FPU。此外,本文還將介紹該開發(fā)板的編程模型,展示其基于Eclipse的編程環(huán)境及其對Arduino集成開發(fā)環(huán)境 (IDE) 的支持如何幫助DIY愛好者和設(shè)計人員快速入門。
適合新手和專業(yè)人士的Arduino
剛踏入Arduino領(lǐng)域的新手往往從Arduino Uno Rev3(圖1)入手,這款開發(fā)板基于16MHz 8位ATmega328P微控制器。該開發(fā)板只有32KB的閃存(程序),2KB的SRAM,14個數(shù)字輸入/輸出 (I/O) 引腳和6個模擬輸入引腳。其中6個數(shù)字引腳可以提供脈沖寬度調(diào)制 (PWM) 輸出,必要時模擬引腳也可用作數(shù)字I/O引腳。
Arduino Uno Rev3的排針封裝是連接擴展板這一龐大子板生態(tài)系統(tǒng)的基礎(chǔ),包括14個數(shù)字I/O引腳、6個模擬輸入引腳,以及多個電源、接地和基準(zhǔn)源引腳。
繼Uno Rev3之后,許多用戶都轉(zhuǎn)用Arduino Mega 2560 Rev3開發(fā)板(圖2)。這款開發(fā)板基于16MHz 8位ATmega2560微控制器。該開發(fā)板具有256KB的閃存和8KB的SRAM。此外,該板的排針封裝表明它與Uno支持相同的擴展板,不過,Mega配有更多排針,因此具有54個數(shù)字I/O引腳和16個模擬輸入引腳。其中15個數(shù)字引腳可以提供PWM輸出;同樣,必要時模擬引腳也可用作數(shù)字I/O引腳。
除了受限于8位數(shù)據(jù)路徑和16MHz的時鐘頻率之外,Arduino Uno和Arduino Mega微控制器均不具備FPU,因而任何涉及浮點數(shù)的計算都會顯著減慢這些處理器的速度。
如果用戶想要更強的處理能力,則可以升級使用Arduino Due(圖3)。這款開發(fā)板與Arduino Mega采用類似的物理封裝,但基于Atmel/Microchip Technology SAM3X8E的84MHz 32位Arm Cortex-M3處理器。該開發(fā)板具有512KB的閃存、96KB SRAM、54個數(shù)字I/O引腳、12個模擬輸入引腳,以及2個由數(shù)模轉(zhuǎn)換器(DAC) 驅(qū)動的模擬輸出引腳。其中,只有12個數(shù)字引腳可以提供PWM輸出;同樣,必要時模擬引腳也可用作數(shù)字I/O引腳。不過,遺憾的是,與Arduino Uno和Mega一樣,Arduino Due的處理器也不具備FPU。
許多用戶(包括業(yè)余愛好者和專業(yè)人士)都喜歡Arduino Mega和Arduino Due開發(fā)板具有較多的引腳。但是,即使是Arduino Due的84MHz 32位處理器可能也難以執(zhí)行某些計算密集型任務(wù)。同樣,對于需要處理大量數(shù)據(jù)的大型程序,Due配備的512KB的閃存和96KB的SRAM仍顯不足。
盡管如今的微控制器能處理的數(shù)據(jù)量越來越大,但是從提高效率和降低延遲方面考慮,使用FPU可以更好地完成某些計算。
什么是FPU?為什么需要它?
要討論FPU為何有用,首先要說說計算機處理數(shù)字的原理。在計算機中,最簡單的數(shù)字表示法是整型(整數(shù)),而且使用整型數(shù)進行計算,運算成本較低。不過,整型數(shù)本質(zhì)上范圍有限,因而無法表示較大的動態(tài)范圍。
對于工程師和科學(xué)家而言,這是個問題,因為他們常常需要在同一計算中使用極大和極小的數(shù)值。例如,物理學(xué)家可能需要同時使用光速 (300,000,000) 和牛頓引力常數(shù)(0.00000000006674) 來進行計算。同樣,在數(shù)字信號處理 (DSP) 等任務(wù)以及人工智能 (AI) 和機器學(xué)習(xí) (ML) 應(yīng)用中,工程師則要使用較大動態(tài)范圍的數(shù)值。
在這種情況下,解決方案就是使用浮點數(shù)表示法,即小數(shù)點的位置可根據(jù)數(shù)值的各個數(shù)字“浮動”,從而實現(xiàn)更高的數(shù)字“分辨率”。但問題在于,盡管32位浮點數(shù)所占內(nèi)存與32位整型定點數(shù)相同,使用浮點數(shù)進行計算卻需要更多的計算資源。
如果處理器必須使用標(biāo)準(zhǔn)定點硬件進行浮點運算,那么必定會極大地影響該處理器的性能。在這種情況下,解決方案就是為處理器配備特殊的FPU,即可在很短的時鐘周期內(nèi)完成復(fù)雜的浮點運算。
這正是ShieldBuddy的用武之地。
ShieldBuddy為Arduino生態(tài)系統(tǒng)引入FPU和高性能
目前,一款相對較新的兼容Arduino的開發(fā)板是Infineon Technologies的KITAURIXTC275ARDSBTOBO1,即ShieldBuddy(圖4)。這款嵌入式評估板主要面向Infineon的TC275T64F200WDCKXUMA1 TC275 AURIX TC2xx TriCore 32位微控制器。
ShieldBuddy與Arduino Mega和Arduino Due采用類似的物理封裝,可與許多應(yīng)用擴展板兼容,但區(qū)別在于它配備的TC275具有三個獨立的200MHz 32位內(nèi)核,并且每個內(nèi)核都有各自的FPU。此外,ShieldBuddy具有4MB的閃存(分別是Arduino Due的8倍、Arduino Mega的16倍),以及500KB的RAM(分別是Arduino Due的5倍、Arduino Mega的62倍)。
有一點可明顯看出區(qū)別:Arduino Mega內(nèi)核每微秒 (μs) 只能處理約16條8位指令;相比之下,TC275每個內(nèi)核的周期時間為5ns,因而每個內(nèi)核每微秒通常可執(zhí)行約150至200條32位指令。由于ShieldBuddy的每個處理器內(nèi)核都有各自的FPU,因此該板進行浮點運算時,幾乎不會削弱性能。
使用ShieldBuddy進行開發(fā)
使用ShieldBuddy時,專業(yè)軟件開發(fā)人員也許希望借助Eclipse IDE,而業(yè)余愛好者和創(chuàng)客可能更偏好使用為人熟知的Arduino IDE。該板可支持這兩個選項。
Arduino的用戶都很清楚,每個草圖(程序)必須具有兩個標(biāo)準(zhǔn)函數(shù):setup()(單次運行)和loop()(多次運行)。除此之外,用戶還可以創(chuàng)建自己的函數(shù)。
ShieldBuddy的三個內(nèi)核分別稱作Core 0、Core1和Core 2。在使用Arduino IDE的情況下,大多數(shù)現(xiàn)有草圖都可以編譯,以便直接用于ShieldBuddy而無需修改。setup()和loop() 函數(shù)及其調(diào)用的所有用戶創(chuàng)建的函數(shù)經(jīng)編譯后,均默認在Core0上運行。
創(chuàng)建新程序時,用戶可將這些函數(shù)命名為setup0() 和loop0() 以達到相同的效果。另外,用戶也可以創(chuàng)建setup1() 和loop1() 函數(shù)。這些函數(shù)及其調(diào)用的所有用戶創(chuàng)建的函數(shù)經(jīng)編譯后,均會自動在Core 1上運行。同理,setup2()和loop2() 函數(shù)及其調(diào)用的所有用戶創(chuàng)建的函數(shù)經(jīng)編譯后,均會自動在Core2上運行。
默認情況下,各個內(nèi)核獨立運行,因此ShieldBuddy可以同時運行三個完全獨立的程序。盡管如此,各內(nèi)核間也可使用共享存儲器等技術(shù)進行通信。此外,每個內(nèi)核還都可以在其他內(nèi)核中觸發(fā)軟中斷。
結(jié)語
事實證明,Arduino的開源理念取得了巨大的成功,隨之衍生的硬件和軟件生態(tài)系統(tǒng)也得以發(fā)展,包含了數(shù)百種擴展板、數(shù)千個庫和應(yīng)用程序。
盡管早期的Arduino開發(fā)板(例如16MHz 8位ArduinoUno和Arduino Mega)具有一定的局限性,但較新的產(chǎn)品(例如84MHz 32位Arduino Due)功能明顯就更強大。即便如此,許多用戶仍需要更多的程序存儲空間(閃存)、更多的數(shù)據(jù)存儲空間(SRAM) 和更強的處理能力,而這些都絕非任何傳統(tǒng) Arduino 所能提供。
ShieldBuddy具有4MB的閃存、500KB的SRAM和三個獨立的200MHz 32位處理器內(nèi)核,而且每個內(nèi)核都有各自的FPU,將Arduino理念提升到一個全新的層次,因而追求極致的DIY愛好者和專業(yè)工程師都對它興趣濃厚。
編輯:金巧
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8970瀏覽量
150906 -
Arduino
+關(guān)注
關(guān)注
189文章
6493瀏覽量
190212
原文標(biāo)題:Arduino玩家如何玩轉(zhuǎn)FPU?用ShieldBuddy開發(fā)板,就能行!
文章出處:【微信號:得捷電子DigiKey,微信公眾號:得捷電子DigiKey】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
有ARM,NPU,F(xiàn)PGA三種核心的開發(fā)板 — 米爾安路飛龍派開發(fā)板

【新品】遠距離圖傳數(shù)傳模塊開發(fā)板、藍牙模塊開發(fā)板、無線模塊開發(fā)板

STM32開發(fā)板一般都會配置arduino接口,是不是基本上也都會支持arduino?
通過Arduino Nano Matter開發(fā)板構(gòu)建智能卷簾系統(tǒng)

[迅為RK3568開發(fā)板]非科班也能玩轉(zhuǎn)Android應(yīng)用,體驗QT跨平臺能力
![[迅為RK3568<b class='flag-5'>開發(fā)板</b>]非科班也能<b class='flag-5'>玩轉(zhuǎn)</b>Android應(yīng)用,體驗QT跨平臺能力](https://file1.elecfans.com/web3/M00/02/F1/wKgZO2diirGAPoENAACpt0CV3xc346.png)
如何用OpenCV進行手勢識別--基于米爾全志T527開發(fā)板

Arduino Nano Matter開發(fā)板正式上市
玩轉(zhuǎn)RK3588開發(fā)板基于connector-split 功能實現(xiàn)多屏聯(lián)動

基于Arduino的串口通信項目
正點原子fpga開發(fā)板不同型號
NXP FRDM-MCXC444開發(fā)板在RT-Thread環(huán)境下的上手過程

評論