Welche AVR werden von FPC unterstützt ?

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Ich wollte einen "Arduino Mega" testen. Da ist mir aufgefallen, das dieser -D zwingend braucht.
Ansonsten bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

...
Reading | ################################################## | 100% 0.01s
 
avrdude: Device signature = 0x1e9801 (probably m2560)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: stk500v2_command(): command failed
 
avrdude done.  Thank you.
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: Welche AVR werden von FPC unterstützt ?

Beitrag von Timm Thaler »

Mit welchem Programmer?

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Über den USB Anschluss des Megas.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Über den USB Anschluss des Megas.
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: Welche AVR werden von FPC unterstützt ?

Beitrag von Timm Thaler »

Achso, also über den internen Bootloader.

Und jetzt denken wir mal kurz und intensiv darüber nach was passiert, wenn der interne Bootloader ein "chip erase" ausführt.

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Und jetzt denken wir mal kurz und intensiv darüber nach was passiert, wenn der interne Bootloader ein "chip erase" ausführt.

Der Bootloader wird gelöscht.

Aber wieso ist das beim Mega so und beim Uno nicht ?
Bei Uno kommt einzig die Warnung " To disable this feature, specify the -D option.", wen ich -D weglasse.
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: Welche AVR werden von FPC unterstützt ?

Beitrag von Timm Thaler »

Mathias hat geschrieben:Der Bootloader wird gelöscht.

Aber wieso ist das beim Mega so und beim Uno nicht ?
Bei Uno kommt einzig die Warnung " To disable this feature, specify the -D option.", wen ich -D weglasse.


Beide Male bei Programmierung über den Bootloader?

Auch beim Programmieren mit Bootloader muss wie oben beschrieben der Flash vor dem Schreiben gelöscht werden. Allerdings nicht per Erase-Befehl (der den kompletten Flash löscht), sondern per Page-Erase durch den Bootlaoder selbst. Damit löscht der Bootloader Stück für Stück den Flash und beschreibt ihn neu. Damit kann er sich auch selbst löschen, aber meist ist das nicht erwünscht.

Ein Erase-Befehl vor dem Schreiben ist beim Programmieren über Bootloader nicht sinnvoll.

Ich kann es nicht nachvollziehen, weil ich die Boards nicht habe, aber ich vermute, dass der Uno-Booloader den Erase-Befehl einfach verwirft, während der Mega-Bootloader zurückmeldet "ungültiger Befehl", und Avrdude das als Fehler auffasst.

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: Welche AVR werden von FPC unterstützt ?

Beitrag von Timm Thaler »

Achso, und da der gut abgehangene Avrdude annimmt da hängt ein STK500 Board mit ISP-Schnittstelle dran, und nicht weiss, dass über einen Bootloader programmiert wird, weil dieser sich wie ein STK500 meldet - versucht er es halt wie einen ISP Programmer zu behandeln.

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Ich kann es nicht nachvollziehen, weil ich die Boards nicht habe, aber ich vermute...

Mit dem Arduino Nano der gleiche Effekt, wie mit dem UNO.

Achso, und da der gut abgehangene Avrdude annimmt da hängt ein STK500 Board mit ISP-Schnittstelle dran, und nicht weiss, dass über einen Bootloader programmiert wird, weil dieser sich wie ein STK500 meldet - versucht er es halt wie einen ISP Programmer zu behandeln.

Wie kommst du auf den STK500 ?
Wen ich die Arduino UNO und Nano über USB flahshe, wird averdude mit -carduino aufgerufen. Der Mega mit -cwiring.
-cstk500v1 verwende ich, wen ich die Arduinos über ISP flashe, mit einem Eigenbau Programer, welcher man mit einem 2. Arduino bauen kann..

Oder verwechsle ich jetzt etwas ?

So nebenbei, konnte ich bei den Arduinos einen neuen Bootloader nur via SPI neu brennen, über USB ging es nicht.
Getestet mit der Arduino IDE.

Bei meinem AVR-Plugin, kann man mit einer CheckBox wählen, ob man -D will.
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: Welche AVR werden von FPC unterstützt ?

Beitrag von Timm Thaler »

