AVR mit Lazarus OHNE Embedded

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

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Mathias »

Da der DIAMEX-AVR von avrdude unterstütz wird, müsste es mit Lazarus gehen.

https://www.diamex.de/dxshop/DIAMEX-USB ... k-fuer-AVR
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

Mathias hat geschrieben:
Di 22. Dez 2020, 20:13
Da der DIAMEX-AVR von avrdude unterstütz wird, müsste es mit Lazarus gehen.

https://www.diamex.de/dxshop/DIAMEX-USB ... k-fuer-AVR
will ich wohl meinen, das ich damit unter Lazarus keine Probleme bekommen werde.
Vorerst werde ich die noch via Console Brennen und im späteren Verlauf mal schauen, das ich diesen Direkt einbaue. :D

bin auch gerade dabei, meine erste IO zu schreiben inkl, aller Constanten, Variablen, welche ich brauche, und komme nach und nach auf einige Fehlermelduungen, welche wohl NICHT erfasst wurden. :(

Nachdem ich das Thema mit den Units und Includes soweit vom Zettel bekomme, lande ich gerade hier bei dieser Meldung.

Code: Alles auswählen

Projekt kompilieren, Modus: avr-embedded, OS: embedded, CPU: avr, Ziel: SerCom: Exit code 1, Fehler: 1, Hinweise: 4
Hint: Start of reading config file /home/pi/fpcupdeluxe/fpc/bin/i386-linux/fpc.cfg
Hint: End of reading config file /home/pi/fpcupdeluxe/fpc/bin/i386-linux/fpc.cfg
Verbose: Free Pascal Compiler version 3.2.0-r45643 [2020/12/22] for avr
Verbose: Copyright (c) 1993-2020 by Florian Klaempfl and others
Verbose: Target OS: Embedded
Verbose: Compiling SerCom.lpr
Verbose: Compiling /home/pi/fpcupdeluxe/fpcsrc/rtl/inc/lnfodwrf.pp
Verbose: Compiling /home/pi/fpcupdeluxe/fpcsrc/rtl/inc/exeinfo.pp
Verbose: Compiling /home/pi/fpcupdeluxe/fpcsrc/rtl/inc/strings.pp
strings.pp(129,37) Hint: Function result variable does not seem to be initialized
Verbose: Assembling strings
exeinfo.pp(62,27) Hint: Parameter "addr" not used
exeinfo.pp(178,7) Fatal: Unknown compilerproc "fpc_ansistr_assign". Check if you use the correct run time library.
Verbose: Compilation aborted
Verbose: /home/pi/fpcupdeluxe/fpc/bin/i386-linux/ppcrossavr returned an error exitcode
Der Fehleraufruf findet genau in dieser Zeile statt.

Code: Alles auswählen

{$else FPC_HAS_FEATURE_COMMANDARGS}
      filename:='';                  
Magst du mal bitte nachfolgenden Screanshot in deinem AVR Embedded Tutorial nachtragen, damit wir alle die gleichen und Korrekten Einstellungen verwenden?
2020-12-22-210547_1366x768_scrot.png
2020-12-22-210547_1366x768_scrot.png (124.58 KiB) 3408 mal betrachtet
ich hab unter Garantie eine vergessen oder ein paar falsche drinnen.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: AVR mit Lazarus OHNE Embedded

Beitrag von PascalDragon »

Schalte das die Option Zeilennummern in Laufzeitfehler-Backtraces anzeigen (-gl) (unter Compilereinstellungen -> Debuggen aus). Die entsprechenden Units, die dadurch eingebunden werden (eben nämlich lnfodwrf, exeinfo und strings) sind einfach zu mächtig für den AVR (genauso wie AnsiString, deswegen ist dieses Feature per Default deaktiviert).
FPC Compiler Entwickler

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

PascalDragon hat geschrieben:
Mi 23. Dez 2020, 17:44
Schalte das die Option Zeilennummern in Laufzeitfehler-Backtraces anzeigen (-gl) (unter Compilereinstellungen -> Debuggen aus). Die entsprechenden Units, die dadurch eingebunden werden (eben nämlich lnfodwrf, exeinfo und strings) sind einfach zu mächtig für den AVR (genauso wie AnsiString, deswegen ist dieses Feature per Default deaktiviert).
ist der durch das ausschalten von Generate info for the Debugger (slower / increases exe-size) nicht auch schon Deaktiviert?
Wenn nein, dann ist der Hinweis gold wert.

Habe meine Benutzerdefinierten Einstellungen mal mit diesen Parametern gefüttert und läuft soweit auch ohne Weitere Fehler.
  • -al
  • -O-
  • -OpAVR5
  • -WpATMEGA16
Auch das direkte Brennen aus Lazarus hab ich für meine Zwecke eingebunden.

Code: Alles auswählen

/usr/bin/avrdude -c stk500v2 -p m16 -P/dev/ttyACM0 -b57600 -U flash:w:Projekt1.hex
einzig, was mich da zugegen stört, das man die Hex-File bei jedem Projekt Manuell ändern muß, oder ist da jemandem ein Allgemeiner Syntax als Parameter ("Projektname".hex) bekannt?

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

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: AVR mit Lazarus OHNE Embedded

Beitrag von Timm Thaler »

Du kannst so anfangen, aber Optimierungen sollten später auf -O3, sonst erzeugt der Compiler eine Menge unnötigen Code. Zum Beispiel 16-Bit For-Schleifen, obwohl nur 8-Bit definiert.

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

Timm Thaler hat geschrieben:
Mi 23. Dez 2020, 21:22
Du kannst so anfangen, aber Optimierungen sollten später auf -O3, sonst erzeugt der Compiler eine Menge unnötigen Code. Zum Beispiel 16-Bit For-Schleifen, obwohl nur 8-Bit definiert.
das sowieso 8)

