Tutorial Arduino programmieren,

Antworten
Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Das extra (SVN) war wohl nötig. Jetzt hat es auch geklappt.

Anscheinend hast du diesen Schritt unter Windows mal gemacht, ansonsten hätte Windows auch blöd getan.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Tutorial Arduino programmieren,

Beitrag von af0815 »

fpcupdeluxe kann unter Windows GIT und SVN laden, falls nicht im Pfad gefunden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

fpcupdeluxe kann unter Windows GIT und SVN laden, falls nicht im Pfad gefunden.

Heisst dies, unter Windows braucht es keine Installation von Subversion ?'
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Marc »

Nein in Windows hab ich nix spezielles unternommen.
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Nein in Windows hab ich nix spezielles unternommen.

So wie es scheint, braucht es Subversion unter Windows nicht, ich habe fpcupdelux gerade unter Win10 gestartet und da führt er SVN-Kommandos ohne Fehler aus.
Nur schläft das ganze ein, das es in der VB läuft.

Das es bei dir und af0815 ohne läuft, werde ich das Tutorial anpassen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Tutorial Arduino programmieren,

Beitrag von af0815 »

Bei WIndows wird schon seit FPCUP das so gemacht.
Siehe http://wiki.lazarus.freepascal.org/fpcup In der Wiki zu FPCUP steht eine Menge an Infos wenn man in den Einstellungen was für sich herrichten will.

Code: Alles auswählen

On Windows, it can also serve as a "bare metal" installer: it can download a subversion client, binutils (make.exe etc).


Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Dann werde ich mein Tutorial bei Gelegenheit anpassen. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Marc »

Ich würde mal sagen ich bin der Ahnungsloseste hier in der Runde. Wenn es hier funktioniert, funktioniert es überall. :-) :-)

Dumme Frage, was in den AVR muss ist schlussendlich das erzeugte *.bin File?
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Dumme Frage, was in den AVR muss ist schlussendlich das erzeugte *.bin File?

Das ist eine interessante Frage, Lazarus erzeugt eine elf, bin und hex.
An averdude übergibt man dann die hex, obwohl dies eine Zext-Datei ist.

Vielleicht kann da Timm Thaler helfen. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Tutorial Arduino programmieren,

Beitrag von kupferstecher »

Marc hat geschrieben:Dumme Frage, was in den AVR muss ist schlussendlich das erzeugte *.bin File?

Die .hex-Datei hat im Grunde den gleichen Inhalt wie die .bin-Datei, jedoch sind die Binärdaten in Ascii codiert in hexadezimaler Schreibweise dargestellt, d.h. in einem normalen Editor lesbar. Außerdem sind noch die Datenadressen drin, so kann die .hex-Datei z.B. bei Adresse 0x80 anfangen. Die .bin-Datei ist gar nicht codiert, die Binärdaten stehen direkt hintereinander beginnend mit der niedrigsten Adresse. Einige Programmer schlucken beide Formate, normalerweise verwendet man die .hex-Datei.

Zur .elf-Datei kann ich nichts sagen...

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Die .hex-Datei hat im Grunde den gleichen Inhalt wie die .bin-Datei, jedoch sind die Binärdaten in Ascii codiert in hexadezimaler Schreibweise dargestellt,

Dies habe ich fast vermutet.

Das Tutorial habe ich wegen Windows und SVN noch angepasst.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Marc
Lazarusforum e. V.
Beiträge: 208
Registriert: Fr 11. Nov 2016, 14:09
OS, Lazarus, FPC: Linux Mint 20 (WinXP VBox)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Marc »

Danke für die Bemühungen.
Ich habe mal zwei Atmega328 bestellt. Da kann ich dann mal probieren ob ich das Hex oder bin File in den AVR kriege.
Jugend forscht. :-)

Danke auch für das Tutorial, die Zeit muss mann sich ja erst mal nehmen.
Good code comes from experience, experience comes from bad code.

Mathias
Beiträge: 6160
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tutorial Arduino programmieren,

Beitrag von Mathias »

Ich habe mal zwei Atmega328 bestellt. Da kann ich dann mal probieren ob ich das Hex oder bin File in den AVR kriege.

