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.
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 ;-)
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.
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.