AVR embedded für verschiedene Controllertypen - geht!

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

AVR embedded für verschiedene Controllertypen - geht!

Beitrag von Timm Thaler »

Es gab hier mal das Problem, dass man beim Verwenden verschiedener Controllertypen - Atmega, Attiny - den FPC immer mit dem entsprechenden Subsystem - avr5, avr2 - neu kompilieren muss. Leider finde ich den Thread dazu nicht mehr. Ist wohl durch die Hitze geschmolzen.

Ich hab jetzt naiv einen Atmega32 durch einen Atmega1284 ersetzt, weil der 32er am Ende des Speichers noch zuviel Programm übrig hatte. Und dummerweise stelle ich fest, der braucht ja Subsystem avr51 statt avr5.

Die Sourcen für alle diese Tinys, Megas... sind ja in fpcsrc vorhanden. Also hab ich mal verwegen das Verzeichnis fpc\units\avr-embedded\rtl in rtl-avr5 umbenannt. Dann mit Fpcupdeluxe einen neuen avr embedded Crosscompiler für avr51 installiert. Dabei entsteht wieder ein Verzeichnis rtl im obigen Pfad. Das nach rtl-avr51 umbenannt. Im Projekt noch alles auf ATmega1284 und unter den projekteigenen Compilereinstellungen auf avr51 eingestellt. Die Pfadeinstellungen für den Crosscompiler bleiben. Geht. Diverse Konstanten im Programm müssen natürlich angepasst werden (Uart => Uart0 usw.).

avr-embedded-multi.png


Offenbar ist es dem Compiler egal, in welchem Unterverzeichnis er die avr embedded units findet. Man könnte also auf diese Weise auch Subsysteme für ATtiny (rtl-avr2) und den Arduino Mega (ATmega2560 => rtl-avr6) installieren. Mag mal jemand, der mit diesen Controllern arbeitet das verifizieren? Dann könnte man das auch ins AVR embedded Tutorial übernehmen.

!!! Vorher wie immer bei Änderungen mit Fpcupdeluxe eine Kopie des Lazarus / FPC Ordners erstellen !!!

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 embedded für verschiedene Controllertypen - geht!

Beitrag von Mathias »

Dies werde ich bei Gelegenheit testen

Wen dies funktionieren würde, müsste man die DonAlfredo mitteilen, vielleicht kann er dann fpcupdeluxe anpassen.

Hast du zufällig diesen Thread gesucht ? viewtopic.php?f=15&t=11044&p=98353#p98353
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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 embedded für verschiedene Controllertypen - geht!

Beitrag von Mathias »

Sieht leider nach einem Traum an, ich kann es nicht nachvollziehen
Was stimmt, man kann den rtl-Ordner umbennen wie man will, dies ist FPC egal.

Ich habe mir einen neunen AVR-Compiler gebaut, ohne Setup+ Parameter ist dieser für AVR 5.
Nun habe ich den rtl --> rtl_5 umbenennt. Den Atmega kann ich kompilieren.

Nun habe ich bei Setup+ die Parameter für den ATTiny eingestellt. Somit habe ich einen neuen rtl-Ordner bekommen.
Aber der Compiler meldet dann einen Fehler. Erst wen ich den Ordner rtl_5 entferne, dann wird erst fehlerfrei compiliert.

Das Selbe bei ATmega2560.

Vielleicht könnte man ein Script machen, welcher den benötigten Ordner kopiert und löscht.

Nachtrag:
In den verschiedenen rtl-Ordner hat es Dateien wie avrsim.o, consoleio.o, etc. , welche sich unterscheiden.
Und das schlimmste, system.o ist auch anders.

Ich denke, die Lazarus-Macher, könnten sicher etwas dagegen tun.
Solche CPU-Unterschiede gibt es auch auf der PC-Plattform und dort funktioniert es.
Unter "Projekt --> Projekteinstellungen... --> Konfiguration und Ziele --> Zielprozessor (-Cp):" Man könnte doch dies auswerten, wie auf dem PC.
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: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von Timm Thaler »

Doch geht, man muss nur für die Tinys bei Projekteinstellungen => Compilereinstellungen => Pfade => Andere Units den Pfad auf die rtl-avr25 angeben, sonst versucht der Compiler die avr51 zu nehmen. Da das aber in den Einstellungen zu jedem Projekt gespeicht wird, finde ich das akzeptabel, -CpAVR25 und -WpATTINY2313 muss man ja auch einmalig im Projekt festlegen.

Ich habe gerade meine Heizungssteuerung für ATmega1284 und ein Testprogramm für ATtiny2313 parallel kompiliert, und offensichtlich wird das auch sauber für ATmega und ATtiny gemacht, beim ersten wird Hardware-Mul verwendet, beim zweiten Software-Mul.