Aber wie ich leider mitbekomme, schein es dennoch ein Problem der UART unter FPC zu bekommen, den ich auf mikrocontroller.net liegen habe.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

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: AVR mit Lazarus OHNE Embedded

Beitrag von af0815 »

Dort liegt der UART falsch. SCNR

Was ist genau dein Problem ? Scheint - ist keine Aussage.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

af0815 hat geschrieben:
Do 24. Dez 2020, 11:46
Dort liegt der UART falsch. SCNR

Was ist genau dein Problem ? Scheint - ist keine Aussage.
OutPut unter PicoCom mit dem C-Code = Hallo Welt
OutPut unter PicoCom mit dem Lazarus erstelltenn Code = ''

Würde ich aber gerne anderen Forum lassen, da es mit dem Eigentliche nichte mehr zu tun hat.

Edit

Code: Alles auswählen

 procedure UARTSendChar(value: char);
 begin
   while UCSRA and (1 shl UDRE) = 0 do begin
   end;
   UDR         := byte(c);			<--- c <> value
 end;
Der Fehler lag im Detail...
Man sollte auch mal seine Variablen so verwenden, wie man diese in der Deklaration hat.

Copy|Past - Fehler

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

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: AVR mit Lazarus OHNE Embedded

Beitrag von Timm Thaler »

Maik81SE hat geschrieben:
Do 24. Dez 2020, 11:35
Aber wie ich leider mitbekomme, schein es dennoch ein Problem der UART unter FPC zu bekommen, den ich auf mikrocontroller.net liegen habe.
Mach mal einen eigenen Thread dazu auf, und stell den Code rein. mikrocontroller.net ist nicht sehr hilfreich bei Pascal, das sind größtenteils eingefleischte C-Jünger.

Meine Uarts laufen.

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

Timm Thaler hat geschrieben:
Do 24. Dez 2020, 13:50
Maik81SE hat geschrieben:
Do 24. Dez 2020, 11:35
Aber wie ich leider mitbekomme, schein es dennoch ein Problem der UART unter FPC zu bekommen, den ich auf mikrocontroller.net liegen habe.
Mach mal einen eigenen Thread dazu auf, und stell den Code rein. mikrocontroller.net ist nicht sehr hilfreich bei Pascal, das sind größtenteils eingefleischte C-Jünger.

Meine Uarts laufen.
Wie gesagt...
Meine läuft jetzt auch :D
Da kann ich mich nach den Feiertagen um die TWI mit meinen beiden 8bit IO-Expandern kümmern und dann geht der Spaß richtig los.
Aber ja...
Bei Mikrocontroller.net habe ich auch eben wieder mitbekommen, das viele lieber aus die Hardware achten :shock:

Aber meine Verwendeten Units werde ich im neuen Jahr auch noch einmal anfassen und zur Verfühgung stellen.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: AVR mit Lazarus OHNE Embedded

Beitrag von PascalDragon »

Maik81SE hat geschrieben:
Mi 23. Dez 2020, 19:57
PascalDragon hat geschrieben:
Mi 23. Dez 2020, 17:44
Schalte das die Option Zeilennummern in Laufzeitfehler-Backtraces anzeigen (-gl) (unter Compilereinstellungen -> Debuggen aus). Die entsprechenden Units, die dadurch eingebunden werden (eben nämlich lnfodwrf, exeinfo und strings) sind einfach zu mächtig für den AVR (genauso wie AnsiString, deswegen ist dieses Feature per Default deaktiviert).
ist der durch das ausschalten von Generate info for the Debugger (slower / increases exe-size) nicht auch schon Deaktiviert?
Wenn nein, dann ist der Hinweis gold wert.
Wenn aus irgendeinem Grund die IDE -gl dennoch an den Compiler weiterreichen sollte, dann macht der Compiler das ganz brav.
Maik81SE hat geschrieben:
Mi 23. Dez 2020, 19:57
Habe meine Benutzerdefinierten Einstellungen mal mit diesen Parametern gefüttert und läuft soweit auch ohne Weitere Fehler.
  • -al
  • -O-
  • -OpAVR5
  • -WpATMEGA16
Die unteren drei solltest du auch über die Compilereinstellungen einstellen können.
Maik81SE hat geschrieben:
Mi 23. Dez 2020, 19:57
Auch das direkte Brennen aus Lazarus hab ich für meine Zwecke eingebunden.

