Warum verwendet Arduino AVR? Ich verstehe, dass sie der offizielle Prozessor sind, aber es gibt keinen anderen Grund, warum der Code nicht auf eine ARM- oder Freescale-Architektur portiert werden könnte, als die Kosten, oder? Solange es Onboard-Speicher gibt, dachte ich, dass es eine einfache Migration in diese Teile geben könnte.
Ich sehe viel ARM in der Industrie (scheint, dass jeder Anbieter einen in seine Designs drängt) und habe mich gefragt, warum es in der Arduino-Entwicklerwelt nicht mehr Akzeptanz gibt.
Interessiert sich überhaupt jemand dafür, was Sie entwickeln?
Ja und nein. Ich habe für ein bestimmtes Projekt auf dem AVR32 entwickelt, und die Entwicklungsumgebung (insbesondere der Kompilier-/Programm-/Debug-Zyklus) ist im Vergleich zu beispielsweise PIC32 schrecklich.
Den Kunden ist es egal, außer Kosten und Wartung, und im Falle eines Arduino-ähnlichen Systems wäre es den Programmierern egal, weil die Arduino-Umgebung und der Entwicklungszyklus sprunghaft besser sind als das aktuelle AVR32-Setup.
Ich frage mich nur, weil es in der Arduino-Familie so ein starkes Kontingent für AVRs gibt. Ich verstehe, dass sie der offizielle Prozessor sind, aber es gibt keinen anderen Grund, warum der Code nicht auf eine ARM- oder Freescale-Architektur portiert werden könnte, als die Kosten, oder? Solange es Onboard-Speicher gibt, dachte ich, dass es eine einfache Migration in diese Teile geben könnte.
Es gibt keinen Grund, warum kein anderer Prozessor verwendet werden könnte , aber es gibt einen sehr guten Grund, warum sie sich für ein Low-End-8-Bit-Gerät statt für ein ARM-, MIPS-, PowerPC- usw. Gerät entschieden haben: Benutzerfreundlichkeit.
Wenn Sie sich das Setup für die Low-End-Arme angesehen haben, ist es um eine Größenordnung komplexer (Speicherzuordnung, Caching usw.) als ein 8-Bit-Prozessor. Aber noch wichtiger - zu dieser Zeit gab es keine DIP-Arm-Prozessoren, und diese sollten von Künstlern und Hackern verwendet und gebaut werden, nicht unbedingt von Elektronikern und Ingenieuren, die sich sogar mit einem 48-Pin-TQFP wohlfühlen.
Der Grund, warum der AVR dem PIC vorgezogen wurde, ist, dass der PIC unter anderem nicht wirklich über einen weit verbreiteten, quelloffenen, kostenlosen C-Compiler verfügt (der SDCC-Port ist noch nicht ausgereift).
Ich sehe viel ARM in der Industrie (scheint, dass jeder Anbieter einen in seine Designs drängt) und habe mich gefragt, warum es in der Arduino-Entwicklerwelt nicht mehr Akzeptanz gibt. Gedanken?
Hauptsächlich liegt es an der Benutzerfreundlichkeit - Komplexität, einfaches Löten, Kosten und die Tatsache, dass es nicht viel Bedarf dafür gibt. Entwickler mögen die Idee, viel Leistung zu haben, aber am Ende des Tages, wenn Sie nur ein paar Servos bewegen und ein paar Lichter mit einer Low-End-FFT aufleuchten müssen, ist ein 8-Bit-Prozessor in Ordnung.
Sogar die Low-End-Cortex-ARMS, die in 28-Pin-Gehäusen herauskommen, sind immer noch SOIC, nicht DIP.
Der AVR hatte also alle richtigen Funktionen:
Im Großen und Ganzen stimmt das immer noch - ich kenne keinen ARM im Dip-Format, und die Adapter machen ihn deutlich teurer als den AVR. Die meisten Hersteller glauben nicht, dass ein 32-Bit-Prozessor im DIP-Gehäuse sehr profitabel sein wird.
Da Sie anscheinend nach Meinungen fragen, hier ist mein $0,02. Ob ich an einem ARM oder AVR arbeite, spielt eine Rolle (und daher ist es mir wichtig), hauptsächlich basierend darauf, was ich versuche zu tun. Es gibt Anwendungsfälle, in denen ein AVR sinnvoll ist, und es gibt solche, in denen ein ARM sinnvoll ist. Im Allgemeinen gibt es auch einen Kompromiss zwischen, sagen wir, AVR und PIC.
Zunächst einmal, obwohl ich wahrscheinlich Ärger bekommen werde, wenn ich das sage, ist das "starke Kontingent in der Arduino-Familie" so etwas wie eine lautstarke Minderheit. Die meisten Arduino-Leute (Benutzer), denen ich begegnet bin, sind die Art, die ihre Hardware lieber so behandeln würden, wie sie ein Python-Skript aufpeppen würden, um etwas Amüsantes zu tun, oft mit einem geringeren Verständnis der damit verbundenen Feinheiten als sie hätten, wenn sie "from numpy import foo" tun würden. Die Arduino-Methode hat zwar einige Vorzüge, aber auch viel Raum für Kritik.
Ich denke, es lohnt sich, sich neben dem Arduino-Ökosystem auch die AVRs anzusehen. 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 es zunehmend von PIC übernommen hat, noch bevor Arduino auftauchte. Die direkten Konkurrenten des AVR wären der PIC und bis zu einem gewissen Grad der MSP430, der an Zugkraft gewinnt, was größtenteils auf den starken Marketingschub von TI in Kombination mit seinen subventionierenden Tools zurückzuführen ist.
Wie bereits in anderen Antworten erwähnt, ist der AVR die einzige Familie, die mit kostenlosen Tools einen sauberen, standardisierten Weg bietet, um von Null auf Hallo Welt zu gelangen. Die avr-gcc-Portierung, die Teile, aus denen die winavr-Toolchain besteht, zahlreiche Programmierschemata mit unterschiedlicher Komplexität und Funktionen, die jedoch immer noch an die Autorität gebunden sind, die sich aus der Unterstützung durch avrdude ergibt, machen es viel einfacher, als sich mit der Ausarbeitung der Toolchain zu befassen.
Das Ökosystem des PIC ist ein Albtraum, mit einer beliebigen Anzahl von Compilern, Programmierwerkzeugen, Assemblern, was auch immer. Viele von ihnen sind nicht miteinander kompatibel. Die meisten von ihnen werden bezahlt. Nicht alle sind gut. Noch wichtiger ist, dass es keinen De-facto-Standard gibt. Die freien / Open-Source-Alternativen (z. B. SDCC) lassen viel zu wünschen übrig, haben es aber darüber hinaus nicht geschafft, den Status eines Defacto-Standards wie avr-gcc und company zu erlangen. Selbst wenn die Software-Toolchain ausgearbeitet wäre, müssten Sie zumindest in eine Art 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, hauptsächlich weil es neuer ist (zumindest in Bezug auf die Popularität) - Es gibt viel weniger Rauschen, mit dem man fertig werden muss. TI versendet IC-Muster mit einer 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 bastlerfreundlich ist wie der AVR. Sie haben immer noch das Problem des Programmierers, der teurer ist als das, was Sie für einen PIC kaufen müssten. Der 3,3-V-Versorgungsbetrieb stellt eine wahrgenommene Barriere für Menschen dar, die an 5-V-Logik gewöhnt sind. Und es skaliert nicht in DIP - Es sind Low-End-Chips verfügbar, aber nicht, wenn Sie die ausgefeilteren Chips erreichen.
DIP vs. SMD ist meines Erachtens eine wichtigere Unterscheidung, als oft angenommen wird. Ein DIP-IC kann auf Steckbrettern, Allzweckplatinen, wie auch immer sie in Ihrem Wohnort genannt werden, 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 bekommen sind.
Datenblattqualität, Anwendungshinweise und deren Lesbarkeit machen ebenfalls einen Unterschied. Atmel scheint das etwas besser zu machen. Das ist natürlich eine sehr subjektive Einschätzung.
AVRs können einen internen RC verwenden, während PICs dies oft nicht tun. Sie benötigen einen Kristall, was es in Kombination mit einem Mangel an Selbstvertrauen etwas heikel macht.
AVRs schienen vor ein paar Jahren auch freundlicher mit In-System-Programmierung im Vergleich zu PICs zu sein, obwohl ich mich dort sehr leicht irren könnte.
Ihre Frage hatte jedoch mit AVR vs ARM zu tun. Wie ich eingangs sagte, nehmen AVR und ARM unterschiedliche Plätze im Spektrum ein. Wenn Sie etwas mit einem AVR machen können, warum sollten Sie es dann mit einem ARM machen wollen? ARMs sind teurer, erfordern eine höhere Anzahl von Teilen, verbrauchen mehr Energie, erzeugen komplizierteren 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 Mengen produzieren und dafür freundliche Produktionstechniken verwenden, aber wenn Sie dies tun, wird der Preisunterschied noch überzeugender, sich für die billigere Lösung zu entscheiden.
Als Go-to-Controller für allgemeines Hacken im Haus oder was auch immer, würde ich sagen, dass AVRs einfacher zu bedienen sind, weil:
Die Waffenentwicklung schreitet voran - werfen Sie einen Blick auf die folgenden Projekte.
Und jetzt ein ARM in einem DIP-Paket.
Einer der Gründe für das große Interesse der Community am Arduino ist die physikalische Standardisierung. So verrückt das physische Layout auch ist, durch die Aufnahme einer standardisierten Erweiterungsoption ermöglichten die Arduino-Entwickler den Menschen, ihre eigenen Lösungen zu entwickeln. Wenn Sie das Basis-Arduino-Board durch ein anderes Board ersetzen möchten, das einen anderen Mikrocontroller verwendet, können Sie das tun. IIRC, jemand hat bereits ein PIC-basiertes Board gebaut, das den Arduino-Formfaktor verwendet. (Das PIC Ardunio-Board 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 das Board neu gestalten wollten, um es besser in einen bestimmten Raum einzupassen, hatten Sie Pech. Sie verwendeten benutzerdefinierte Firmware und proprietäre Entwicklungstools, sodass Sie Pech hatten, wenn Sie Fehler hatten oder die Funktionen erweitern wollten. Beim Arduino ist jedes einzelne Puzzleteil offen: Sie können Teile überall kaufen, sie nach Bedarf neu anordnen, die Firmware UND die Entwicklungstools verbessern oder modifizieren. Sie können einfach mit der Arduino IDE beginnen, aber Sie können immer noch zu C oder Assembly wechseln, wann immer Sie es brauchen.
Persönlich mag ich Arduino, weil es viele Dinge genau richtig macht: Es ist nicht zu teuer, es ist nicht an proprietäre Tools gebunden, es ist einfach zu starten, es hat viele Fähigkeiten und es hat eine große Benutzergemeinschaft , die weiter expandiert und ordentliche Sachen macht.
Ein großer Vorteil des ATmel uCs ist, dass es einen kostenlosen Compiler für Linux, PC und Mac gibt. Fügen Sie dazu eine einfache plattformübergreifende GUI hinzu und Sie haben ein kostenloses Entwicklungssystem, das auf allen Plattformen läuft.
Die Kosten sind ein wichtiger Faktor für die Bastlerboards. Da Sie einen Einstiegspreis im Bereich von 30 $ haben möchten, müssen Sie uC-Kosten haben, die nicht mehr als ein paar Dollar betragen.
ARM wäre ein ausgezeichneter Kandidat für High-End-Boards. Viele Unternehmen lizenzieren den ARM-Kern 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 arbeitete an einem Board für Testgeräte, die einen 5206e verwendeten. Wir haben etwas DRAM und hochpräzise A/D- und D/A-Wandler hinzugefügt. Es war eine kostengünstige Lösung. Ich habe Coldfire in letzter Zeit nicht mit der großen Auswahl an ARMs verglichen.
Einige der 8-Bit-Freescale-uCs sind nett, aber ich bin mir nicht sicher, ob sie kostenlose Tools haben.
Ich weiß, Sie haben "außer den Kosten" gesagt, aber das ist wirklich das Wichtigste für Bastler. Sie brauchen nicht mehr als einen UART oder mehr als einen SPI auf einer angeblich billigen, generischen Plattform. Sobald Sie anfangen, Geschwindigkeiten von> 20 MHz zu benötigen, sollten Sie sich wirklich ein benutzerdefiniertes Setup ansehen (ymmv natürlich).
Ich stimme dem Dip-Paket zu, stimme nicht zu, dass Arme schwieriger zu konfigurieren sind, lpcs sind es, aber sie sind nicht das einzige Kind auf dem Armblock (atmel selbst für diese Angelegenheit). Soweit ich mich erinnere und erlebt habe, war und ist Atmel einfach entwicklerfreundlicher. Der AVR-Schmetterling hat ihnen sehr geholfen, mehr Benutzer zu ihrer bereits großen und glücklichen Benutzerbasis zu machen. Der PIC war in vielerlei Hinsicht einfach schmerzhaft, die AVR-Tools waren da, die Programmierung war ein Kinderspiel und kostete Sie nicht viel mehr als ein paar Kabel und einen Stecker von Radio Shack. Die Tools sind da und kostenlos, aber nicht so einfach wie Mainline gcc, wo Sie die Arm- und Daumenlösungen finden. Lange bevor das Arduino auf den Markt kam, war der AVR der Chip der Wahl für Hobbyprojekte.
Nichts kann derzeit mit ARM mithalten. Für jeden anderen Prozessor, den Sie an einem Tag berühren, berühren Sie mindestens ein paar ARMs. Für einige verwendet fast alles, was Sie berühren, einen ARM. Es ist eine natürliche Passform, da der 8-Bit-Killer eine viel bessere Leistung als ein 8-Bit für die gleiche Größe, den gleichen Preis usw. erzielen kann. Die Tools sind viel besser, der Befehlssatz ist viel sauberer als die meisten seiner Konkurrenten, sodass derselbe Code ausgeführt wird viel schneller usw. Da jeder und sein Bruder einen ARM einbetten können und er nicht an eine Firma wie pic, avr, msp430 gebunden ist, gibt es eine Vielzahl von Lösungen und ebenso viele verschiedene Möglichkeiten, mit den Mikrocontroller-ROM/RAM-Mischungen umzugehen und die Unterbrechungsvektortabelle. Leider ist die beliebtere Lösung die schmerzhafteste. Versuchen Sie es mit einem sam7 oder so oder einem stellaris. Es gibt einen Armmite Pro, der ein Versuch ist, ein armbasiertes Arduino-Plugin zu erstellen.
Es ist nicht immer der Prozessor, der das Problem ist, einige Chips haben bekannte Probleme, einige haben andere bekannte Probleme. Einige bieten möglicherweise keinen Open-Collector-IO-Pin mit schwachem Pull-up an, und Sie müssten Hardware außerhalb des Chips platzieren, um eine Verbindung zu etwas herzustellen, während ein anderer dies möglicherweise an einem oder allen Pins verfügbar hat. Ich empfehle, das Feld zu testen und die verschiedenen Unternehmen und Lösungen auszuprobieren, damit Sie, wenn Sie einen geringen Stromverbrauch wünschen, problemlos einen msp430 verwenden können, wenn Sie Rechenleistung in einem kleinen Chip benötigen, den Sie mit dem Arm verwenden, oder wenn Sie ein offenes Projekt erstellen möchten, auf das Sie hoffen andere werden in ihrer Garage bauen, Sie stützen es auf ein Arduino, wenn Sie können.
Das Fazit Ihrer Frage ist jedoch, dass es wirklich von Ihrer Anwendung abhängt und wie Sie sie schreiben, sowie von der Leistung und den Ressourcen, an denen Sie interessiert sind. So wie gcc oder Firefox auf vielen verschiedenen Plattformen und Prozessoren ausgeführt werden, können Sie dies mit Sicherheit tun Schreiben Sie Ihre C-Anwendung so, dass sie auf einer Vielzahl von Mikrocontrollern läuft ... IF...Sie haben eine Mikrocontroller-spezifische Abstraktionsschicht, die mit Kosten verbunden ist. wenn die Mikrocontroller genügend ähnliche Funktionen und die Funktionen haben, die Sie benötigen, und Sie im Voraus planen und diese integrieren. Wenn die nächste Plattform über genügend Speicher/Ressourcen verfügt. Sie sind mehr an Portabilität als an Leistung usw. interessiert. Wahrscheinlich müssen Sie dies im Voraus planen. oder zumindest beim ersten Wechsel von A nach B gestalten Sie die Software neu, wenn/wenn es einen dritten Wechsel von B nach C gibt, ist es weniger schmerzhaft.
Ein paar kleine Punkte, die in den anderen Kommentaren nicht angesprochen wurden:
Ein Arduino ist für kleine E/A-Projekte gedacht, die einer Schaltung ein wenig Intelligenz hinzufügen. Sie sind in der Regel Single-Threaded-Echtzeitgeräte, bei denen ein ARM sehr verschwendet wäre. Es gibt natürlich viele Optionen für ARM-Boards, aber der Anwendungsfall ist normalerweise anders - normalerweise booten sie in ein vollwertiges Betriebssystem.
Durch die Ausrichtung auf diesen kleinen Anwendungsfall wird alles andere einfacher - Pin-Anzahl, unterstützende Komponenten, Stromverbrauch usw.
Das heißt, für den Zielanwendungsfall des Arduino ist es nicht so, als würden Sie es slumming. Ein 16-MHz-Prozessor ist eine Menge Grunzen für Ihren Wecker mit integriertem LED-Lauflicht (oder was auch immer :)
Arduino ist auf anderen Prozessoren verfügbar. Schauen Sie sich zum Beispiel das ChipKit von Microchip an. Das verwendet einen PIC 32.
Zweiter Versuch (der ursprüngliche Beitragstitel und die Frage von vor +3 Jahren wurden seit der ursprünglichen Antwort geändert):
Henne und Ei, aber besonders in den letzten Jahren (2007 führte ARM die Cortex-M-Architektur ein) sind 32-Bit-MCUs immer beliebter geworden, und Anbieter waren besser darin, der EE-Community einen schnelleren und einfacheren Zugang zu bieten, wenn sie in >8- bit micros (bessere SW-Tools, kostenlose Tools, mehr Beispiele...).
Da Atmel zusammen mit 100 anderen auch Cortex-M-Geräte anbietet und seine Toolchain aktualisiert hat, um AVR auf ARM zu unterstützen, sowie die langjährige Beziehung, ist der Arduino-Upgrade-Pfad gegeben (?). Aber Alternativen tauchen auf und scheinen alternative Versuche zu beinhalten, seinen Anteil am "Bastler"-Kuchen zu gewinnen: zB mbed by NXP/ARM und kürzlich "CoAction Hero": 32-Bit Open-Source ARM Cortex-M3 Board auf KickStarter .
Letzter Gedanke, 3 Jahre nach der anfänglichen Frage: Wenn alle Anbieter 32-Bit-Cortex-M-Kerne anbieten - könnte der Arduino jetzt tatsächlich Nicht-Atmel werden?
Ursprüngliche Antwort: Alf-Egil Bogen, einer der Mitbegründer von Atmel AVR, betrachtet in seinem Video-Blog hier http://blog.energymicro einige der Hintergründe für die Umstellung der Branche von 8-Bit- auf 32-Bit-ARM-Kerne. com/2013/04/24/avr2arm/ .
Kevin Vermeer
Rick_2047
Rick_2047
Doombot
Paul