Warum verwendet Arduino AVR? Ich verstehe, dass sie der offizielle Prozessor sind, aber es gibt keinen Grund, warum der Code nicht auf eine ARM- oder Freescale-Architektur portiert werden kann, außer zum Preis, oder? Solange der integrierte Speicher vorhanden ist, könnte eine einfache Migration in diese Bereiche möglich sein.
Ich sehe viel ARM in der Industrie (anscheinend treibt jeder Anbieter eines in seine Designs ein) und frage mich, warum die Arduino-Entwicklerwelt nicht mehr aufgenommen wurde.
Antworten:
Ja und nein. Ich habe auf dem AVR32 für ein bestimmtes Projekt entwickelt, und die Entwicklungsumgebung (insbesondere der Kompilierungs- / Programm- / Debug-Zyklus) ist im Vergleich zu beispielsweise PIC32 entsetzlich.
Die Kunden interessieren sich nicht, außer für Kosten und Wartung, und im Fall eines Arduino-ähnlichen Systems interessieren sich die Programmierer nicht dafür, weil die Arduino-Umgebung und der Entwicklungszyklus sprunghaft besser sind als das aktuelle AVR32-Setup.
Es gibt keinen Grund, warum ein anderer Prozessor nicht verwendet werden könnte, aber es gibt einen sehr guten Grund, warum sie sich für ein 8-Bit-Low-End-Gerät anstatt eines ARM-, MIPS-, PowerPC- usw.-Geräts entschieden haben: Benutzerfreundlichkeit.
Wenn Sie sich das Setup für die unteren Arme angesehen haben, ist es um eine Größenordnung komplexer (Speicherzuordnung, Caching usw.) als ein 8-Bit-Prozessor. Aber was noch wichtiger ist - zu der Zeit gab es keine DIP-Arm-Prozessoren, und diese sollten von Künstlern und Hackern verwendet und gebaut werden können, nicht unbedingt von Elektronikern und Ingenieuren, die sich auch mit einem 48-poligen TQFP wohl fühlen.
Der Grund, warum der AVR dem PIC vorgezogen wurde, ist, dass der PIC unter anderem keinen weit verbreiteten, freien Open-Source-C-Compiler hat (der SDCC-Port ist nicht ausgereift).
Dies liegt hauptsächlich an der Benutzerfreundlichkeit - der Komplexität, der einfachen Lötbarkeit, den Kosten und der Tatsache, dass dafür nicht viel erforderlich ist. Entwickler mögen die Idee, viel Leistung zu haben, aber am Ende des Tages, wenn Sie nur einige Servos bewegen und einige Lichter mit einer Low-End-FFT blinken müssen, ist ein 8-Bit-Prozessor in Ordnung.
Sogar die in 28-Pin-Gehäusen erhältlichen Low-End-Cortex-ARMS sind nach wie vor SOIC und nicht DIP.
Der AVR hatte also die richtigen Funktionen:
Im Großen und Ganzen ist dies immer noch wahr - ich kenne keinen ARM im Dip-Format, und die Adapter verteuern ihn erheblich als den AVR. Die meisten Hersteller glauben nicht, dass ein DIP-verpackter 32-Bit-Prozessor sehr rentabel sein wird.
quelle
Die Armentwicklung kommt - schauen Sie sich die folgenden Projekte an.
Ahornblatt
XDuino
Cortino
Illuminato
ARM PRO-Familie
Und jetzt ein ARM in einem DIP-Paket.
NXP LPC1114FN28
BASICchip
quelle
Da Sie anscheinend eine Meinungsumfrage durchführen, sind hier meine $ .02. Ob ich an einem ARM oder einem AVR arbeite, spielt eine Rolle (und darum ist es mir auch wichtig), hauptsächlich basierend auf dem, was ich versuche. Es gibt Anwendungsfälle, in denen ein AVR Sinn macht, und solche, in denen ein ARM Sinn macht. Im Allgemeinen gibt es auch einen Kompromiss zwischen beispielsweise AVR und PIC.
Zunächst einmal, während ich wahrscheinlich in Schwierigkeiten gerate, weil ich das sage, ist das "starke Kontingent in der Arduino-Familie" so etwas wie eine stimmliche Minderheit. Die meisten Arduino-Leute (Benutzer), denen ich begegnet bin, sind solche, die ihre Hardware eher so behandeln, als würden sie ein Python-Skript erstellen, um etwas Amüsantes zu tun, oft mit einem geringeren Verständnis der damit verbundenen Komplikationen als sie hätte, wenn sie tun würden "aus numpy import foo". Während die Art und Weise, wie Arduino Dinge tut, einige Vorzüge hat, gibt es auch viel Raum für Kritik.
Ich denke, es lohnt sich, die AVRs neben dem Arduino-Ökosystem zu betrachten. Das Arduino-Kontingent hat auch stark von den Gründen profitiert, die den AVR zu einem Defacto-Standard für Bastler gemacht haben - ein Mantel, den er zunehmend von PIC übernommen hat, noch bevor Arduino auf den Markt kam. Die direkten Konkurrenten des AVR wären der PIC und bis zu einem gewissen Grad der MSP430, der vor allem aufgrund des starken Marketingschubs von TI in Verbindung mit seinen Subventionsinstrumenten an Fahrt gewinnt.
Ökosystem
Wie bereits in anderen Antworten erwähnt, ist der AVR die einzige Familie, die eine saubere, standardisierte Möglichkeit hat, mit kostenlosen Tools von Null auf Hallo Welt zu gelangen. Der avr-gcc-Port, die Bestandteile der winavr-Toolchain, eine Vielzahl von Programmierschemata mit unterschiedlicher Komplexität und Funktionalität, die jedoch immer noch an die Autorität gebunden sind, die sich aus der Unterstützung durch avrdude ergibt, machen die Arbeit mit der Toolchain wesentlich einfacher.
Das Ökosystem des PIC ist ein Albtraum mit einer beliebigen Anzahl von Compilern, Programmierwerkzeugen und Assemblern. Viele von ihnen sind nicht miteinander kompatibel. Die meisten von ihnen sind bezahlt. Nicht alle von ihnen sind gut. Noch wichtiger ist, dass es keinen Defacto-Standard gibt. Die Free / Open-Source-Alternativen (z. B. SDCC) lassen zu wünschen übrig, haben jedoch nicht den Status eines Defacto-Standards wie avr-gcc und company erreicht. Selbst wenn die Software-Toolchain funktioniert hätte, müssten Sie zumindest in einen Programmierer investieren. Das PICkit kostet vielleicht nur 20 $ oder so, aber wenn Sie herausfinden müssen, wie Sie es online kaufen können (Kreditkarten, internationaler Versand, Devisenprobleme), kann es für Bastler ein Deal Breaker sein. Es gibt kein gutes,
MSP430 ist geringfügig besser, vor allem, weil es neuer ist (zumindest in Bezug auf die Popularität). TI liefert Ihnen IC-Muster mit Effizienz, die ich sonst nirgendwo gesehen habe. mspgcc ist in Ordnung und es gibt sogar eine Open-Source-Debugging-Software, die nicht schwer zu finden oder einzurichten ist. Das Problem ist jedoch, dass es nicht so hobbyfreundlich ist wie der AVR. Sie haben immer noch das Problem des Programmierers, das teurer ist als das, was Sie für einen PIC kaufen müssten. Die 3,3-V-Versorgung stellt eine wahrgenommene Barriere für Menschen dar, die an 5-V-Logik gewöhnt sind. Und es skaliert nicht im DIP - Es gibt Low-End-Chips, aber nicht, wenn Sie die besser ausgearbeiteten Chips erreichen.
Benutzerfreundlichkeit
DIP vs SMD, denke ich, ist eine wichtigere Unterscheidung, als es oft behauptet wird. Ein DIP-IC kann auf Steckplatinen, Allzweckplatinen, wie auch immer sie heißen, wo Sie leben, und so weiter verwendet werden. Ein SMD-IC erfordert zwangsläufig einen Fertigungslauf oder den Kauf von Adapterplatinen, die in der gewünschten Größe oder Form nicht immer leicht zu beschaffen sind.
Auch die Datenblattqualität, die Anwendungshinweise und deren Lesbarkeit machen einen Unterschied. Atmel scheint dabei einen geringfügig besseren Job zu machen. Das ist natürlich eine sehr subjektive Einschätzung.
AVRs können einen internen RC verwenden, PICs oft nicht. Sie benötigen einen Kristall, der in Kombination mit einem Mangel an Selbstbewusstsein ein wenig zerbrechlich ist.
AVRs schienen im Vergleich zu PICs vor ein paar Jahren auch mit In-System-Programmierung freundlicher zu sein, obwohl ich dort sehr leicht falsch liegen könnte.
AVR gegen ARM
Ihre Frage hatte jedoch mit AVR vs ARM zu tun. Wie ich zu Beginn sagte, besetzen AVR und ARM unterschiedliche Bereiche im Spektrum. Wenn Sie etwas haben, das Sie mit einem AVR tun können, warum sollten Sie es dann mit einem ARM tun? ARMs sind teurer, erfordern eine höhere Anzahl von Teilen, verbrauchen mehr Energie, komplizieren Code und erfordern teurere Herstellungsprozesse. Das Löten eines 100-poligen TQFP ist teurer als das Löten eines 40-poligen DIP / SOIC, je nachdem, wie Sie die Kosten messen. Dies gilt möglicherweise nicht, wenn Sie in großen Stückzahlen produzieren und die damit verbundenen Produktionstechniken anwenden. Wenn Sie dies jedoch tun, wird der Preisunterschied für die billigere Lösung noch zwingender.
Als Anlaufstelle für das allgemeine Hacken im Haus oder bei Ihnen würde ich sagen, dass AVR einfacher zu verwenden ist, weil: - Aus Hobby-Sicht standardisierter, mehr Code aus dem Internet wiederverwendbar ist, weil es nicht so viele gibt Compiler-Variationen und Variationen zwischen Registernamen und API unter Familienmitgliedern. (Versuchen Sie, LPC ARM-Code auf ATMEL ARM-Hardware zu portieren. Sie werden sehen, was ich meine.) - Code wird von Natur aus komplizierter. - Das Einrichten der Toolchain erfordert zusätzlichen Arbeitsaufwand. - Erleichtert das Anschließen etwas. ARMs würden Sie im Allgemeinen auf 3v3- oder 1v8-Logik bringen, was die Anbindung an andere Spielzeuge etwas problematisch macht. - Billiger - Einen ARM-Chip im örtlichen Baumarkt zu bekommen, ist für mich keine Option, wo ich wohne, sondern ein AVR.
quelle
Ein Grund für das große Interesse der Community am Arduino ist die physikalische Standardisierung. So verzwickt das physische Layout ist, durch die Aufnahme einer standardisierten Erweiterungsoption haben die Arduino-Entwickler es den Menschen ermöglicht, ihre eigenen Lösungen zu entwickeln. Wenn Sie die Basis-Arduino-Karte durch eine andere Karte mit einem anderen Mikrocontroller ersetzen möchten, können Sie dies tun. IIRC, jemand hat bereits ein PIC-basiertes Board gebaut, das den Arduino-Formfaktor verwendet. (Die PIC Ardunio-Platine hat nicht den gleichen Formfaktor, ist aber ansonsten ähnlich.)
Ein weiterer Grund für den Erfolg des Arduino liegt in seiner Offenheit - die meisten PIC-basierten Mikrocontroller waren geschlossen; Sie verwendeten proprietäre Hardwareimplementierungen. Wenn Sie also die Platine so umgestalten wollten, dass sie besser in einen bestimmten Bereich passt, hatten Sie Pech. Sie verwendeten benutzerdefinierte Firmware und proprietäre Entwicklungstools, sodass Sie Pech hatten, wenn Sie Fehler hatten oder die Funktionen erweitern wollten. Mit dem Arduino ist jedes Puzzleteil offen: Sie können Teile überall kaufen, nach Bedarf neu anordnen, die Firmware und die Entwicklungswerkzeuge verbessern oder modifizieren. Sie können einfach mit der Arduino IDE beginnen, aber Sie können jederzeit zu C oder Assembly wechseln.
Persönlich mag ich das Arduino, weil es viele Dinge genau richtig macht: Es ist nicht zu teuer, es ist nicht an proprietäre Tools gebunden, es ist einfach anzufangen, es hat eine Menge Fähigkeiten und es hat eine große Benutzergemeinschaft , der weiter expandiert und ordentliche Sachen macht.
quelle
Ein wesentlicher Vorteil der ATmel-UCs ist, dass ein kostenloser Compiler für Linux, PC und Mac verfügbar ist. Dazu kommt eine einfache plattformübergreifende Benutzeroberfläche, und Sie haben ein kostenloses Entwicklungssystem, das auf allen Plattformen ausgeführt wird.
Die Kosten sind ein wichtiger Faktor für die Hobby-Boards. Da Sie einen Einstiegspreis im Bereich von 30 USD haben möchten, müssen Sie einen uC-Preis haben, der nicht mehr als ein paar USD beträgt.
ARM wäre ein hervorragender Kandidat für die oberen Boards. Viele Unternehmen lizenzieren den ARM-Core und fügen Peripheriegeräte hinzu. Ich glaube, es gibt kostenlose Compiler für Linux, PC und MAC.
Ich mag das Freescale Coldfire für High-End-Boards sehr. Ich habe an einem Board für Testgeräte mit einem 5206e gearbeitet. Wir haben einige DRAM- und hochgenaue A / D- und D / A-Wandler hinzugefügt. Es war eine kostengünstige Lösung. Ich habe Coldfire in letzter Zeit nicht mit der Vielzahl von ARMs verglichen.
Einige der 8-Bit-Freescale-UCs sind nett, aber ich bin nicht sicher, ob sie kostenlose Tools haben.
quelle
Ich stimme dem Dip-Paket zu, stimme nicht zu, dass es schwieriger ist, Waffen zu konfigurieren, aber sie sind nicht das einzige Kind auf dem Armblock (Atmel selbst für diese Angelegenheit). Soweit ich mich erinnere und erfahre, war und ist Atmel nur noch entwicklerfreundlicher. Der AVR-Schmetterling hat ihnen sehr geholfen, mehr Benutzer zu ihrer bereits großen und zufriedenen Benutzerbasis zu bringen. Der PIC war einfach in vielerlei Hinsicht schmerzhaft, die AVR-Tools waren da, die Programmierung war ein Kinderspiel und kostete Sie nicht viel mehr als einige Kabel und einen Stecker von Radio Shack. Die Tools sind da und kostenlos, aber nicht so einfach wie das Mainline-GCC, wo Sie die Arm- und Daumenlösungen finden. Lange bevor der Arduino herauskam, war der AVR der Chip der Wahl für Hobbyprojekte.
Im Moment kann nichts mit ARM mithalten. Für jeden anderen Prozessor, den Sie an einem Tag berühren, berühren Sie mindestens ein paar ARMs. Für fast alles, was Sie berühren, wird ein ARM verwendet. Es ist eine natürliche Passform für den 8-Bit-Killer, kann eine viel bessere Leistung als ein 8-Bit-Killer bei gleicher Größe, gleichem Preis usw. erzielen viel schneller usw. Da jeder und sein Bruder einen ARM einbetten können und dieser nicht an ein Unternehmen wie pic, avr, msp430 gebunden ist, gibt es eine Vielzahl von Lösungen und ebenso viele verschiedene Möglichkeiten, mit den Mikrocontroller-ROM / RAM-Gemischen umzugehen und die Interrupt-Vektortabelle. Leider ist die beliebtere Lösung die schmerzhafteste. Probieren Sie ein sam7 oder so ähnlich oder ein stellaris.
Es ist nicht immer der Prozessor, der das Problem ist, einige Chips haben bekannte Probleme, andere haben bekannte Probleme. Einige bieten möglicherweise keinen Open-Collector-Io-Pin mit einem schwachen Pull-Up an, und Sie müssten Hardware außerhalb des Chips platzieren, um eine Schnittstelle zu etwas herzustellen, bei dem bei einem anderen möglicherweise einer oder alle Pins verfügbar sind. Ich empfehle, das Feld zu testen und die verschiedenen Unternehmen und Lösungen auszuprobieren, damit Sie bei geringem Stromverbrauch problemlos einen msp430 verwenden können, die Rechenleistung in einem kleinen Chip haben möchten, den Sie sich leisten können oder ein offenes Projekt erstellen möchten, das Sie sich erhoffen Andere bauen in ihrer Garage, wenn Sie können, bauen Sie sie auf einem Arduino.
Das Fazit Ihrer Frage ist jedoch, dass es wirklich von Ihrer Anwendung und der Art und Weise abhängt, wie Sie sie schreiben, sowie von der Leistung und den Ressourcen, an denen Sie interessiert sind. Auf die gleiche Weise, wie gcc oder firefox auf vielen verschiedenen Plattformen und Prozessoren ausgeführt werden, können Sie dies mit Sicherheit Schreiben Sie Ihre C-Anwendung, um sie auf einer Vielzahl von Mikrocontrollern auszuführen ... IF... Sie haben eine mikrocontrollerspezifische Abstraktionsschicht, die Kosten verursacht. Wenn die Mikrocontroller über ausreichend ähnliche Funktionen verfügen und die Funktionen aufweisen, die Sie benötigen, planen Sie voraus und integrieren Sie diese. Wenn die nächste Plattform über genügend Arbeitsspeicher / Ressourcen verfügt. Sie interessieren sich mehr für Portabilität als für Leistung usw. Möglicherweise müssen Sie dies im Voraus planen. oder zumindest beim ersten Wechsel von A nach B entwerfen Sie die Software neu, wenn / wenn es einen dritten Wechsel von B nach C gibt, ist dies weniger schmerzhaft.
quelle
Ich weiß, dass Sie "anders als Kosten" gesagt haben, aber das ist wirklich das Wichtigste für Bastler. Sie benötigen nicht mehr als einen UART oder mehr als einen SPI für eine billige, generische Plattform. Sobald Sie anfangen, Geschwindigkeiten von> 20 MHz zu benötigen, sollten Sie sich wirklich ein benutzerdefiniertes Setup ansehen (ymmv natürlich).
quelle
Ein paar kleine Punkte, die in den anderen Kommentaren nicht angesprochen wurden:
Ein Arduino ist für kleine E / A-Projekte vorgesehen, bei denen einer Schaltung eine geringe Menge an Intelligenz hinzugefügt wird. Es handelt sich in der Regel um Single-Thread-Geräte in Echtzeit, bei denen ein ARM sehr verschwendet wird. Es gibt natürlich viele Optionen für ARM-Boards, aber der Anwendungsfall ist normalerweise anders - normalerweise booten sie in einem vollständigen Betriebssystem.
Durch die Ausrichtung auf diesen kleinen Anwendungsfall wird alles andere einfacher - Pin-Anzahl, Support-Komponenten, Stromverbrauch usw.
Das heißt, für den Zielanwendungsfall des Arduino ist es nicht so, als würdest du ihn verprügeln. Ein 16MHz Prozessor ist eine Menge Grunzgeräusch für Ihren Wecker mit integriertem LED Chaser (oder was auch immer :)
quelle
Arduino ist auf anderen Prozessoren verfügbar. Schauen Sie sich zum Beispiel das ChipKit von Microchip an. Das nutzt ein PIC 32.
quelle
Zweiter Versuch (der ursprüngliche Posttitel und die Frage von vor +3 Jahren wurden seit der ursprünglichen Antwort geändert):
Huhn und Ei, aber vor allem in den letzten Jahren (2007 hat ARM die Cortex-M-Architektur eingeführt) sind 32-Bit-MCUs immer beliebter geworden, und die Anbieter konnten der EE-Community einen schnelleren und einfacheren Zugang bieten, wenn sie in> 8-Bit-Versionen entworfen haben. Bit-Mikros (bessere SW-Tools, kostenlose Tools, mehr Beispiele ...).
Da Atmel zusammen mit 100 anderen auch Cortex-M-Geräte anbietet und seine Toolchain für die Unterstützung von AVR zu ARM aktualisiert hat, sowie die langjährige Beziehung, wird der Arduino-Aktualisierungspfad angegeben (?). Aber Alternativen tauchen auf und beinhalten anscheinend alternative Versuche, ihren Anteil am "Hobby-Kuchen" zu gewinnen: zB NXP / ARM und kürzlich "CoAction Hero": 32-Bit-Open-Source-ARM-Cortex-M3-Board auf KickStarter .
Letzter Gedanke, 3 Jahre nach der ersten Frage: Wenn alle Anbieter 32-Bit-Cortex-M-Kerne anbieten - könnte der Arduino nun tatsächlich zu einem Nicht-Atmel werden?
Originale Antwort: Alf-Egil Bogen, einer der Mitbegründer von Atmel AVR, gibt in seinem Videoblog hier http: //blog.energymicro einen Einblick in die Hintergründe für den Umstieg der Branche von 8-Bit- auf 32-Bit-ARM-Kerne . com / 2013/04/24 / avr2arm / .quelle