Mathias hat geschrieben:Wie kommst du auf den STK500 ?


Weil das da oben als Zielplattform in Deiner Fehlermeldung steht:

avrdude: stk500v2_command(): command failed


Mathias hat geschrieben:So nebenbei, konnte ich bei den Arduinos einen neuen Bootloader nur via SPI neu brennen, über USB ging es nicht.


Ja klar, weil USB Programmierung über den Bootloader läuft. Der kann sich zwar selber löschen, aber nicht selber neu schreiben. Dann müsste er ja Teile seines gerade laufenden Programms neu beschreiben.

Der ISP Programmer - also der Teil im AVR Controller - dagegen ist Hardware, die funktioniert unabhängig davon was im Flash passiert.

FPK
Beiträge: 65
Registriert: Mi 21. Mai 2008, 19:38
Wohnort: Erlangen

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von FPK »

Mathias hat geschrieben:Brauchen tu ich solche Dinger nicht. Ich brauche es für meine Lazarus IDE Erweiterung, da muss ich wissen, was unterstützt wird.


Ich würde vorschlagen, dazu die Ausgabe von fpc -Pavr -i zu parsen.

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Timm Thaler hat geschrieben:
Mathias hat geschrieben:Wie kommst du auf den STK500 ?


Weil das da oben als Zielplattform in Deiner Fehlermeldung steht:

avrdude: stk500v2_command(): command failed

Irgendwie komisch, der Mega ist mit einem CH340 bestückt. Was hat der mit stk500v2 zu tun ?

Einen Nano mit CH340 wird mit "AVRISP mkII" beschrieben und nicht mit einem stk500v2.
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: Welche AVR werden von FPC unterstützt ?

Beitrag von Timm Thaler »

Mathias hat geschrieben:Einen Nano mit CH340 wird mit "AVRISP mkII" beschrieben und nicht mit einem stk500v2.


CH340 ist ja nur der USB-seriell-Wandler.

Mein MKII bringt auch eine Meldung stk500v2_command..., weil es den Befehlssatz des ursprünglichen stk500 verwendet.

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

Re: Welche AVR werden von FPC unterstützt ?

Beitrag von Mathias »

Timm Thaler hat geschrieben:Nein, ATtiny11, ATtiny15, AT90S1200 und so nicht. Alles was keinen RAM hat und damit keinen Stack ermöglicht geht in Freepascal nicht - und auch nicht in C, es wird nur Assembler unterstützt:

https://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html

Und ich würde mit solchen alten Möhren auch nicht mehr anfangen, hab die schon vor Jahren aussortiert.

So wie es aussieht, muss ich dir da wiedersprechen.
Zufällig habe ich folgende Zeilen in der neusten xxx/fpcsrc/rtl/embedded/Makefile entdeckt:

Code: Alles auswählen

...
ifeq ($(ARCH),avr)
CPU_SPECIFIC_COMMON_UNITS=intrinsics
ifeq ($(SUBARCH),avrtiny)
CPU_UNITS=attiny4 attiny5 attiny9 attiny10 attiny20 attiny40 attiny102 attiny104
CPU_UNITS_DEFINED=1
endif
ifeq ($(SUBARCH),avr1)
CPU_UNITS=attiny11 attiny12 attiny15 attiny28
CPU_UNITS_DEFINED=1
endif
ifeq ($(SUBARCH),avr2)
CPU_UNITS=attiny26
CPU_UNITS_DEFINED=1
endif
ifeq ($(SUBARCH),avr25)
CPU_UNITS=attiny13 attiny13a attiny24 attiny24a attiny25 attiny43u \
     attiny44 attiny44a attiny45 attiny48 attiny84a attiny84 attiny85 \
     attiny87 attiny88 attiny261 attiny261a attiny441 attiny461 attiny461a attiny828 \
     attiny841 attiny861 attiny861a attiny2313 attiny2313a attiny4313
CPU_UNITS_DEFINED=1
...


Auch hat es eine .../fpcsrc/rtl/embedded/avr/attiny10.pp gegeben.

So wie es scheint, wird fpc mehr unterstützen als C++. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten