Otázka:
Výhody 32bitových 48-96 Mhz mikroprocesorů (například v Arduino Due)
Thomas E
2012-10-23 06:18:05 UTC
view on stackexchange narkive permalink

Vypadá to, že Arduino Due (32bitový, 84 MHz, SAM3X8E na bázi ARM-Cortex-M3) byl dnes vydán.

Kromě toho je zjevně nesčetné množství procesorů v této kategorii (32bitové / 48-96 Mhz / ARM) a také odpovídající prototypové desky:

  • NXP LPC1768 / mBed
  • STM32 / Discovery
  • PIC32 / ChipKit
  • PIC32 / Parallax Propeller
  • LM4F120 / TI Launchpad
  • atd.

Snažím se pochopit přitažlivost těchto „meziprocesorových“ mikroprocesorů, které podle mého názoru leží mezi low-end AVR / MSP430 / atd. (klady: levné, s nízkou spotřebou energie, malé rozměry) a špičkový ARM7 / atd. (pro: schopný mnohem větších pokynů za sekundu).

V jakých situacích nebo způsobech je 32 -bit / 48-96 Mhz / ARM založené mikroprocesory vhodná volba? Přesněji řečeno, zajímalo by mě, v jakých aplikacích nebo v jakých parametrech by udělali lepší výběr během návrhu, a to jak nad low-end 8 -bitové mikrokontroléry nebo velmi špičkové procesory ARM7.

No - první věc, kterou mám na mysli, můžete zpracovat živé video streamy - kde to Arduino nezvládlo. Umožňuje také pokročilé šifrovací algoritmy nebo hashování (rychlejší a jednodušší než v Arduinu). Překvapuje mě, že Arduino vyšlo s 32bitovou platformou, ale jen vám to ukazuje - Někteří lidé chtějí dělat víc, než ovládat relé. Je to skvělý den pro Arduino!
Nebudete dělat více než triviální zpracování živého videa na procesoru <100 MHz, pokud to neuděláte v připojeném jádru speciální funkce. A zejména ne v poměrně omezeném palubním ramu na těchto zařízeních. Realističtějším bodem je, že cena těchto čipů prostě není podstatně vyšší než cena 8bitových dílů; ve skutečnosti může být nižší než ATMEGA se srovnatelným bleskem a RAM.
Pokud vím, Parallax Propeller je vlastní čip bez vztahu k PIC32. Nějaké zdroje pro připojení?
Tři odpovědi:
user3624
2012-10-24 21:19:19 UTC
view on stackexchange narkive permalink

Toto je jeden z témat, o kterých se může velmi diskutovat. Existuje tolik různých úhlů pohledu a různé věci jsou důležité pro různé lidi. Pokusím se dát komplexní odpověď, ale pochopte, že vždy se najde někdo, kdo nesouhlasí. Jen pochopte, že ti, kteří se mnou nesouhlasí, se mýlí. (Jen si dělám srandu.)

Rychlé shrnutí:

Tato odpověď bude dlouhá, dovolte mi tedy ji shrnout předem. Pro drtivou většinu lidí nejnovější plodina čipů ARM Cortex-M0 / M3 / M4 nabízí nejlepší řešení a nejlepší vlastnosti za cenu. To platí dokonce i při srovnání těchto 32bitových MCU s jejich 8 a 16bitovými předky, jako jsou PIC a MSP430. M0 je možné koupit za méně než 1 USD / kus a M4 za méně než 2 USD / každý, takže s výjimkou aplikací velmi citlivých na cenu jsou řešení ARM velmi pěkná. M0 mají velmi nízkou spotřebu a pro většinu lidí by měly být dost dobré. Pro ty, kteří jsou velmi citliví na napájení, může být MSP430s stále lepší volbou, ale M0s stojí za zvážení i pro tyto aplikace.

Pokud vás zajímá podrobnější analýza, přečtěte si, jinak nyní můžete přestat číst.

Nyní se podívám na jednotlivé oblasti a porovnám různé MCU:

Rychlost provedení

