Für mein Unternehmen in der Mikroverarbeitung habe ich mich aufgrund der enormen verfügbaren Ressourcen für Atmel AVR entschieden. Die Arduino scheinen auch viel zu haben, ganz zu schweigen davon, dass ihre Starter-Kits auf meiner Ebene eher “ zu sein scheinen. “
Das Problem ist, dass ich es zuerst in der Assembly lernen und dann zu C / C ++ oder was auch immer Arduino verwendet, gehen möchte, aber ich habe gehört, dass Arduino keine AVR-Assembly nimmt. Ist das wahr? Gibt es einen Weg, um das zu umgehen?
Bearbeiten: Ich würde mit dem ATMEL STK500 gehen, aber für einen ersten Timer sieht es SEHR kompliziert aus. Gibt es einen Grund, warum ich nicht einfach einen 8-Bit-AVR bekommen und ihn auf ein Steckbrett legen und auf diese Weise experimentieren kann? (Ich denke, ich müsste herausfinden, wie ich sie als solche verbinden kann.)
Edit2: Dies ist, was ich dachte
http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193
Kommentare
- Wie läuft es? Welche Lösung haben Sie in Betracht gezogen? Ich habe Arduino Uo gekauft und nach einer Möglichkeit gesucht, mich auch im Assembler zu entwickeln.
- Ich würde vorschlagen, den Controller 89c51 (8051) für die Assemblersprache
zu verwenden Antwort
Die Arduino-Karten können in der Baugruppe programmiert werden. Sie benötigen lediglich ein ICSP-Kabel (In Circuit Serial Programmer) und die AVR-Toolchain (frei von ATMEL), um auf die Karte zu schreiben. Sie haben dann den Vorteil des Debuggens an Bord.
Wie Sie vorgeschlagen haben, können Sie einfach einen ATMEL-Chip auf ein Steckbrett klopfen und in die Stadt gehen.
Das Kit, auf das Sie verwiesen haben, sieht aus wie ein guter Ausgangspunkt. Sie können den Chip direkt vom Board nehmen und auf Ihr eigenes Steckbrett kleben (sofern die Leistung korrekt geregelt ist und Sie die Uhr berücksichtigen).
EDIT: Anscheinend benötigen Sie zum Laden von Assembly-Programmen kein ICSP. Weitere Informationen finden Sie im Kommentar unten.
Kommentare
- Ya I ‚ Ich möchte mich gerne daran halten, es jetzt nicht auf mein eigenes Steckbrett zu legen lol Ich bin nicht so toll mit Schaltungen.
- @Sauron – hah – so oder so ist gut. Was auch immer Sie süchtig macht! Das Gute ist, dass die einzelnen Chips ziemlich billig sind (ein paar Dollar oder so).
- Diese Antwort ist im Wesentlichen irreführend: KEIN ISP WIRD BENÖTIGT . Der von Arduino verwendete Bootloader ist älter als das Arduino-Projekt und hat keinerlei Ahnung, ob die zu ladende Datei von einem Compiler oder einem Assembler stammt. Bitte keine ‚ t das Missverständnis, dass der Bootloader in einem Arduino ist, nicht aufrechtzuerhalten hat etwas mit der Methode zu tun, Programme zu schreiben, die auf die Hardware abzielen; Es ist einfach ein praktischer Mechanismus, um Code beliebigen Ursprungs in den Chip zu bekommen.
- @ChrisStratton – danke für Ihr Feedback. Ich ‚ habe meine Antwort aktualisiert, um Ihr Feedback aufzunehmen.
Antwort
Die Arduino-IDE kann „fixiert“ werden, um den Assembly-Code aufzunehmen. Hier ist das Wiki: http://www.cs.nmsu.edu/~jcook/arduino/index.php?n=Notes.AssemblyMods
Kommentare
- Die URL scheint defekt zu sein.
Antwort
Soweit ich weiß, sollte dies der Fall sein Der Arduino-Bootloader enthält keine spezifischen Informationen, die Sie daran hindern könnten, Assembly anstelle von C zu verwenden. Die Arduino-IDE erschwert möglicherweise das Hochladen eigener .hex-Dateien, sieht jedoch wie der Arduino-Bootloader aus ist STK500-kompatibel , daher sollten Sie es mit avrdude verwenden können.
Kommentare
- Ja, eigentlich die Arduino IDE selbst verwendet avrdude, um den Upload durchzuführen.
Antwort
Überhaupt nicht schwierig.
http://www.dwelch.com/arduino/
Sie müssen sich ansehen, ich denke ser.c auf meiner Seite, um auszuwählen welche Karte. Einige verwenden standardmäßig unterschiedliche Geschwindigkeiten der seriellen Schnittstelle und unterschiedliche Rücksetzschemata, um in den Programmiermodus zu gelangen. Wenn Sie sich die Arduino-Firmware ansehen, werden Sie feststellen, dass kaum einer der avr-Programmierbefehle wirklich unterstützt wird. Brauche sie sowieso nicht wirklich.
Antwort
Das Arduino kann mit Assembler unter Verwendung des GCC-AVR Inline Assembler programmiert werden. Überprüfen Sie diesen Link auf GCC-AVR Inline Assembler-Kochbuch
http://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf
Antwort
Arduino-Karten (jedenfalls Uno und Duemilanove) verfügen über einen Standard-AVR-Programmieranschluss, der von Atmel-Programmierern und Debuggern über AVR Studio unterstützt wird. Studio unterstützt Assembler und C. Ein geeigneter Programmierer ist der AVRISP MkII, und der AVR Dragon bietet sowohl Programmierung als auch Debugging. Letzteres würde ich bekommen, es ist mit 50 Dollar teurer, aber die Debugging-Funktion ist von unschätzbarem Wert. Sie können diese Tools auch mit einem Standard-AVR-Chip (nicht Arduino) verwenden, der an ein Steckbrett oder eine Leiterplatte angeschlossen ist.
Kommentare
- Während ‚ wahr ist, dass sie einen ICSP-Header haben, gibt es ‚ muss nicht verwendet werden. Der Bootloader funktioniert mit allen Mitteln der Programmautorschaft gleich gut, und tatsächlich stützt sich sogar die Arduino-IDE auf das bereits vorhandene Befehlszeilenprogramm
avrdude
, um den Bootloader zu betreiben.
Antwort
Das Arduino besteht aus zwei Teilen: der Hardware und der IDE. Die IDE beschränkt Sie hauptsächlich (wenn nicht vollständig) auf C und C ++ (mit etwas syntaktischem Zucker, den die Entwickler verwendet haben, um es ein wenig mehr wie Processing / Java zu machen). Es besteht die Möglichkeit, dass die IDE .s- oder .S-Dateien im selben Verzeichnis wie eine Standardskizze (.pde) erkennt, aber ich würde meinen Hut nicht daran hängen.
Es gibt nichts Das Besondere an der Hardware. Es ist ein schönes, freundliches Board mit vielen raffinierten Funktionen, die µC-Neulinge zu schätzen wissen. Wenn Sie den AVR jedoch nur über den ISP-Header programmieren möchten, können Sie dies auch tun. Sie benötigen so etwas wie das Atmel AVRISP mkII oder einen anderen Programmierer, der mit dem 2×3-Zeilenanschluss auf der Arduino-Platine arbeitet. Suchen Sie nach solchen, die mit kompatibel sind das avrdude-Programm, mit dem Sie Ihre Anwendungen hochladen. Halten Sie sich von Adafruits USBtinyISP fern; ich hatte schreckliches Glück damit und kaufte den Atmel, den ich für weniger als 40 US-Dollar bei Mouser verlinkt hatte.
Kommentare
- Seltsam, ich ‚ habe nur gute Erfahrungen mit der Atmel-IDE und dem usbtiny gemacht. Auch Buspirate wird als ISP für viele verschiedene Plattformen dienen, tolles kleines Tool
- Da ‚ kein ICSP-Adapter erforderlich ist, funktioniert der Bootloader problemlos mit allen Mitteln der Programmautorschaft
Antwort
Der Aruduino kann absolut in der Baugruppe programmiert werden. Und Sie brauchen dazu nicht einmal ein ICSP-Kabel!
Okay, fairerweise ist dies nicht dasselbe wie das Programmieren in reiner Montage von Grund auf.
Sie können jedoch eine Inline-Assembly in C einbinden. Dies bedeutet, dass Sie Code auf Ihr Arduino laden können, das über eine Inline-Assembly verfügt, die dann ausgeführt wird. Betrachten Sie die TVOut-Bibliothek , wodurch der Arduino NTSC / PAL auf einem Fernseher ausgeben kann.
Diese Bibliothek ist sehr zeitkritisch (da sie auf einem Fernseher ausgegeben wird, muss jede Scanlinie rechts geschrieben werden Zeit.) Daher wird die Inline-Assembly verwendet, um den Prozess zu beschleunigen. In Zeile 89 dieser Datei aus der Bibliothek verwendet der Autor einige der Assembly-Makros , die er geschrieben hat.
Nun. Ich vermute, dass er sie nicht mit der Standard-Arduino-IDE geschrieben hat. Diese Bibliothek ruft jedoch seine Inline auf ASM-Code, den jeder über seine Schnittstelle importieren, kompilieren und ausführen kann.
Viel Glück!
Comm ents
- Tatsächlich können Sie auch Assembly-Quelldateien erstellen. Sie müssen lediglich die Arduino-IDE überspringen und mit den Back-End-Tools wie avr-gcc (oder was auch immer Sie interagieren) interagieren als Assembler verwenden) und direkt avrdude.
Antwort
Ich verwende Linux als meine Host-Plattform, aber ich Ich denke, diese Tools sind auch für Windows-Varianten verfügbar.
Ich verwende “ avra “ für die Assembly zum Hex-Code Konverter (Compiler)
Dann programmiere ich den Chip mit einem USBTiny-Programmierer und dem Programmierwerkzeug “ avrdude „.
Ich glaube, beide Tools sind Open Source.