Code: Alles auswählen

/usr/bin/avrdude -c stk500v2 -p m16 -P/dev/ttyACM0 -b57600 -U flash:w:Projekt1.hex
einzig, was mich da zugegen stört, das man die Hex-File bei jedem Projekt Manuell ändern muß, oder ist da jemandem ein Allgemeiner Syntax als Parameter ("Projektname".hex) bekannt?
Wie hast du es denn eingebunden? In Compiler Kommandos -> Nachher ausführen? Dort könntest du einfach $(OutputFile) statt Projekt1.hex nutzen (oder so ähnlich).
FPC Compiler Entwickler

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

Maik81SE hat geschrieben:
Mi 23. Dez 2020, 19:57
Auch das direkte Brennen aus Lazarus hab ich für meine Zwecke eingebunden.

Code: Alles auswählen

/usr/bin/avrdude -c stk500v2 -p m16 -P/dev/ttyACM0 -b57600 -U flash:w:Projekt1.hex
einzig, was mich da zugegen stört, das man die Hex-File bei jedem Projekt Manuell ändern muß, oder ist da jemandem ein Allgemeiner Syntax als Parameter ("Projektname".hex) bekannt?
Wie hast du es denn eingebunden? In Compiler Kommandos -> Nachher ausführen? Dort könntest du einfach $(OutputFile) statt Projekt1.hex nutzen (oder so ähnlich).
Das habe ich wie folgt eingebunden...
2020-12-24-221716_1366x768_scrot.png
2020-12-24-221716_1366x768_scrot.png (135.75 KiB) 3298 mal betrachtet
Die Option $(OutputFile) hatte leider nicht den Effekt, aber da ich an diesem Projekt jetzt auch eine Weile schreiben werde, Stört mich der Aspekt nur sekundär.
Ist ja nicht so, das ich aller 5 Minuten ein anderes Projekt für meine µC schreibe.

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: AVR mit Lazarus OHNE Embedded

Beitrag von PascalDragon »

Maik81SE hat geschrieben:
Do 24. Dez 2020, 22:26
Die Option $(OutputFile) hatte leider nicht den Effekt, aber da ich an diesem Projekt jetzt auch eine Weile schreiben werde, Stört mich der Aspekt nur sekundär.
Ist ja nicht so, das ich aller 5 Minuten ein anderes Projekt für meine µC schreibe.
Hab's mir jetzt gerade nochmal selbst angeschaut. Lazarus nimmt per Default .elf als Extension an, also musst du das folgende nehmen:

Code: Alles auswählen

$Path($(OutputFile))$NameOnly($(OutputFile)).hex
2.0.10 scheint allerdings ein Problem mit $(OutputFile) zu haben, weswegen du dort $(TargetFile) nehmen solltest (der Unterschied ist, dass TargetFile das Startkommando bezeichnet, falls eins gesetzt ist, während OutputFile auch immer die Ausgabedatei ist).
FPC Compiler Entwickler

Benutzeravatar
Maik81SE
Beiträge: 308
Registriert: Fr 30. Sep 2011, 14:07
OS, Lazarus, FPC: Debian 12 (L 3.0.0.3 FPC 3.2.2); Windows 10 (L 3.99.0.0 FPC 3.2.0)
CPU-Target: x86-64; arm; avr
Wohnort: Lübeck
Kontaktdaten:

Re: AVR mit Lazarus OHNE Embedded

Beitrag von Maik81SE »

PascalDragon hat geschrieben:
Fr 25. Dez 2020, 15:01
Hab's mir jetzt gerade nochmal selbst angeschaut. Lazarus nimmt per Default .elf als Extension an, also musst du das folgende nehmen:

Code: Alles auswählen

$Path($(OutputFile))$NameOnly($(OutputFile)).hex
2.0.10 scheint allerdings ein Problem mit $(OutputFile) zu haben, weswegen du dort $(TargetFile) nehmen solltest (der Unterschied ist, dass TargetFile das Startkommando bezeichnet, falls eins gesetzt ist, während OutputFile auch immer die Ausgabedatei ist).
Jopp, genau das ist es, sommit schaut die entsprechende Zeile nun wie folgt aus.

Code: Alles auswählen

/usr/bin/avrdude -c stk500v2 -p m16 -P/dev/ttyACM0 -b57600 -U flash:w:$Path($(OutputFile))$NameOnly($(TargetFile)).hex

Code: Alles auswählen

label.caption:= 'gnublin.no-ip.info'
Debian 12 (L 3.0.0.3 FPC 3.2.2);
windows 10 (L 3.99.0.0 FPC 3.2.0)

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: AVR mit Lazarus OHNE Embedded

Beitrag von PascalDragon »

Du solltest auch TargetFile für den Aufruf in Path nutzen, damit es wirklich korrekt ist. Es macht bei dir keinen Unterschied, weil deine hex Datei im gleichen Verzeichnis wie dein Projekt liegt.
FPC Compiler Entwickler

Antworten