Hallo zusammen, ich möchte meine AVR Mikrocontroller in Assembler programmieren. Das ganze aber über ein Raspberry Pi 3. Kann mir da jemand weiterhelfen? 1. Variante: Ich installiere Windows 10 IoT Core - also ein abgespecktes Windows 10 - auf dem Pi. Anschließend installiere ich Atmel Studio und richte mir einen virtuellen USB COM Port ein, um mittels Programmer die .hex-files in den Atmega zu laden. Ich bin allerdings nicht sicher, ob ich Atmel Studio auf dem Pi zum Laufen bringe... 2. Variante: Ich installiere eine Linux Distribution, erstelle meinen Assembler Code als Text-Datei und kompeliere ihn zu einem Hex-File, dass ich dann über einen virtuellen COM Port mittels Programmer in den Atmega übertrage. Gibt es hierfür Compiler? Ich habe bisher nur mit Atmel Studio gearbeitet und das generiert mir ja automatisch das .hex-File. Was haltet Ihr von den Ansätzen? Ist das überhaupt möglich? Viele Grüße Christoph
Ob das Atmel-Studio auf einem abgespeckten Windows 10 läuft, kann ich nicht sagen. Für die Linux-Distributionen Raspbian und Arch (wahrscheinlich auch für andere) gibt es die fertigen Pakete avr-binutils und avrdude. Damit kannst du in Assembler programmieren und die Programme auf einen AVR überspielen. Falls du auch in C programmieren möchtest, gibt es zusätzlich avr-gcc und avr-libc.
:
Bearbeitet durch Moderator
Schau mal im Wiki nach Raspberry Pi als Universalprogrammer, dort ist beschrieben wie man über die GPIO's AVR's programmiert. Gcc-aver solltes es auch für den RasPi geben.
Christoph schrieb: > Was haltet Ihr von den Ansätzen? Ist das überhaupt möglich? Ansatz 1 kann und wird aus verschiedenen Gründen niemals funktionieren. Ansatz 2 geht relativ problemlos. Wie schon erwähnt brauchst du avrdude und gcc-avr. Make ist bei allen Linux Distributionen bereits dabei. Als Editor würde ich es mit Geany versuchen. Dafür gibt es auch ein Plugin für das Syntax-Highlighting von AVR-Assembler: http://triggetry.blogspot.de/2013/03/linux-add-avr-assembly-s-syntax.html Wenn du Raspbian installiert hast kannst du mit
1 | sudo apt-get install avrdude gcc-avr geany |
deine "IDE" aufsetzen. Dort kannst du dann dein Projekt ganz einfach über ein Makefile bauen lassen. Anleitungen dazu gibts hier auf Mikrocontroller.net, z.B. https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Exkurs_Makefiles . Die Abwicklung über Makefiles hat zudem den Vorteil, dass es nicht nur in irgendeiner XYZ-Studio IDE läuft sondern wirklich in jedem Texteditor der den Aufruf eines externen Programms (in dem Fall "make") erlaubt und das sind sehr viele.
Yalu X. schrieb: > Ob das Atmel-Studio auf einem abgespeckten Windows 10 läuft, kann ich > nicht sagen. Wird es mit sehr großer Wahrscheinlichkeit nicht - das Atmel-Studio ist kein Arm-Binary, sondern setzt ein auf x86/x64 laufendes Windows voraus.
Rufus Τ. F. schrieb: > Yalu X. schrieb: >> Ob das Atmel-Studio auf einem abgespeckten Windows 10 läuft, kann ich >> nicht sagen. > > Wird es mit sehr großer Wahrscheinlichkeit nicht - das Atmel-Studio > ist kein Arm-Binary, sondern setzt ein auf x86/x64 laufendes Windows > voraus. Wo du recht hast, hast du recht. Auf den Gedanken bin ich nicht gekommen ;-)
Vielen Dank soweit. Morgen starte ich mit dem Projekt und schaue mal wie weit ich komme.
Mit Tricks bekommt man Windows-Programme auf dem Raspberry zum Laufen, aber ziemlich langsam: https://github.com/AlbrechtL/RPi-QEMU-x86-wine Das angebotene SD-Card-Image ist allerdings schon etwas älter. Und ob das Atmel Studio unter Wine läuft weiss ich nicht.
:
Bearbeitet durch User
Hallo zusammen. Der aktuelle Stand sieht so aus: + Raspberry Pi 3 läuft + Raspbian installiert + AVR Dude installiert + AVRA installiert + gcc-avr installiert + geany war bereits installiert Ich haben nun ein erstes Assembler programm mit Geany geschrieben:
1 | .include "m32def.inc" |
2 | ldi r16, 0xFF |
3 | out DDRA, r16 |
4 | ldi r16, 0b01010101 |
5 | out PORTA, r16 |
6 | ende: rjmp ende |
Ich habe die Datei als "helloworld01.asm" abgespeichert. Mit "avra helloworld01.asm" wollte ich assembilieren und erhalte die Fehlermeldung das die m32def.inc nicht gefunden wird. Ich habe die Datei dann ins gleiche Verzeichnis kopiert. Jetzt wird sie gefunden. Ich erhalte aber folgende Fehlermeldung: pi@raspberrypi:~/avr $ avra helloworld01.asm AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010) Copyright (C) 1998-2010. Check out README file for more info AVRA is an open source assembler for Atmel AVR microcontroller family It can be used as a replacement of 'AVRASM32.EXE' the original assembler shipped with AVR Studio. We do not guarantee full compatibility for avra. AVRA comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of avra under the terms of the GNU General Public License. For more information about these matters, see the files named COPYING. Pass 1... m32def.inc(44) : PRAGMA directives currently ignored m32def.inc(48) : PRAGMA directives currently ignored m32def.inc(53) : PRAGMA directives currently ignored m32def.inc(416) : Error : Line to long m32def.inc: Success Kann mir jemand weiterhelfen? Mein Ziel ist eine .hex zu generieren. Vielen Dank und Grüße, Christoph
Hi > AVRA is an open source assembler for Atmel AVR microcontroller family > It can be used as a replacement of 'AVRASM32.EXE' the original > assembler Deine Fehlermeldungen >m32def.inc(44) : PRAGMA directives currently ignored >m32def.inc(48) : PRAGMA directives currently ignored >m32def.inc(53) : PRAGMA directives currently ignore gehören aber zu einer .inc-Datei für den Assembler2 (avrasm2.exe) und nicht zum 'AVRASM32.EXE'. Der kennt keine PRAGMA Preprozessor Directiven. >AVRA: advanced AVR macro assembler Version 1.3.0 Build 1 (8 May 2010) Das ist auch nicht unbedingt die frischeste Version. Oder wurde mit AVRA 2010 aufgehört? MfG Spess
Hi >Das ist auch nicht unbedingt die frischeste Version. Oder wurde mit AVRA >2010 aufgehört? Gerade mal nachgesehen: Das ist wirklich die letzte AVRA-Version. Dann must du die .inc-Files z.B. vom 4er Studio, Ordner AVRASSEMBLER/APPNOTES verwenden. Da ist die Auswahl an AVRs aber sehr übersichtlich. MfG Spess
Christoph schrieb: > m32def.inc(44) : PRAGMA directives currently ignored > m32def.inc(48) : PRAGMA directives currently ignored > m32def.inc(53) : PRAGMA directives currently ignored Die Pragma-Warnungen kannst du wahrscheinlich ignorieren. > m32def.inc(416) : Error : Line to long Diese Meldung kommt, wenn eine Zeile länger als 256 Zeichen ist. In m32def.inc von hier https://raw.githubusercontent.com/DarkSector/AVR/master/asm/include/m32def.inc ist die Zeile 416 nicht zu lang, und ich kann darin auch sonst nichts Auffälliges erkennen:
1 | .equ ADIF = 4 ; ADC Interrupt Flag |
Schau mal nach, ob dein m32def.def vielleicht verkrüppelt ist. Bei mir erzeugt Avra 1.3.0 zusammen mit dem verlinkten m32def.inc aus dem folgenden Testprogramm nach der Ausgabe von 7 Pragma-Warnungen eine korrekte Hex-Datei. Source:
1 | .include "m32def.inc" |
2 | |
3 | ldi r16,0xff |
4 | out DDRA,r16 |
5 | clr r16 |
6 | loop: |
7 | out PORTA,r16 |
8 | inc r16 |
9 | rjmp loop |
List:
1 | ... |
2 | C:000000 ef0f ldi r16,0xff |
3 | C:000001 bb0a out DDRA,r16 |
4 | C:000002 2700 clr r16 |
5 | loop: |
6 | C:000003 bb0b out PORTA,r16 |
7 | C:000004 9503 inc r16 |
8 | C:000005 cffd rjmp loop |
9 | |
10 | |
11 | Segment usage: |
12 | Code : 6 words (12 bytes) |
13 | Data : 0 bytes |
14 | EEPROM : 0 bytes |
15 | |
16 | Assembly completed with no errors. |
Hex:
1 | :020000020000FC |
2 | :0C0000000FEF0ABB00270BBB0395FDCFE0 |
3 | :00000001FF |
> m32def.inc: Success
Das wird bei mir nur dann angezeigt, wenn ich absichtlich eine zu lange
Codezeile einbaue :)
Christoph schrieb: > 1. Variante: Ich installiere Windows 10 IoT Core - also ein abgespecktes > Windows 10 - auf dem Pi. Anschließend installiere ich Atmel Studio und > richte mir einen virtuellen USB COM Port ein, um mittels Programmer die > .hex-files in den Atmega zu laden. Ich bin allerdings nicht sicher, ob > ich Atmel Studio auf dem Pi zum Laufen bringe... Du darfst Windows 10 IoT nicht mit einem normalen Windows vergleichen, da gibt es nichtmal eine Benutzeroberfläche. Das kannst du nur Remote bedienen.
Was mich umtreibt, wozu will man sowas überhaupt machen? Ich sehe da keine Vorteile an ner losen Platine, wo ich erst Netzteil, HDD, LCD, KBD, Mouse ranpappen muß und dann aufpassen, daß mir der Drahtverhau nicht vom Tisch fällt. Wenn ich programmiere, dann setze ich mich bequem an meinen 2-Schirm PC. Beim Programmieren kann mir die Bildfläche nicht groß genug sein. Neben der IDE möchte man oft noch ein paar PDFs (Datenblätter) sehen oder googlen. Bzw. ich hab dann oft noch den Schaltplan im Altium offen, damit man sehen kann, wo man Signale antasten muß, falls das Programm nicht das Gewünschte auf Anhieb macht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.