Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß??

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von marcov »

Warf hat geschrieben:Also was das angeht sind wir mit dem fpc richtig verwöhnt, das man ihn "nur" in 10-20 minuten gebaut bekommt. Und dabei kann man den FPC nicht mal parallel kompilieren, den GCC schon, und selbst auf 12 cores (24 hyperthreads) dauert das bei mir immernoch länger als der fpc single core


Ubuntu: fpc snapshot (also optimierter "make all install" des FPC repository") auf ein R5 2600 (6 core): 1min5.

Wenn man mit gcc oder llvm nur in der Nähe kommt, wurde ich das gerne vernehmen. (samt der TDP des machinees)

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von marcov »

pluto hat geschrieben:Die PIC32 lassen sich, soweit ich weiß nicht so schön Entwickeln wie ein atMega... auch wenn die atMegas nicht mehr Zeitgemäß sind....


PIC32 sind MIPS und funktionieren schon eine weile. Vor ein paar Jahre habe ich ein PIC32mk versuch aber das war Elend. Keine gute DMA Performance, also zurück zur dspic33e.

Arduino (sonder ARM Arduino Due) ist total misst. Kann Mann als semi-Elektrotechniker nicht einmal halb seriöse nehmen. Kein DMA, nichts.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von pluto »

marcov hat geschrieben:Arduino (sonder ARM Arduino Due) ist total misst. Kann Mann als semi-Elektrotechniker nicht einmal halb seriöse nehmen. Kein DMA, nichts.

Das mag schon sein, aber dafür ist es einfach und man muss nicht erst stunden lang nach irgendwas suchen oder sich erst einlesen.
Arduino ist auch Teuere(selbst die Clone) im vergleich zu allen anderen und es ist alt, Trotzdem wird es oft in der Maker Szene verwendet.

Z.B. zu STM32 habe ich kaum brauchbare Infos oder gar ein Tutorial gefunden in DEUTSCH geschweige denn ein weiter führendes.
Bei den PIC-Plattform bin ich erst gar nicht dahinter gekommen, welchen ich am Anfang nehmen sollte.
Arduino(AVR) ist einfach, einfacherer, hat aber natürlich auch wie immer Nachteile. Genau wie bei Lazarus/FPC... entweder man nutzt es, oder man lässt es.
Alles hat immer zwei Seiten....

Ich bin noch dabei mich in STM32 einzuarbeiten, aber es wird nicht leicht...
MFG
Michael Springwald

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: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Timm Thaler »

marcov hat geschrieben:Arduino (sonder ARM Arduino Due) ist total misst. Kann Mann als semi-Elektrotechniker nicht einmal halb seriöse nehmen. Kein DMA, nichts.


Jaja, wer nur einen Hammer als Werkzeug hat, sucht halt überall Nägel.

Ich wüßte zwar jetzt nicht, wo mir bei meiner Heizungssteuerung mit ATmega1284, oder meinen Motorcontrollern mit ATmega328, oder meiner Multicontroller-Gerätesteuerung mit mehreren ATmega328 in verschiedenen Steuermodulen jetzt DMA irgendwas bringen würde, aber nee, total unseriös. Muss ich halt mit leben.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von pluto »

Timm Thaler hat geschrieben:Ich wüßte zwar jetzt nicht, wo mir bei meiner Heizungssteuerung mit ATmega1284, oder meinen Motorcontrollern mit ATmega328, oder meiner Multicontroller-Gerätesteuerung mit mehreren ATmega328 in verschiedenen Steuermodulen jetzt DMA irgendwas bringen würde, aber nee, total unseriös. Muss ich halt mit leben.

Ein sehr gutes Beispiel. Man braucht nicht immer die Leistung, von einem STM32 oder einem PIC.... Die mögen zwar mehr können und mehr Leistung haben, aber wozu?
Die meisten Personen, die einen AVR nutzen, wissen warum sie ihn nutzen.
MFG
Michael Springwald

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von marcov »

Timm Thaler hat geschrieben:
marcov hat geschrieben:Arduino (sonder ARM Arduino Due) ist total misst. Kann Mann als semi-Elektrotechniker nicht einmal halb seriöse nehmen. Kein DMA, nichts.


Jaja, wer nur einen Hammer als Werkzeug hat, sucht halt überall Nägel.

Ich wüßte zwar jetzt nicht, wo mir bei meiner Heizungssteuerung mit ATmega1284, oder meinen Motorcontrollern mit ATmega328, oder meiner Multicontroller-Gerätesteuerung mit mehreren ATmega328 in verschiedenen Steuermodulen jetzt DMA irgendwas bringen würde, aber nee, total unseriös. Muss ich halt mit leben.


Mehrere Kanalen abservieren? Oder vielleicht nur das 3.3V Kontroller mehr sparsam sein ?

Oder, (wie in meinem Fall, ) Zurückgabe Daten/Statistik und Konfiguration über UDP/ethernet. Ethernet ist eine Block Schnittstelle, und ein Block Daten senden über DMA hält dann nicht die eigentliche Arbeit auf.

Ich nutze dafür übrigens Wiznet W5x00 chips, ebenso wie manche Arduino Ethernet shields.

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

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von kupferstecher »

DMA ist ja auch nur eine Krücke für fehlende Parallelprozessoren 8)

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von marcov »