Aktuell blöd ist noch, dass bei einem Compiler Update jedes Embedded-Subsystem einzeln geholt werden muss und dann jeweils das rtl-Verzeichnis umbenannt oder die Dateien ins zum Subsystem passende Verzeichnis kopiert werden müssen.

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 embedded für verschiedene Controllertypen - geht!

Beitrag von Mathias »

Doch geht, man muss nur für die Tinys bei Projekteinstellungen => Compilereinstellungen => Pfade => Andere Units den Pfad auf die rtl-avr25 angeben, sonst versucht der Compiler die avr51 zu nehmen. Da das aber in den Einstellungen zu jedem Projekt gespeicht wird, finde ich das akzeptabel, -CpAVR25 und -WpATTINY2313 muss man ja auch einmalig im Projekt festlegen.
Jetzt geht es bei mir auch, aber irgendwie ist es doch eine Notlösung.

Solche CPU-Unterschiede gibt es auch auf der PC-Plattform und dort funktioniert es.
Ich habe gerade gesehen, dort wird es ein wenig anders gelöst. Die verschiedenen Plattformen sind
schon unter /fpc/units gelistet, dort wo auch avr-embedded vorhanden ist.
Somit müsste es eigentlich hier folgende Ordner geben, wen es sauber sein soll.:
- avr-embedded-25
- avr-embedded-5
- avr-embedded-6
- etc.

Nachtrag.
Man könnte hier doch mal den Vorschlag machen: http://lists.freepascal.org/cgi-bin/mai ... /fpc-devel
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von sstvmaster »

Hi,

wäre es dann nicht besser es gibt eine ini Datei wo die ganzen Plattformen/Compiler, die installiert sind, eingetragen werden.
Und wenn man ein neues Projekt erstellt, die dann auch zur Verfügung stehenden Plattformen direkt angeboten würden?
So könnte man mit Templates direkt die Vorgaben in den Projekteinstellungen setzen.

Natürlich müsste man sich noch gedanken drum machen wie man die einzelnen Plattformen installiert, theoretisch immer aktuell aus dem SVN.

Das fiel mir jetzt nur so bei eurer interessanten Diskusion auf, das ihr immer manuell die Parameter der einzelnen Plattformen/Compiler setzen müsst.

Maik
Zuletzt geändert von sstvmaster am Di 7. Aug 2018, 23:15, insgesamt 1-mal geändert.
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

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 embedded für verschiedene Controllertypen - geht!

Beitrag von Timm Thaler »

Ja, natürlich wäre das toll, aber gefühlt sind das 3 Leute, die AVR embedded programmieren. Wir sind ja schon froh, dass Verbesserungen und Bugreports ins Embedded System zügig einfließen, der Rest ist dann schon die Sahne auf der Torte.

mse
Beiträge: 2013
Registriert: Do 16. Okt 2008, 10:22
OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
CPU-Target: x86,x64,ARM

Re: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von mse »

sstvmaster hat geschrieben:wäre es dann nicht besser es gibt eine ini Datei wo die ganzen Plattformen/Compiler, die installiert sind, eingetragen werden.
Und wenn man ein neues Projekt erstellt, die dann auch zur Verfügung stehenden Plattformen direkt angeboten würden?
So könnte man mit Templates direkt die Vorgaben in den Projekteinstellungen setzen.

Auf diese Art wird es in MSEide gehandhabt. Bewährt sich gut.

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von Socke »

Mathias hat geschrieben:Nachtrag.
Man könnte hier doch mal den Vorschlag machen: http://lists.freepascal.org/cgi-bin/mai ... /fpc-devel

Ich hatte dazu mal einen Feature Request erstellt: https://bugs.freepascal.org/view.php?id=30294
Bisher hat sich aber noch niemand gefunden, der den umsetzen will.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

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 embedded für verschiedene Controllertypen - geht!

Beitrag von af0815 »

Socke hat geschrieben:
Mathias hat geschrieben:Nachtrag.
Man könnte hier doch mal den Vorschlag machen: http://lists.freepascal.org/cgi-bin/mai ... /fpc-devel

Ich hatte dazu mal einen Feature Request erstellt: https://bugs.freepascal.org/view.php?id=30294
Bisher hat sich aber noch niemand gefunden, der den umsetzen will.

Vielleicht den Vorschlag mit Begründung auf der fpc-devel posten mit dem Hinweis auf den Featurerequest. Zumindest kann man sich dann einmal eine Antwort erhoffen.

Alternativ kann man im englischen Forum den Vorschlag mal andiskutieren, sofern noch nicht geschehen.

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: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von Mathias »