Samozřejmě 32bitové MCU budou rychlejší. Mají tendenci mít vyšší rychlost hodin, ale také dělají více práce pro každý z těchto hodin. MCU jako ARM Cortex-M4 obsahují instrukce pro zpracování DSP a mohou mít dokonce podporu s plovoucí desetinnou čárkou v hardwaru. 8 a 16bitové CPU mohou pracovat na 32bitových číslech, ale není to efektivní. Tímto způsobem rychle spotřebujete registry CPU, taktovací cykly CPU a flash paměť pro ukládání programu.

Snadný vývoj

Podle mého názoru je to nejcennější důvod pro použití moderních 32bitových MCU - ale také nejvíce nedoceněný. Nejprve to porovnám s 8bitovými PIC. Toto je srovnání v nejhorším případě, ale také nejlepší pro ilustraci mých bodů.

Menší PIC v zásadě vyžadují, aby bylo programování prováděno v assembleru. Je pravda, že pro 8bitové PIC existují kompilátory C, ale tyto kompilátory jsou buď zdarma, nebo dobré. Nemůžete získat kompilátor, který je dobrý i bezplatný. Bezplatná verze kompilátoru je zmrzačena tím, že její optimalizace není tak dobrá jako verze „Pro“. Verze Pro má přibližně 1 000 USD a podporuje pouze jednu rodinu čipů PIC (8, 16 nebo 32 bitových čipů). Pokud chcete použít více než jednu rodinu, musíte si koupit další kopii za dalších 1 000 USD. "Standardní" verze kompilátoru zajišťuje střední úroveň optimalizace a stojí přibližně 500 USD za každou rodinu čipů. 8bitové PIC jsou podle moderních standardů pomalé a vyžadují dobrou optimalizaci. Můžete buď rozdvojit peníze za dobrý kompilátor, nebo můžete psát v montážním jazyce - v tomto případě dávám přednost sestavení.

Pro srovnání existuje mnoho dobrých překladačů C pro ARM MCU, které jsou zdarma. Pokud existují omezení, jsou tato omezení obvykle na maximální velikosti podporované paměti Flash. U nástrojů Freescale Codewarrior je tento limit 128 kB. To je pro většinu lidí na tomto fóru spousta.

Výhodou použití kompilátoru C je, že se nemusíte tolik obtěžovat s podrobnostmi mapy paměti CPU na nízké úrovni. Stránkování na PIC je obzvláště bolestivé a nejlépe se mu vyhnout, pokud je to možné. Další výhodou je, že se nemusíte obtěžovat nepořádkem při předávání 16 a 32 bitových čísel na 8bitovém MCU (nebo 32bitových čísel na 16bitovém MCU). I když to není těžké v assembleru, je to bolest v zadní části a náchylné k chybám.

Existují i ​​jiné překladače jiné než ARM C, které fungují dobře. Zdá se, že kompilátor MSP430 odvádí rozumnou práci. Nástroje Cypress PSoC (zejména PSoC1) jsou chybné.

Model ploché paměti

MCU, která má stránkovanou RAM / registry / Flash, je prostě hloupá. Ano, mluvím o 8bitových PIC. Hloupý, hloupý, hloupý. To mě natolik vyřadilo z PIC, že jsem se ani neobtěžoval podívat se na jejich novější věci. (Zřeknutí se odpovědnosti: to znamená, že nové PIC mohou být vylepšeny a já o tom prostě nevím.)

S 8bitovým MCU je obtížné (ale ne nemožné) získat přístup k datovým strukturám větším než 256 bajtů. S 16bitovým MCU, který se zvýší na 64 kbytů nebo kwords. S 32bitovými MCU, které dosahují až 4 gigabajtů.

Dobrý kompilátor jazyka C toho může skrýt před programátorem (neboli vy), ale i tak to ovlivní velikost programu a rychlost jeho spuštění.

Existuje mnoho aplikací MCU, s nimiž to nebude problém, ale samozřejmě existuje mnoho dalších, které s tím budou mít problémy. Většinou jde o to, kolik dat potřebujete (pole a struktury) v RAM nebo Flash. Se zvyšující se rychlostí CPU se samozřejmě zvyšuje šance na použití větších datových struktur!

Velikost balíčku

Některé malé PIC a další 8bitové MCU jsou k dispozici ve skutečně malých baleních. 6 a 8 kolíků! V současné době nejmenší ARM Cortex-M0, o kterém vím, je v QFN-28. Zatímco QFN-28 je pro většinu lidí dost malý, není dost malý pro všechny.