pluto hat geschrieben:
Ich bin noch dabei mich in STM32 einzuarbeiten, aber es wird nicht leicht...


Ich habe nach dem gefehlte PIC32mk Projekt mich mal die CPU Anleitung des Due's angesehen. Ist mehr ein "Prozessor" als ein "Controller", mehrere Größen komplizierter. Mir fehlt dafür auch die Zeit, also ich bin nach dspic33e zurück gegangen.

Die haben letztes Jahr ein 100MIps dual core ausgebracht, und der habe ich ins Lab ans laufen, aber noch keine Planung zur Produktion.

Ich mache fast alles Embedded in C. Nicht mein Ideal, aber nicht ein richtiges Problem.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von pluto »

marcov hat geschrieben:Die haben letztes Jahr ein 100MIps dual core ausgebracht, und der habe ich ins Lab ans laufen, aber noch keine Planung zur Produktion.

Ich finde, wenn man die Leistung auch wirklich braucht ist es ja ok, aber um eine LED oder ein Sensor oder ein LCD zu betreiben oder eben alles zusammen braucht man diese Leistung nicht. Dann würde ich eher ein PI nehmen oder so... Weil das ist einfach, einfacher zu nutzen.

Du würdest ja wohl auch nicht auf die Idee kommen, einem Hubschrauber zu nutzen um Brötchen zu kaufen oder? Geht bestimmt, aber was soll das?
MFG
Michael Springwald

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von marcov »

pluto hat geschrieben:Ich finde, wenn man die Leistung auch wirklich braucht ist es ja ok, aber um eine LED oder ein Sensor oder ein LCD zu betreiben oder eben alles zusammen braucht man diese Leistung nicht. Dann würde ich eher ein PI nehmen oder so... Weil das ist einfach, einfacher zu nutzen.


Ein PI ist kein Controller. Den Dual Core dspic ist nicht dual core für doppelter allgemeine Rechenperformance wie RPI2 oder 3, aber um auf ein Core eine enge Motorkontrolle schleife aus zu führen, und den andere Core für Kommunikation mit den Außenwelt und die mehr langfristige Reglungsschleifen und Monitoring.

Es ist auch kein Dual core in wie x86 oder Arm wie im RPI. Es ist asymmetrisch in Geschwindigkeit (90 vs 100 MHz), und der Slave (mit die enge Motorschleife) führt alle Kode aus RAM aus, für niedrigen Latency ohne (dieper) Pipelining. Auch ist die Kommunikation zwischen die beide Cores via spezialen Bausteinen.

Es sind mehr zwei Kontrollers in ein Package die auf die selben Hardwarebausteine (motor control, timer, DMA usw) zu greifen.

Du würdest ja wohl auch nicht auf die Idee kommen, einem Hubschrauber zu nutzen um Brötchen zu kaufen oder? Geht bestimmt, aber was soll das?


Ich will ja auch nicht ein ganze Serien Transportmittel enge zugespitzt auf jede theoretische Transportbedürfnis. Mann wählt zwei oder drei, und tut damit alles. Und das meint das man ab und zu mit ein etwas größerem Wagen als strikt nötig Brötchen holen geht. Weil man den nächsten Tag auch nach dem Baumarkt muss.

Also samt dual core und DMA sind gemeint um Kommunication (und dann speziell: ethernet oder USB) enge Reglungsschleifen zu entlasten.

In meinem Fall: mehrere Arbeiten die alle an ein Quadraturenkoder (laufender Band) relatiert sind.

Für etwas was zwei mal am Tag schaltet und eins in 2 sekunden kontrolliert ob es was passiert ist, kann man alles nutzen. Dafür entwerft man nicht etwas.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von pluto »

marcov hat geschrieben:Also samt dual core und DMA sind gemeint um Kommunication (und dann speziell: ethernet oder USB) enge Reglungsschleifen zu entlasten.

ja, dafür mag es gut sein, mit Arduino geht zwar auch ethernet oder USB z.b. mit einem atTiny85(digispark), damit kann man eine USB Tastatur Simulieren. Aber es ist natürlich nicht Sinnvoll.
Für ein klein TCP-Client könnte ich mir auch Arduino und ethernet vorstellen, ich habe sogar zwei ethernet Boards hier.
Ich nutzte ebenfalls den ESP8266(Wemos D1 mini), der hat deutlich mehr Leistung als ein "Arduino", aber zu wenig Pins, für ein Projekt habe ich den jetzt mit einem atTiny84 verbunden, aber ich werde
vielleicht den atTiny84 durch ein atMega328 ersetzten.

Ich finde es Praktisch, das es so eine Vielfalt gibt. Auf der einen Seite, kann man Arduino für viele aufgaben nehmen oder eben wenn man sich nicht so gut auskennt auf der anderen Seite, kann man auch etwas Stärkeres wie etwa den STM32 nehmen. Je nach dem, was man machen will.

