Ich werde einen Kurs für eingebettete Systeme belegen, in dem wir den Atmega162 verwenden, und ich möchte damit beginnen, das Zeug zu lernen, bevor der Kurs beginnt. Jetzt ist meine Frage, wenn man bedenkt, dass es viele gute Ressourcen für Arduino und relativ knappe Ressourcen gibt für den Atmega162 und dass der Arduino viel weniger einschüchternd ist als der Atmega162, wäre es von Vorteil, wenn ich nur den Arduino lernen und dann etwas von diesem Wissen auf dem 162 anwenden würde?, oder haben die beiden Mikrocontroller signifikante Unterschiede, die das machen würden mit dieser Strategie ineffizient? Außerdem habe ich bereits Zugang zu einem Arduino Uno, aber ich werde wahrscheinlich keinen Zugang zu einem tatsächlichen Atmega162 bekommen, bis ich den Kurs beginne.
Der Arduino Uno hat einen Atmel ATmega328 an Bord, aber er kann durch einen 168 und ein paar andere ersetzt werden, wenn ich mich recht erinnere. Die Moral der Geschichte ist, dass alle Arduino-Boards Atmel-Mikrocontroller verwenden. Die Architektur der AVR-Reihe ist von Chip zu Chip nahezu identisch, teilweise bis hin zum Registerinhalt. Was Arduino für Bastler und Neulinge einfach macht, ist die Software.
In Ihrer Klasse lernen Sie wie ein Profi Mikros zu programmieren. In der Industrie ist dieser Arduino-Pseudocode nutzlos. Ich würde mich nicht mit Arduino beschäftigen, es sei denn, Sie haben ein Hobbyprojekt, bei dem Sie ein Mikro benötigen, und möchten nicht viel darüber nachdenken.
avrdude
). Die erzeugten .ino-Dateien sind Klartext. Ich bin sicher, Sie könnten es mit vim bearbeiten und avrdude manuell ausführen. Sobald Sie Ihre Firmware abgeschlossen haben, können Sie den Chip ohne den Arduino-Bootloader selbst mit diesem Code flashen (um die Startverzögerung und den Speicherverbrauch zu vermeiden). Auch hier fange ich gerade erst mit der Plattform an, aber das habe ich von arduino.cc gelesenprintf
arbeiten auf einem neuen Board im Atmel Studio.DigitalRead
und DigitalWrite
andere Funktionen sind komplett optional .Wenn Sie etwas tun möchten, das der Klasse näher kommt, können Sie die Arduino-Software installieren, um das Board zu testen, und dann lernen, wie Sie mit avr-gcc und avrdude Bare-Metal-Projekte kompilieren und laden, in denen Sie stattdessen den gesamten Code schreiben als die Funktionen der Arduino-Bibliothek zu verwenden.
Der Unterschied zwischen den beiden Chips wird von ziemlich begrenzter Bedeutung sein, obwohl es lehrreich sein könnte, die Datenblätter zu vergleichen und eine Liste der Unterschiede zu erstellen, die Sie finden.
Es besteht jedoch eine ziemlich hohe Wahrscheinlichkeit, dass Ihr Kurs nicht avr-gcc verwendet, sondern einen anderen Compiler und wahrscheinlich ein anderes Programmiertool. Außerdem wird es wahrscheinlich einen anderen Codierungsstil und vielleicht einige Makros für Chipregister geben, die anders sind als das, worauf Sie sich bei Ihrem Won festlegen. Sie werden also wahrscheinlich immer noch mit einem gewissen Übergang enden – aber von einer Art, die nützlich ist, um darüber nachzudenken, da das Lernen, zwischen diesen Umgebungsproblemen zu übersetzen, Ihnen in Zukunft mehr Flexibilität geben wird. Beispielsweise möchten Sie möglicherweise App-Note-Code nutzen, der einen anderen Compiler voraussetzt als den, den Sie letztendlich für ein Projekt verwenden. Oder Sie arbeiten seit einiger Zeit an einem Projekt, entscheiden, dass verschiedene Einschränkungen der von Ihnen verwendeten Toolchain nicht mehr tolerierbar sind, und möchten das Projekt in ein anderes verschieben.
Etwas späte Antwort, aber es könnte für jemanden interessant sein, der darüber stolpert. Es stimmt zwar, dass Arduino derzeit eine Sprache auf einem zu hohen Niveau ist, um wirklich professionell nützlich zu sein, obwohl es sicherlich Produkte von kleineren Unternehmen gibt, die heute mit einigen Arduino-basierten Teilen in ihnen auf den Markt kommen. Ich denke jedoch, dass sich dies ändern kann:
Ich bin eher im Software-Engineering zu Hause als im Embedded- und Elektronikdesign mit rund 20 Jahren Berufserfahrung im ersteren Bereich. Ich habe auf meinem C64 angefangen, Programmieren zu lernen, bin aber ziemlich schnell zu C und später auch zu C++ gekommen, da das damals die Standardsprachen waren, die man wirklich beherrschen musste. 1995 kam Java und ich war ein früher Adaptor. Die meisten Leute waren jedoch ziemlich skeptisch, eine verwaltete Sprache mit Garbage Collection und diesem hohen Abstraktionsgrad war sicherlich nichts anderes als ein Lehrmittel oder etwas, in dem man eine einfache Benutzeroberfläche oder so etwas bauen konnte, für echte Anwendungen brauchte man immer noch C++. Nun ja, heute sind Java und C# (die sich auf der gleichen Abstraktionsebene befinden) mit Abstand die dominierendsten Sprachen, insbesondere wenn es um Unternehmensanwendungen geht. Ja, es gibt immer noch Stellen, an denen C++ verwendet wird,
Warum ist das? Nun, technologische Fortschritte passieren in diesem Bereich schnell und können im Wesentlichen für vier Dinge verwendet werden: Hardware billiger zu machen, sie kleiner zu machen, sie schneller zu machen oder ihr zu ermöglichen, Aufgaben auszuführen, die früher nicht möglich waren. Bei Computern, sowohl PCs als auch Servern, ist kleiner nicht wirklich ein Problem, der einschränkende Faktor bei der Verkleinerung eines Laptops sind Batterien und die Tatsache, dass Sie einen Bildschirm nicht verkleinern müssen. Neue Aufgaben, dafür gibt es eigentlich keine Nachfrage, es sei denn, es ist etwas Spektakuläres. Hardware wurde also schneller und billiger. Gleichzeitig steigt die Nachfrage nach Programmierern stetig, was bedeutet, dass sie immer teurer werden, was zu der einfachen Tatsache in der Computersoftwareentwicklung von heute führt: Programmiererstunden sind teurer als RAM- und CPU-Zyklen, daher müssen Sie
Nun sind die Dinge für eingebettete Dinge leicht, aber nicht massiv anders, hauptsächlich in zwei Faktoren: Größe war immer noch ein Thema und ist es in einigen Anwendungen immer noch, und eingebettete Systeme sind oft Teile von Geräten und können daher nicht ohne weiteres aktualisiert oder geändert werden, können nicht davon profitieren von anderen Einheiten in einem Netzwerk, um Arbeit zu entladen usw. Was sie sind, wenn sie gebaut sind, werden sie bleiben, und sie müssen autark sein. Dieser letzte Teil ändert sich, da verschiedene Kommunikationsstacks für eingebettete Systeme verfügbarer werden. Diese Unterschiede sind jedoch nicht grundlegend, sondern führen nur dazu, dass die gleiche Entwicklung später stattfindet und nicht so schnell greift wie bei Computersoftware. Wir kommen an einen Punkt, an dem Sie die Rechenleistung eines durchschnittlichen Gaming-PCs vor 10 Jahren für 8 Dollar in der Größe einer Kreditkarte bekommen können, einschließlich Anschlussperipherie und sogar WLAN - wahrscheinlich werden wir in Kürze an einem Punkt sein, an dem für Embedded dasselbe gilt wie für Computersoftware: Engineering-Stunden sind teurer als Hardware, was bedeutet, dass sie immer mehr verdienen wird sinnvoll, höhere Abstraktionsebenen zu verwenden. Angesichts der Wahl, einen Atmel-Chip heute bei gleichen Kosten doppelt so schnell oder doppelt so klein zu machen, wäre es in den meisten Fällen sinnvoller, ihn schneller zu machen und diese Leistung dafür auszugeben, das Leben des Programmierers einfacher zu machen.
Nein, ich sage nicht, dass Arduino die Zukunft der Embedded-Entwicklung ist, ich denke, es hat zahlreiche Mängel, die es davon disqualifizieren werden. Ich glaube jedoch, dass sich ziemlich bald mehr Sprache auf hohem Niveau manifestieren wird und dies eine große Veränderung für die Branche sein wird.
Beifall
RTOSkit
Joshua Nozi
user_1818839
AndrejaKo
user_1818839