Náklady

Nejlevnější PIC je asi jedna třetina cena nejlevnější ARM Cortex-M0. Ale to je ve skutečnosti 0,32 USD vs. 0,85 USD. Ano, pro některé je tento cenový rozdíl důležitý. Ale domnívám se, že většina lidí na tomto webu se nestará o ten malý rozdíl v nákladech.

Podobně při srovnání schopnějších MCU s ARM Cortex-M0 / M3 / M4 ARM Cortex obvykle vychází „zhruba rovnoměrně“ nebo nahoře. Když vezmeme v úvahu jiné věci (snadnost vývoje, náklady na překladače atd.), Pak jsou ARM velmi atraktivní.

Druhé shrnutí

Myslím, že skutečný otázka zní: Proč byste NE používali ARM Cortex-M0 / M3 / M4? Když jsou absolutně důležité absolutní náklady. Když je kritická super nízká spotřeba energie. Když je vyžadována nejmenší velikost balení. Když rychlost není důležité. Ale pro drtivou většinu aplikací nic z toho neplatí a ARM je v současné době nejlepším řešením.

Vzhledem k nízké ceně, pokud není dobrý důvod nepoužívat ARM Cortex, pak má smysl použít jeden. Umožní to rychlejší a snadnější vývojový čas s menšími bolestmi hlavy a většími okraji návrhu než většina ostatních MCU.

K dispozici jsou i jiné 32bitové MCU jiné než ARM Cortex, ale já ano Nevidí pro ně žádnou výhodu. Standardní architektura CPU má mnoho výhod, včetně lepších vývojových nástrojů a rychlejší inovace technologie.

Věci se samozřejmě mohou a mohou změnit. To, co říkám, platí dnes, ale nemusí platit za rok nebo dokonce za měsíc. Udělejte si vlastní domácí úkol.

Chcete-li získat přístup k libovolnému umístění paměti pomocí ARM, musíte nejprve načíst registr s adresou, která je v rozmezí 4K od něj; mnoho I / O zařízení má přiděleno více než 4K adresního prostoru, i když mnoho z nich používá pouze několik diskrétních adres. Naproti tomu 18Fxx PIC mohou přímo pracovat na většině I / O míst s jedinou instrukcí, nezávisle na stavu bankovnictví. Prostředky, kterými je většina paměti RAM nakloněna, jsou docela nepříjemné, ale pro určité typy bitových bitů (účel, pro který byla architektura PIC navržena v 70. letech) funguje architektura PIC velmi dobře.
BTW, považuji za zvědavé, že zatímco populární 8bitový mikroprocesor ze 70. let mohl efektivně zpracovávat libovolně zarovnané 256bajtové datové struktury a populární 16bitový procesor mohl dobře fungovat s 65 536 bajtovými datovými strukturami, které byly zarovnány na 16 -bajtové hranice nebo libovolně zarovnané datové struktury téměř s tak velkými, novějšími 8bitovými a 16bitovými procesory ztěžují psaní efektivního kódu, který překračuje hranice stránky / banky.
@supercat Rozsah adres 4K pro instrukci "LDR / SRT Immediate Offset" je pravdivý, ale často to není problém. Nesouhlasím se zbytkem vašeho komentáře. Podíváme-li se na dokumenty Freescale M4, každá periferie nezabírá více než 4K rozsahu adres, takže pro přístup ke všem registrům v této periferii stačí jediný „ukazatel základní adresy“. K dispozici je také 32 registrů pro všeobecné použití, z nichž každý lze použít jako ukazatel základní adresy - takže rychlý přístup k více periferním zařízením ve stejné části kódu je relativně bezbolestný.
@supercat Váš druhý bod se dotýká celé debaty RISC vs. CISC. ARM je RISC CPU, což znamená, že je optimalizováno pro provádění nejčastějších úkolů. Úkoly, které nejsou časté, jako jsou nevyrovnané přístupy, vyžadují buď více práce, nebo zabere více času (v závislosti na CPU Arch). Považuji to za pozitivní věc, nikoli za negativní. Proto dostáváme rychlé 32bitové MCU za cenu staršího 8bitového. I s těmito vtípky bych každý den vzal jeden z těchto CPU přes PIC.
Špatně jsem mluvil; Nechtěl jsem tím naznačit, že jeden základní registr nedokáže zvládnout celou periferii, ale spíše to, že registr by musel být často načten pro každou periferii (takže jeden nemohl jednoduše např. Nechat registr sedět s IO_BASE_ADDR po celou dobu ). U některých typů kódu může být velmi užitečné mít možnost nastavit I / O bit v jediném cyklu s instrukcí jako „bsf LATA, 4“, aniž byste museli předem načítat nějaké registry. Mám rád ARM, ale přímé I / O mapování na PIC může být docela pěkné (škoda, že jiný přístup do paměti není tak pěkný).
Jedna věc, kterou je třeba přidat k rozdílům, může být, že křivka učení pro ARM může být o něco strmější?
@ThomasE Opravdu si nemyslím, že křivka učení pro ARM je strmější nebo ne - je to prostě jiné. Jednoduché programování pro ARM je jednodušší díky jejich 32bitové kapacitě, ale jsou natolik schopné, že se můžete snadno dostat do projektů, které jsou náročnější než to, co byste udělali pro nižší MCU.
s5s
2013-07-04 13:42:22 UTC
view on stackexchange narkive permalink