Ich denke, dass Zeigt auch deutlich, das es vorteile hat, sich umzuschauen und das zu verwenden, was man a) kann und b) dafür eignet.
MFG
Michael Springwald

marcov
Beiträge: 1100
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von marcov »

pluto hat geschrieben:
marcov hat geschrieben:Also samt dual core und DMA sind gemeint um Kommunication (und dann speziell: ethernet oder USB) enge Reglungsschleifen zu entlasten.

ja, dafür mag es gut sein, mit Arduino geht zwar auch ethernet oder USB z.b. mit einem atTiny85(digispark), damit kann man eine USB Tastatur Simulieren. Aber es ist natürlich nicht Sinnvoll.


Das Problem ist das man entweder blocking kommunication kann machen, oder eine enge Schleife(*), aber nicht beide. Asynchrone Kommunikation und in extrem Fall solche dual Cores sind gemeint das zu beheben.

Auch Kontroller mit integrierter Ethernet können eine Lösung sein, aber die sind seltsam, und kombinieren oft nicht mit Quadratur/Motorkontrol, was ich unbedingt benötige.

(*) Eng ist relativ natürlich.

Für ein klein TCP-Client könnte ich mir auch Arduino und ethernet vorstellen, ich habe sogar zwei ethernet Boards hier.
Ich nutzte ebenfalls den ESP8266(Wemos D1 mini), der hat deutlich mehr Leistung als ein "Arduino", aber zu wenig Pins, für ein Projekt habe ich den jetzt mit einem atTiny84 verbunden, aber ich werde
vielleicht den atTiny84 durch ein atMega328 ersetzten.


Ich habe auch ein W5100 ethernet shield zur meine Mega, aber die senden alles blocking nach SPI über eine Schleife.

Ich bin mir nicht 100% sicher, aber ich glaube Atmel hat auch AVRs mit DMA. Nur nicht in Arduino :evil:

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von mschnell »

Warf hat geschrieben: volatile ist ein schlechtes beispiel, da man das genau nicht damit machen soll (also versuchen die optimierung zu steuern)

Und ob !
C nimmt "Not volatile" an, wenn nicht explizit volatile angegeben ist und optimiert alles weg, was nicht notwendig ist, wenn die Variable nicht erkennbar gesetzt oder neu gelesen werden muss.
Durch "Not volatile" wird ein Wust von Optimierungsmöglichkeiten eröffnet, und deshalb in den meisten Fällen auch angewendet. "Volatile" verhindert das und sollte natürlich nur produktiv verwendet werden, wenn es nötig ist (z.B. bei Threads).
Und in Pascal ist erstmal alles "Volatile".
-Michael
Zuletzt geändert von mschnell am Mo 3. Jun 2019, 10:55, insgesamt 1-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von mschnell »

marcov hat geschrieben:PIC32mk versuch aber das war Elend. Keine gute DMA Performance, also zurück zur dspic33e.

PIC33 ist natürlich optimiert für "kleine" Realtime-Anwendungen. Kommt für mich heute überhaupt nicht mehr in Frage, weil ich darauf bestehe, eine USB Schnittstelle für einfache Kontrolle und Konfiguration des laufenden Gerätes zu haben.
Die neuen PIC32 mit mehreren Stackpointern (extrem schnelles Interrupt- und Thread-Switching) und mehreren flexiblen DMA Controllern und hohen Taktraten sind aber ziemlich toll. Billig genug für kleine Anwendungen und leistungsfähig genug für größere.
-Michael
Zuletzt geändert von mschnell am Mo 3. Jun 2019, 10:59, insgesamt 5-mal geändert.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von mschnell »

kupferstecher hat geschrieben:DMA ist ja auch nur eine Krücke für fehlende Parallelprozessoren 8)

Quatsch !
Natürlich kann ein Parallelprozessor auch einfach Daten transportieren, aber beim Prozessor geht das zwangsweise über den Bus, während ein DMA-Kanal (bei entsprehend Realtime-tauglicher Hardsware) den Zugriff auf einen Peripherie-Baustein machen kann während z.B. der Prozessor gleichzeitig den Bus belegt.
Ich verwende z.B. einen "FIDO-Prozessor, der hat einen 68K Kern mit 5 Registersätzen (mit automatischem "Hardware Multithreadding") und zusätzlich vier Koprozessoren und dann noch zwei DMA-Controller Was man da aus 64 MHz Takt rausholen kann ist schon enorm (aber sehr komplex zu programmieren, weil man die Kommunikation zwischen allen neun Prozessoren explizit ausprogrammieren muss). Der DMA kann sogar Daten zwischen zwei Peripherie-Bausteinen übertragen komplett ohne den Prozessor-Bus zu belasten.
Die PIC32z haben MIPS Prozessoren mit mehreren Registersätzen (" beinahe Hardware Multithreadding"), sehr hohe Taktraten und mehrere DMA-Controller. Da kann man auf die Komplexität von Coprozessoren in vielen Fällen verzichten.
-Michael
Zuletzt geändert von mschnell am Mo 3. Jun 2019, 11:08, insgesamt 4-mal geändert.

Antworten