行業(yè)新聞
當(dāng)前位置:網(wǎng)站首頁> 新聞動(dòng)態(tài) > 行業(yè)新聞 >利用 Arduino 的處理器靈活性
發(fā)布時(shí)間:2023-03-31 16:23:36
雖然 Arduino 基板設(shè)計(jì)的早期迭代只利用 Atmel 8、16 和 32 位 AVR 微控制器,但最近卻出現(xiàn)了許多包括非 Atmel MCU 和 MPU 在內(nèi)的基板。 在適當(dāng)考慮一些重要設(shè)計(jì)取舍后,這不僅可向設(shè)計(jì)師賦予更大的處理器與 I/O 靈活性,還可提供更多選擇,讓 Arduino 板運(yùn)用于從開發(fā)到生產(chǎn)的所有階段。
當(dāng)然,眾多這類新 Arduino 基板還在普通行業(yè)標(biāo)準(zhǔn)和開源硬件方法中提供更高的系統(tǒng)處理器靈活性。 Arduino 憑借這些屬性而成為處理器評(píng)估和選購(gòu)的一個(gè)很有吸引力的選擇,在此階段之后,可能才適合過渡至使用處理器供應(yīng)商的開發(fā)板(以及相關(guān)聯(lián)的軟件和其他資源)。 但在某些情形下,Arduino 板可能不僅適用于開發(fā),結(jié)合“盾形”擴(kuò)展板所帶來的靈活的增強(qiáng)功能后,還適合直接用于直至生產(chǎn)的所有階段。
本文將展示多個(gè)典型的 Arduino 基板以及盾板產(chǎn)品,討論其處理器基礎(chǔ)及外設(shè)分配等。 最后還會(huì)提供一些總結(jié)性建議,以輕松、有效地評(píng)估您下一次設(shè)計(jì)可采用的替代處理器。
定義 Arduino
“評(píng)估板”和“開發(fā)板”術(shù)語通常可互換使用,但這樣做是錯(cuò)誤的。 顧名思義,開發(fā)板旨在協(xié)助進(jìn)行軟件編碼(在系統(tǒng)硬件設(shè)計(jì)上運(yùn)行),以及提供板上硬件和其他必要系統(tǒng)電路之間的連接。 因此,開發(fā)板提供大量測(cè)試點(diǎn)和接口選擇,以及強(qiáng)大的捆綁軟件工具集。
但是開發(fā)板的全面性(及相應(yīng)的高價(jià)位)固有隱含假設(shè)是:您已通過架構(gòu)和產(chǎn)品擴(kuò)散評(píng)估階段,并選擇了特定的硬件產(chǎn)品組合。 這就是說,某些開發(fā)板的板載電路可能超出了(或至少不同于)您打算納入最終設(shè)計(jì)中的電路。 此外,開發(fā)板的靈活性還決定它需要比您設(shè)計(jì)需要的尺寸更大。 更通俗的來說,開發(fā)板軟硬件配置的全面性,結(jié)合其低出貨量,意味著即使用于小批量、高利潤(rùn)率的系統(tǒng)生產(chǎn)方案,它們的價(jià)格也可能是令人難以接受的。
過去十年來,Arduino 基板和擴(kuò)展板規(guī)范實(shí)際上已迅速成為行業(yè)標(biāo)準(zhǔn),理由很充分。 它們利用更基本的“基”板,而非試圖提供多位一體的統(tǒng)一板設(shè)計(jì)。 Arduino 靈活的增強(qiáng)功能由擴(kuò)展板(亦稱“盾板”)提供,能夠通過標(biāo)準(zhǔn)化接口連接至基板。 盾板可以疊接,甚至可以通過自助盾板設(shè)計(jì)來補(bǔ)充。 由于眾多供應(yīng)商提供包含許多電路的盾板,因此您不但可以輕松評(píng)估不同的功能,而且還可評(píng)估實(shí)現(xiàn)這些功能的不同硬件選擇。
類似地,在 Arduino 基板設(shè)計(jì)的初始迭代只利用 Atmel AVR 微控制器的情況下,最近也出現(xiàn)了包含非 Atmel MCU 和 MPU 在內(nèi)的其他基板備選對(duì)象,可提供更高的系統(tǒng)處理器評(píng)估靈活性。 此外,Arduino 的緊湊外形尺寸結(jié)合其高容量特色,成就了較高的性價(jià)比,使其不僅對(duì)評(píng)估和后續(xù)開發(fā)階段有吸引力,還適用于許多適度量產(chǎn)的情形。
Adafruit Industries Digi-Key Metro 板
我們首先來了解相對(duì)傳統(tǒng)的基板設(shè)計(jì)—Adafruit Industries Digi-Key Metro 板。 Arduino UNO R3 參考設(shè)計(jì)的這個(gè)派生器件,由 Digi-Key 做了兩項(xiàng)外觀美化(從硬件的角度看,這兩塊板是相同的),在“帶針座的 Metro 328”板的基礎(chǔ)上實(shí)現(xiàn)了進(jìn)一步定制。
它采用紅色,相應(yīng)主流 Adafruit 產(chǎn)品為黑色,以及 板下側(cè)印有完整零件清單(圖 1)圖 1a
圖 1b
圖 1c
圖 1:Adafruit Digi-Key Metro 板 (a) 是制造商主流的帶針座 Metro 328 板 (b) 的變型,定制使用紅色裝飾涂層,并在其下側(cè) (c) 印有完整的零件清單。
Atmel ATmega328P 微控制器基于 Digi-Key Metro 板,是一個(gè)采用 8 位 20 MHz AVR RISC 的處理器,具有額外的 32 KB 系統(tǒng)內(nèi)可編程閃存、1,024 B 的 EEPROM 以及 2 KB 的 SRAM。 ATmega328P 還隨附多種片載外設(shè);連接選件包括 23 個(gè) GPIO、16 個(gè)觸摸接口通道、24 個(gè)外部中斷、一個(gè)字節(jié)導(dǎo)向的雙線串行接口以及一個(gè) SPI 串行端口。
Seeed Technology Intel Edison for Arduino 套件
另一個(gè)極端是 Seeed Technology 的 Intel Edison for Arduino 套件,它是用于基礎(chǔ) Intel Edison 開發(fā)平臺(tái)(圖 2)的多個(gè)可用硬件擴(kuò)展選擇之一。 此基板尺寸為 127 mm x 72 mm,比前述 71 mm x 53 mm Arduino UNO 外形尺寸大不少,但 Arduino“盾形”擴(kuò)展總線標(biāo)準(zhǔn)化則通過四個(gè)板載連接器來實(shí)現(xiàn)。 Arduino 套件還包括一個(gè) SD 卡連接器,以及兩個(gè)小型和標(biāo)準(zhǔn)型 USB 主機(jī)連接器。
圖 2a
圖 2b
圖 2c
圖 2:Seeed Technology 的 Arduino 套件將“盾形”擴(kuò)展板生態(tài)系統(tǒng)支持帶至原本專有的 Intel Edison 開發(fā)平臺(tái)板設(shè)計(jì) (a)。 如果您只需要“分線”連接并且偏好較小的板外形尺寸,則可考慮該公司的替代 Intel Edison 分線套件 (b)。 此外,SparkFun Electronics 的開放式電源入門套件提供一種中間方法;尺寸介于兩個(gè)其他板之間,通過專有的(雖然開源)“塊”疊接方案 (c) 擴(kuò)展。
Intel 的 Edison 在 IoT 和其它嵌入式電子市場(chǎng)上出現(xiàn)得相對(duì)較晚,是一個(gè)采用 22 nm 工藝制造的 SoC,其內(nèi)核采用該公司的 32 位 Quark 微控制器(在此特定情況下運(yùn)行頻率為 100 MHz)。 同一芯片上還有一個(gè)雙核、雙線程 500 MHz "Silvermont" Intel Atom 處理器陣列。 Intel Edison 開發(fā)平臺(tái)模塊上還包括 1 GB 的 LPDDR3 SDRAM、4 GB 的基于 EMMC 的閃存、一個(gè) USB 2.0 PHY 和雙頻 Wi-Fi 以及藍(lán)牙無線收發(fā)器。
為了在后續(xù)外形尺寸顯著減小的情況下獲得 Intel Edison 評(píng)估開發(fā)所需的較適度功能,Seeed 還提供分線套件。 此外,作為中間的替代硬件方法,Intel Edison 倡導(dǎo)者還應(yīng)考慮 SparkFun Electronics 的基板和擴(kuò)展塊系列,其中幾個(gè)基板和擴(kuò)展塊捆綁在該公司的開放式電源入門套件中。 SparkFun 的基于 Intel Edison 的產(chǎn)品線從供應(yīng)商的角度出發(fā)目前為專有采購(gòu)(雖然從板設(shè)計(jì)文檔的角度出發(fā)為開源),將在即將推出的文章中會(huì)更詳細(xì)地討論。
UDOO Neo 開發(fā)板
如果 Arduino 的標(biāo)準(zhǔn)化富有吸引力,但 NXP 的 i.MX 6 處理器更符合您的喜好,您可能需要考慮 UDOO 的 Neo 開發(fā)板產(chǎn)品線(圖 3 和表 1)。 Neo 提供三種型號(hào),它們?nèi)炕?i.MX6 SoloX SoC 并且外形尺寸皆為 89 mm x 59 mm,介于之前討論的兩個(gè)選件的尺寸之間(但同樣采用引腳分配和布局標(biāo)準(zhǔn)的板載 Arduino“盾板”連接器組)。
圖 3a
圖 3b
圖 3c
圖 3:UDOO 的 Neo 產(chǎn)品線提供三種版本:基本版 (a)、擴(kuò)展版 (b) 和完整版 (c),帶有混用無線和有線網(wǎng)絡(luò)連接選件,以及各種系統(tǒng)存儲(chǔ)器分配和可選的運(yùn)動(dòng)傳感器。
UDOO 板 |
DRAM |
有線網(wǎng)絡(luò)連接 |
無線網(wǎng)絡(luò)連接 |
板載運(yùn)動(dòng)傳感器 |
基本版 |
512 MB |
10/100Mbps 以太網(wǎng) |
無 |
否 |
擴(kuò)展版 |
1 GB |
無 |
僅 2.4 GHz 的 802.11b/g/n,藍(lán)牙 4 |
加速計(jì)、磁力儀和陀螺儀(全部 3 軸) |
完整版 |
1 GB |
10/100Mbps 以太網(wǎng) |
僅 2.4 GHz 的 802.11b/g/n,藍(lán)牙 4 |
加速計(jì)、磁力儀和陀螺儀(全部 3 軸) |
表 1:UDOO Neo 系統(tǒng)板型號(hào)及選件。
所有三個(gè)型號(hào)均具有以下特性:
視頻輸入:模擬(NTSC 和 PAL)以及 8 位并行數(shù)字 視頻輸出:Micro HDMI 以及 LVDS + 觸摸 (I2C) 存儲(chǔ):8 位 microSD 卡(帶 SDIO 支持) 音頻:HDMI(輸出)、S/PDIF、I2S USB:一個(gè) USB 2.0 A 型,一個(gè) microUSB(帶 OTG 支持)UDOO Neo 產(chǎn)品線所基于的 NXP i.MX 6SoloX 應(yīng)用處理器由一個(gè) ARM® Cortex®-A9 處理器內(nèi)核(運(yùn)行速度高達(dá) 1 GHz)及 ARM Cortex-M4 內(nèi)核(高達(dá) 200 MHz)組成。 同時(shí)集成了一個(gè) Vivante GC400T 2D/3D 圖形加速器。
Analog Devices ADUCM360 基板
如果 ARM 的 Cortex-M 系列內(nèi)核是您唯一關(guān)注的處理器,您應(yīng)了解下 Analog Devices ADUCM360 基板,制造商稱該基板的外形尺寸與 101.6 mm x 53.3 mm Arduino Due 參考板設(shè)計(jì)兼容(圖 4)。 此板所基于的 ADuCM360 應(yīng)用處理器是一個(gè)速率達(dá) 3900 次采樣/秒的 24 位數(shù)據(jù)采集系統(tǒng),包含兩個(gè) 24 位多通道三角積分型模數(shù)轉(zhuǎn)換器 (ADC)、一個(gè)提供高達(dá) 20 MIPS 峰值性能的 32 位 ARM Cortex-M3 處理器內(nèi)核,以及 128 KB 的基于 EEPROM 的閃存和 8 KB 的 SRAM。
圖 4a
圖 4b
圖 4c
圖 4d
圖 4:Analog Devices 的 ADUCM360 基板 (a) 采用兼容 Arduino Due 的外形尺寸 (b)。 提供的 Analog Devices 牌“盾形”擴(kuò)展板支持加速計(jì)和電子秤 (c) 以及毒氣檢測(cè) (d) 功能。 (圖片由 Analog Devices 提供)
ADUCM360 基板還支持 PMOD 擴(kuò)展總線標(biāo)準(zhǔn),這解釋了圖 4 中所示的附加連接器組。 Analog Devices 推出了幾款 Arduino Uno R3 格式的盾形擴(kuò)展板供選擇,有力補(bǔ)充了更廣泛的 Arduino 生態(tài)系統(tǒng)提供的擴(kuò)展板:
EVAL-ADXL362-ARDZ,基于 ADXL362 3 軸 MEMS 加速計(jì)。 EVAL-CN0216-ARDZ,一種電子秤信號(hào)調(diào)節(jié)系統(tǒng)。 EVAL-CN0357-ARDZ,一種使用電化學(xué)傳感器的有毒氣體檢測(cè)器。處理器評(píng)估與設(shè)計(jì)考慮因素
本文討論的 Arduino 板代表了一組廣泛的處理器架構(gòu)及關(guān)聯(lián)能力。 例如,Atmel ATmega328P 是一種相對(duì)比較簡(jiǎn)單的 8 位 RISC CPU 應(yīng)用,而 64 位雙核 Intel Atom 處理器不僅以較高時(shí)鐘速度運(yùn)行,而且采用多線程并在其他方面更先進(jìn)。 16 和 32 位 ARM Cortex-M3/M4 和 Cortex-A9 以及 Intel Quark 處理器是早期兩個(gè)極端型號(hào)之間的中間選擇。
一方面,如我最近發(fā)布的另一篇文章中所寫,緊湊、強(qiáng)大、高效且具成本優(yōu)勢(shì)的基于 ARM 的板卡才是有吸引力的硬件選擇,您不會(huì)想要選擇對(duì)您的特定需求而言過慢的 CPU,尤其是當(dāng)你希望為今后不可避免的軟件升級(jí)保留一些性能“空間”時(shí)。 另一方面,沒有必要為超出你需求的處理器功率買單;記住你的選擇不僅是價(jià)格,還有功耗影響。 若您的軟件大部分時(shí)間都處于等待輸入的空閑循環(huán)中,更高的時(shí)鐘速度可能意義不大。 此外,僅當(dāng)您的軟件具有較低的指令間相關(guān)性時(shí),像超標(biāo)和故障支持等架構(gòu)特性才能達(dá)到明顯更高的、可實(shí)現(xiàn)的 IPC(指令/時(shí)鐘)。
類似地,相比更簡(jiǎn)單的單核 CPU,缺乏線程獨(dú)立性將導(dǎo)致多核 CPU 的吞吐量?jī)?yōu)勢(shì)只能部分發(fā)揮,而較高位指令集理論優(yōu)勢(shì)在特定應(yīng)用中可能無法發(fā)揮作用(更何況其更大存儲(chǔ)器封裝需求)。
認(rèn)真確定您的特殊需求,因?yàn)檫@將幫助您專注于本文介紹的全部產(chǎn)品中的首選處理器選擇。 理想情況下,您的終端系統(tǒng)軟件應(yīng)該已經(jīng)可以使用,這樣您便可在多種備選對(duì)象上運(yùn)行該軟件,并評(píng)估這些備選對(duì)象的相對(duì)優(yōu)勢(shì)和不足。 但實(shí)際上,很可能在硬件開發(fā)工作的同時(shí)已經(jīng)編寫代碼的重要部分(如果不是全部)。 因此,您需要使用軟件來評(píng)估替代處理器,逼近您將要使用的函數(shù)和例程(特別是最嚴(yán)苛的函數(shù)和例程)。
為了對(duì)您有所幫助,我們提供了多種基準(zhǔn)軟件選擇。 出于對(duì)魯棒性和開源特性的五月份認(rèn)真考慮,一種可能的選擇是相應(yīng)稱作“基準(zhǔn)”的、由 Google 在 GitHub 上提供的微基準(zhǔn)支持庫。 此庫包含許多特定示例,因此必須運(yùn)行代表終端節(jié)點(diǎn)中可能存在的多種特征的一系列測(cè)試,以全面評(píng)估每個(gè)替代處理器。
在基本使用中,您可以定義執(zhí)行待評(píng)估代碼的函數(shù):
static void BM_StringCreation(benchmark::State& state) {
while (state.KeepRunning())
std::string empty_string;
}
// Register the function as a benchmark
BENCHMARK(BM_StringCreation);
// Define another benchmark
static void BM_StringCopy(benchmark::State& state) {
std::string x = "hello";
while (state.KeepRunning())
std::string copy(x);
}
BENCHMARK(BM_StringCopy);
BENCHMARK_MAIN();
還可以通過單一例程實(shí)現(xiàn)一系列基準(zhǔn);使用一個(gè)額外參數(shù)來指定要運(yùn)行基準(zhǔn)系列中的哪一個(gè)。 例如,以下代碼定義了一系列用于評(píng)估不同長(zhǎng)度 memcpy() 調(diào)用速度的基準(zhǔn):
static void BM_memcpy(benchmark::State& state) {
char* src = new char[state.range_x()];
char* dst = new char[state.range_x()];
memset(src, 'x', state.range_x());
while (state.KeepRunning())
memcpy(dst, src, state.range_x());
state.SetBytesProcessed(int64_t(state.iterations()) *
int64_t(state.range_x()));
delete[] src;
delete[] dst;
}
BENCHMARK(BM_memcpy)->Arg(8)->Arg(64)->Arg(512)->Arg(1<<10)->Arg(8<<10);
也可以更簡(jiǎn)潔地編碼,例如像這樣:
BENCHMARK(BM_memcpy)->Range(8, 8<<10);
如需更多信息,包括大量其它參考代碼段,請(qǐng)參閱 GitHub 上的基準(zhǔn)項(xiàng)目區(qū)域。 開心搜尋,祝您好運(yùn)!