Ich hatte dazu mal einen Feature Request erstellt: https://bugs.freepascal.org/view.php?id=30294
Bisher hat sich aber noch niemand gefunden, der den umsetzen will.
Den Report mal mit einem neuen Post wieder mal aufwärmen.

Und wenn man ein neues Projekt erstellt, die dann auch zur Verfügung stehenden Plattformen direkt angeboten würden?
Dies wäre natürlich Deluxe.

Wen unter "Datei --> neu... --> Project" die AVR kommen würde, das wäre natürlich die Ideallösung. :wink:

Unterstützen tut Lazarus so etwas. Sobald man pas2js installiert, kommt "Web Browser Application" zur Auswahl. Und wen man "Web Browser Application" anwählt, kommt sogar ein Dialog mit Optionen. Beim AVR könnte man diesen nutzen, zB. um den den AVR und Pfad zu avrdude anzugeben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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 embedded für verschiedene Controllertypen - geht!

Beitrag von Mathias »

sstvmaster hat geschrieben:Hi,

wäre es dann nicht besser es gibt eine ini Datei wo die ganzen Plattformen/Compiler, die installiert sind, eingetragen werden.
Und wenn man ein neues Projekt erstellt, die dann auch zur Verfügung stehenden Plattformen direkt angeboten würden?
So könnte man mit Templates direkt die Vorgaben in den Projekteinstellungen setzen.

Natürlich müsste man sich noch gedanken drum machen wie man die einzelnen Plattformen installiert, theoretisch immer aktuell aus dem SVN.

Das fiel mir jetzt nur so bei eurer interessanten Diskusion auf, das ihr immer manuell die Parameter der einzelnen Plattformen/Compiler setzen müsst.

Maik

Mit meiner Package, kommt man diesem Ziel immer näher.

Im Prinzip könnte man mit Timms Anleitung, die verschiedenen Plattformen einrichten.
Die Unit-Pfade könnte man dann mit der Package setzen.

In der Maillist, habe ich folgende Antwort bekommen:
At the moment one needs to manually compile the RTL for different sub architectures, then copy to different folders, then modify fpc.cfg to locate the correct RTL for the sub architecture n the user program.


Somit könnte dies aber in Zukunft ändern.
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: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von Timm Thaler »

Ja, das wäre nett und sicher auch hilfreich für kommende MPS und ARM Subarches. Vor allem ein automatisches Update der verschiedenen Subarches wäre wünschenswert, sonst verliert man schnell den Überblick.

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 embedded für verschiedene Controllertypen - geht!

Beitrag von Mathias »

Vor allem ein automatisches Update der verschiedenen Subarches wäre wünschenswert

Man könnte mal fragen, ob man dies in fpcupdeluxe einbauen könnte.

Ein solche Ordnerstruktur wie oben beschrieben wäre eine Option:
Ich habe gerade gesehen, dort wird es ein wenig anders gelöst. Die verschiedenen Plattformen sind
schon unter /fpc/units gelistet, dort wo auch avr-embedded vorhanden ist.
Somit müsste es eigentlich hier folgende Ordner geben, wen es sauber sein soll.:
- avr-embedded-25
- avr-embedded-5
- avr-embedded-6
- etc.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

DonAlfredo
Beiträge: 74
Registriert: Do 28. Sep 2017, 10:26

Re: AVR embedded für verschiedene Controllertypen - geht!

Beitrag von DonAlfredo »

Just to keep you informed.

For a renewal of some hardware with PIC24/PIC32 MCU, I am going to use the SAMD / SAMC Cortex-M0 by ATmel/Microchip.
And a switch from C towards Pascal (FPC) for writing firmware.

As maintainer (and user) of fpcupdeluxe, I am going to keep fpcupdeluxe as embedded friendly as possible.

For the moment, this means a better handling of embedded settings.
AND a fork of FPC and Lazarus that is suitable for many SAMC and SAMD (ARMV6M) and STM (ARMV7EM) micro's.
Fpcupdeluxe will enable easy install of this new FPC and Lazarus. See included screenshot.
If the "embedded"-speedbutton is used, two libraries will also be installed: mbf and pxl.

The embedded work is done together with the author of the mbf framework.
https://github.com/michael-ring/mbf

Many changes are ongoing right now. So do not expect 100% success at all moments.

I will also monitor the changes in FPC and Lazarus to be able to install multiple subarchs the easy way.
And to auto-update them when needed.
(the reason to post here)

Feel free to test the latest release of fpcupdeluxe.
https://github.com/newpascal/fpcupdelux ... ses/latest
Dateianhänge
embedded.JPG

Antworten