Denke aber daran, das die Zeile mit averdude angepasst werden muss, ein Arduino wird anders angesteuert als ein nackter Atmega328.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Tutorial Arduino programmieren,

Beitrag von Timm Thaler »

Mathias hat geschrieben:Das ist eine interessante Frage, Lazarus erzeugt eine elf, bin und hex.
An averdude übergibt man dann die hex, obwohl dies eine Zext-Datei ist.

Vielleicht kann da Timm Thaler helfen. :wink:


Leicht. ;-)

Lazarus erzeugt die gar nicht. Lazarus kompiliert die einzelnen Pascal-Dateien Deines Projektes zu Assembler-Code. Das sind die *.s-Dateien. Diese werden dann den avr-embedded-exes aus den Binutils übergeben, die einen Linker und Assembler enthalten. Erst diese erzeugen dann den Maschinencode, wie sie es auch mit jedem selbstgeschriebenen Assembler-Code machen würden* (soweit ich das verstanden habe).

Die *.bin enthält den reinen Maschinencode, so wie er später im Controller stehen wird. Der hat aber den Nachteil auch Nullzeichen (0x00) oder Steuerzeichen enthalten zu können, quasi den ganzen Zeichenraum von 0x00 bis 0xFF. Das kann bei Übertragung oder beim Dateilesen Probleme machen, deswegen nimmt man den eigentlich nicht zum Programmieren. Wenn man die *.bin nicht braucht, kann man die Erzeugung auch unterdrücken bzw. wieder löschen lassen.

Die *.elf ist ein sogenanntes production file, welches neben dem Programmcode auch noch EEPROM-Inhalt und Fusebit-Konfiguration beinhaltet. Vorteil, man hat alles zusammen, Nachteil, manche Programmer können damit nichts anfangen.

Die *.hex ist ein uraltes universelles Format, welches schon die alten Römen zum Programmieren ihrer Katapulte verwendeten: https://de.wikipedia.org/wiki/Intel_HEX Großer Vorteil, es enthält den Maschinencode in Hex-Darstellung, daher keine Steuerzeichen die Ärger machen können, und es enthält Adressen und Checksummen. Nachteil, durch die Hex-Darstellung braucht es zwei Bytes pro Flashbyte, die Datei ist doppelt so groß. Die Hex-Daten werden vom Programmer wieder in Maschinenbytes zusammengefasst. Wenn euer Opa euch erzählt, wie er früher Maschinencode programmiert hat, dann hat er solche Hex-Zahlen in das Programmiergerät getippert.

Da die *.hex eigentlich** keine EEPROM-Daten enthält, bekommt man wenn man EEPROM-Konstanten ablegt (wobei ich noch nicht probiert habe wie das in Pascal geht) noch eine *.eep-Datei. Diese muss zusätzlich zur *.hex-Datei gebrannt werden.

*) Mit avr-embedded-objdump kann man sich übrigens aus einer *.bin oder *.hex wieder Assembler-Code machen, um zu überprüfen was da zusammenkompiliert wird - oder um mal zu gucken, was andere so machen. Dazu muss man allerdings bißchen Assembler verstehen.

**) Da beim AVR der EEPROM hinter dem Flash liegt, kann man EEPROM-Daten mit in das *.hex-File schreiben und an den AVR übertragen. Allerdings können a) nicht alle Programmer damit umgehen und b) wenn man mit einem Bootloader programmiert kann es passieren, dass man in den Bootloader hineinschreibt, bis er "abstürzt" (er überschreibt sich selber bis zur Funktionsunfähigkeit) - und dann isser tot.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Tutorial Arduino programmieren,

Beitrag von Timm Thaler »

Marc hat geschrieben:Ich habe mal zwei Atmega328 bestellt. Da kann ich dann mal probieren ob ich das Hex oder bin File in den AVR kriege.


Wenn Du noch kein Programmiergerät hast, und keine Lust hast einen überteuerten Arduino mit Bootloader zu kaufen, aber noch einen Windows-PC mit richtiger Hardware-RS232 oder sogar Parallelport, dann kannst Du auch mit Ponyprog und einem einfachen selbstgebauten Programmieradapter aus ein paar Widerständen den Code in den AVR brennen: http://www.lancos.com/prog.html Und ja, es kann auch Atmega328.

Antworten