David Kessner má pravdu. Chtěl bych přidat následující.

  1. 8bitové MCU jsou jediné MCU, které jsou snadno dostupné v balíčcích PDIP, se kterými se snadno manipuluje a které se snadno drží v prototypovém prkénku.
  2. 32bitové MCU mohou ve skutečnosti spotřebovat méně energie než 8bitové MCU. Není nutně pravda, že 8bitový MCU < 20 MHZ spotřebuje méně energie než Cortex M4.
  3. 8bitové MCU jsou často používány fandy, kteří obvykle od MCU hodně nevyžadují . Možná několik stovek řádků jednoduchého kódu C.

Souhlasím, že v dnešní době existuje malý důvod nepoužívat 32bitové MCU. Použil bych je [8bitové MCU] pouze ze 2 důvodů: Líbí se mi snadnost balíčku PDIP (není nutné pájení); Často nepotřebuji více síly / složitosti, než jaké může nabídnout 8bitový MCU.

Rozdělovač dohod jsou skutečně dostupné nástroje.

Pro prototypování existují zásuvky pro LQFP, které fungují docela dobře. A samozřejmě _Můžete_pájet LQFP ručně, jen to vyžaduje trochu cviku. QFN, DFN a BGA Nechci pájet ručně, ale pak každý low-end 32bitový MCU na trhu přichází s LQFP.
John U
2013-07-04 16:16:37 UTC
view on stackexchange narkive permalink

Používáme relativně nemoderní Freescale MCF52259, 32bitový ~ 80Mhz schopný MCU.

Důvody / myšlenkový proces pro výběr byly:

  • Nahrazovalo to 32bitové zařízení M.Core, takže portování bylo relativně jednoduché
  • Také to znamenalo, že bychom se mohli držet stávajícího IDE (CodeWarrior)
  • Potřebovali jsme spoustu IO: Control for step / směr na 3 krokové motory, 4 kanály PWM, 3 UART a I2C a SPI.
  • Dělo se toho hodně (viz poslední bod) a některé se musely uskutečnit včas, takže potřebovali jsme se ujistit, že je dostatek cyklů CPU, aby bylo vše hotové.
  • Starší kód narážel na 256k velikost blesku a 32k RAM M.Core, takže zdvojnásobení blesku & RAM oživilo život snadné vstávání & běží rychle.

V dnešní době je nákladově efektivnější (a účelnější) over-spec / rozšiřovat možnosti hardwaru (úložiště, rychlost, IO atd.) než strávit drahocenný vývojový čas optimalizací kódu, který se dá vtěsnat na nepatrně levnější / menší MCU, ledaže by prostor nebo energie byly velkými problémy.

V našem případě bylo zařízení dvojnásobnou specifikací M.Core za poloviční cenu, přechod na levnější MCU by jen ušetřil haléře na desku, ale stojí hodně času na vývoj a omezuje potenciál budoucího vývoje, aniž by se znovu měnily MCU.

Pokud bychom stavěli milion desek, stálo by za to provést nákladově-inženýrské cvičení, abychom věci rozdělili , ale v současné době to nestojí za vývojový čas.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...