ARM Embedded

Antworten
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: ARM Embedded

Beitrag von mse »

Mathias hat geschrieben:Ich liebe die Farben im Editor, so sieht man auf den ersten Blick was Kommentar ist.
Mit ist das erste Hello World viel leserlicher als das zweite.

Code: Alles auswählen

  for i := 0 to 7 do begin
    Writeln('Hello World'); // Kommentar
  end;

Code: Alles auswählen

  for i := 0 to 7 do begin
    Writeln('Hello World'); // Kommentar
  end;


Das sieht in MSEide so aus:
Bild
Ich vermute, dass 'Settings'-'Configure MSEide'-'${MSEDIR}' nicht gesetzt ist. Dann stehen keine Syntax Definitionen zur Kolorierung zur Verfügung. Es wird die Warnung
Bild
angezeigt. Die Syntax-Definitions-Dateien befinden sich in ${MSEDIR}/apps/ide/syntaxdefs. Es sind einfache Textdateien, welche nach den eigenen Wünschen angepasst werden können.
Aus README.TXT:

Code: Alles auswählen

 
Installation:
*************
1. Download and install FPC 3.0.2 or 3.0.4, you can get it from
   http://www.freepascal.org/download.var
2. Download mseide_msegui_src_4_6.zip and the mseide_* archive
   for your system.
   http://sourceforge.net/projects/mseide- ... segui/4.6/
3. Extract them to a directory of your choice ('yourdirectory') .
4. Run 'yourdirectory/bin/mseide' on linux and freebsed or
   'yourdirectory\bin\mseide.exe' on windows.
5. In 'Settings'-'Configure MSEide'-'${MSEDIR}' select 'yourdirectory/msegui'. <<<<-!!!!
6. In 'Project'-'Open' select 'yourdirectory/msegui/apps/demo/demo.prj'.
7. 'Target'-'Continue'.
 
 

Was ich mseIDE noch vermisse ist:
Ctrl + Ins --> kopieren
Shift + Ins --> einfügen

Die Einstellung der Shortcuts geschieht in 'Settings'-'Configure MSEide'-'Shortcuts':
Bild

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: ARM Embedded

Beitrag von Timm Thaler »

Da kann man mal sehen, was frühkindliche Prägung so ausmacht: Bei mir war eines der ersten Dinge in Lazarus, die IDE auf Ocean umzustellen, gelb auf blau, so wie früher in TurboPascal. Pascal muss blau sein, sonst ist es kein Pascal.

Aber Klammerhervorhebung, farbige Strings und Variablen möchte ich nicht mehr missen. Wenn ich Lesefluss will, hol ich mir einen Roman...

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

Re: ARM Embedded

Beitrag von Mathias »

Ich vermute, dass 'Settings'-'Configure MSEide'-'${MSEDIR}' nicht gesetzt ist. Dann stehen keine Syntax Definitionen zur Kolorierung zur Verfügung. Es wird die Warnung

Jetzt sieht es schon einiges besser aus.
Am Anfang hatte ich nur die "mseide" in bin, ansonsten keine andere Datei.
Bei mir fehlte dieses Paket: mseide_msegui_src_4_6.zip

Jetzt sieht die mseide schon besser aus. 8)
Zuletzt geändert von Mathias am Di 10. Apr 2018, 20:17, insgesamt 1-mal geändert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: ARM Embedded

Beitrag von mse »

Meine Programme lesen sich ja auch wie spannende Romane. ;-)
Ich habe mal geschrieben, dass sich ein gutes Programm wie ein Gedicht lesen lassen sollte. Später bin ich soweit zurückgekrebst, dass ein Programm wie ein Brief aussehen sollte. :-)
Aber wie gesagt, mit den *.sdef-Dateien lassen sich in MSEide beliebige Kolorierungen definieren. Die Klammerpaarmarkierung kennt MSEide auch.
Zuletzt geändert von mse am Di 10. Apr 2018, 22:35, insgesamt 1-mal geändert.

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

Re: ARM Embedded

Beitrag von Mathias »

Nochmals zum ARM zurück.
Ich habe gerade festgestellt, das die Port-Register schon in STM32xxx-Unit deklariert sind. Die habe es zufällig genau gleich deklariert wie ich.

Unter Lazarus, kann man den Cursor zB. PortA setzt und [Ctrl+hoch] drücken und dann wird die Deklaration angezeigt und wen nötig die Datei mit der Deklaration geöffnet.
Gibt es sowas auch in der msegui ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: ARM Embedded

Beitrag von mse »

Das nennt sich "code navigation", Ctrl+LeftClick.
Bild
Bild
Navigieren in der Kette mit den blauen Pfeilen oben rechts im Editorfenster.
Die units müssen in "uses" aufgeführt werden, es werden die in 'Projekt'-'Options'-'Debugger'-'Source directories' aufgeführten Verzeichnisse durchsucht.
Bild

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

Re: ARM Embedded

Beitrag von Mathias »

Die units müssen in "uses" aufgeführt werden, es werden die in 'Projekt'-'Options'-'Debugger'-'Source directories' aufgeführten Verzeichnisse durchsucht.

Dies ist ein Problem, das die STM32xxxx Unit automatisch eingebunden ist, ähnlich der Unit system.

Mit der Unit habe ich noch ein anderes Problem, es gibt mehrere stm32f10x_*.pp .
Welche von denen wird nun verwendet. In fast allen ist zB. PortA deklariert.

Wen ich versuche diese manuell mit uses einzubinden. gibt es nur Fehlermeldungen, welcher überall gleich ist, ausser bei der "stm32f10x_ld", dort kommt Dublicate identifier.
Ich nehme mal an, es ist diese Unit, welche verwendet wird.

Wie du weiter oben geschrieben hast ist mseide idela für die embedded-systeme, da man nackte Cross-Compiler Projectbezogen einbinden kann.
Das wäre sicher für die AVRs auch ein Vorteil, da man (momentan) für jede AVR-Familie ein kommpleter Lazarus einbinden muss und jeder hat über 2GB. :shock:
So wie ich geschrieben habe, habe ich mit der leeren mseide und dem Cross-Compiler schon meinen STM32 programmieren können.

Über die Paketverwaltung von Mint gibt es schon einen gcc-arm-none-eabi, welcher man mit

Code: Alles auswählen

apt-get install gcc-arm-none-eabi
 
installieren kann. Kann man diesen auch mit mseide verwenden, wen ja wie ?

Gibt es in der mseide auch ein [Ctrl-Space], so wie in Lazarus ?


Die Zeile mit dem APBxxx konnte ich durch

Code: Alles auswählen

  RCC.APB2ENR := RCC.APB2ENR or (%111 shl 2) ;
ersetzten.
Dies ist schon als RCC deklariert.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: ARM Embedded

Beitrag von mse »

Mathias hat geschrieben:
Die units müssen in "uses" aufgeführt werden, es werden die in 'Projekt'-'Options'-'Debugger'-'Source directories' aufgeführten Verzeichnisse durchsucht.

Dies ist ein Problem, das die STM32xxxx Unit automatisch eingebunden ist, ähnlich der Unit system.

Es gibt den -wpTHUMB2_BARE Parameter. Vielleicht lässt sich damit das automatische Einbinden der Registerdefinitions-Units verhindern. Vielleicht fragst du die Free Pascal Leute?
Mit der Unit habe ich noch ein anderes Problem, es gibt mehrere stm32f10x_*.pp .
Welche von denen wird nun verwendet. In fast allen ist zB. PortA deklariert.

Wen ich versuche diese manuell mit uses einzubinden. gibt es nur Fehlermeldungen, welcher überall gleich ist, ausser bei der "stm32f10x_ld", dort kommt Dublicate identifier.
Ich nehme mal an, es ist diese Unit, welche verwendet wird.

Das ist unschön. Vielleicht fragst du die Free Pascal Leute?
Über die Paketverwaltung von Mint gibt es schon einen gcc-arm-none-eabi, welcher man mit

Code: Alles auswählen

apt-get install gcc-arm-none-eabi
 
installieren kann. Kann man diesen auch mit mseide verwenden, wen ja wie ?

Passe 'Value' von 'Project'-'Options'-'Macros' "TOOLCHAINDIR" an, auf openSUSE sind die Binutils unter /usr. Prüfe 'Project'-'Options'-'Make'-'Show commandline' ob der -e Parameter das Verzeichnis mit dem "as" angibt. Bist du mit der Toolchain von ARM nicht zufrieden?
Gibt es in der mseide auch ein [Ctrl-Space], so wie in Lazarus ?

Ich habe mal damit experimentiert. Da die Leute sich (richtigerweise) darüber beklagt haben, es sei nicht gut genug, habe ich den Code deaktiviert. Kompiliere MSEide mit -dmse_with_showsourceitems um den Code wieder zu aktivieren.
Persönlich brauche ich die List-Funktion und auch Codevervollständigung ausser in Klassen nicht. Ich habe mal versprochen, dass ich mich darum kümmern würde, wenn von der MSEide+MSEgui Community eine signifikante Anstrengung für die Dokumentation geleistet würde. Passiert ist nichts und nun fühle ich mich an das Versprechen nicht mehr gebunden.

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

Re: ARM Embedded

Beitrag von Mathias »

Es gibt den -wpTHUMB2_BARE Parameter. Vielleicht lässt sich damit das automatische Einbinden der Registerdefinitions-Units verhindern. Vielleicht fragst du die Free Pascal Leute?

Wen ich das richtig verstehe, sind alle stm32f10x_*.pp Units für den gleichen Controller ?
Dann wäre die Überschneidung nicht schön. Vielleicht wird ARM auch zu wenig Beachtung geschenkt.

Passe 'Value' von 'Project'-'Options'-'Macros' "TOOLCHAINDIR" an, auf openSUSE sind die Binutils unter /usr. Prüfe 'Project'-'Options'-'Make'-'Show commandline' ob der -e Parameter das Verzeichnis mit dem "as" angibt. Bist du mit der Toolchain von ARM nicht zufrieden?
Eigentlich schon, aber ich dachte wen es von System zu Verfügung gestellt wird, müsste ich es nicht selbst machen.
Schlussendlich wird es so kommen, das ich einen Ordner habe in dem sich die ganzen Sachen für die ARM-Programmierung befindet. Einzig, der Treiber für den ST-LINK muss dann noch installiert werden.

Ich habe mal damit experimentiert. Da die Leute sich (richtigerweise) darüber beklagt haben, es sei nicht gut genug, habe ich den Code deaktiviert. Kompiliere MSEide mit -dmse_with_showsourceitems um den Code wieder zu aktivieren.
Persönlich brauche ich die List-Funktion und auch Codevervollständigung ausser in Klassen nicht. Ich habe mal versprochen, dass ich mich darum kümmern würde, wenn von der MSEide+MSEgui Community eine signifikante Anstrengung für die Dokumentation geleistet würde. Passiert ist nichts und nun fühle ich mich an das Versprechen nicht mehr gebunden.
Momentan kann ich damit leben, ich denke kaum, das ich in nächster Zeit ein grosses Project mit dem ARM mache. Was ich gegenwärtig mache, sind Experimente mit dem STM32.
Für grössere Projecte verwende ich lieber einen Arduino-Nano mit C++, da dieser sehr einfach ist einzurichten. Der Grund, wen ich die Schaltung einem Kollegen weitergebe, kann dieser sehr einfach eine Arduino-IDE einrichten und kleine Änderungen selbst vornehmen.
Ich sage es nicht gerne, aber AVR und ARM ist mit FPC (momentan) nur etwas für Freaks. :wink:


Aber nochmals zum ARM zurück.
So wie ich festgestellt habe, kann die mseide zur Laufzeit den ARM debuggen, man sieht dies auch, das die LED auf dem ST-LINK unterbrochen flackert, bis ich das rote X in mseide drücke.
Auch kann der ARM im Haltepunkten angehalten werden.
Ist dies ein Features von ARM, bei den AVRs habe ich sowas nicht gesehen.
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: ARM Embedded

Beitrag von kupferstecher »

Mathias hat geschrieben:Wen ich das richtig verstehe, sind alle stm32f10x_*.pp Units für den gleichen Controller ?

Du meinst die Endungen "_ld", "md", "_hd", "_conn"? Das sind unterschiedliche Controller, namentlich "low density devices", "medium density", "high density" und "connectivity line". Deiner ist einer davon, soviel ich weiß hängt das mit der Speichergröße zusammen, die Abgrenzung sollte im Datenblatt stehen.

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

Re: ARM Embedded

Beitrag von Mathias »

Du meinst die Endungen "_ld", "md", "_hd", "_conn"?
Dann wird meiner der "_ld" sein.

Das sind unterschiedliche Controller, namentlich "low density devices", "medium density", "high density" und "connectivity line".
Somit rechtfertigte es auch, das Portx mehrmals deklariert ist, evtl. weichen die Adressen ab, so genau habe ich nicht geguckt oder es gibt unterschiedliche Register. Bei den AVR ist dies auch so.

Jetzt muss ich dir mal Danke sagen, du hast mich sehr weit gebracht. :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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: ARM Embedded

Beitrag von mse »

Mathias hat geschrieben:
Passe 'Value' von 'Project'-'Options'-'Macros' "TOOLCHAINDIR" an, auf openSUSE sind die Binutils unter /usr. Prüfe 'Project'-'Options'-'Make'-'Show commandline' ob der -e Parameter das Verzeichnis mit dem "as" angibt. Bist du mit der Toolchain von ARM nicht zufrieden?
Eigentlich schon, aber ich dachte wen es von System zu Verfügung gestellt wird, müsste ich es nicht selbst machen.

Du musst es ja nicht selbst machen sondern lediglich von hier
https://developer.arm.com/open-source/g ... /downloads
herunterladen.
So wie ich festgestellt habe, kann die mseide zur Laufzeit den ARM debuggen, man sieht dies auch, das die LED auf dem ST-LINK unterbrochen flackert, bis ich das rote X in mseide drücke.
Auch kann der ARM im Haltepunkten angehalten werden.
Ist dies ein Features von ARM, bei den AVRs habe ich sowas nicht gesehen.

Mit AVR32 UC3 habe ich mit MSEide schon gössere Projekte gemacht. Dort hat man ein Debuginterface mit Nexus Schnittstelle
https://www.microchip.com/webdoc/avrone ... eface.html
der auch mit 8-bit AVR XMEGA verwendet werden kann. Die Verbindung mit MSEide geschieht ebenfalls mit gdb <-> gdbserver. Für die 8-Biter gibt es sicher preisgünstigere Lösungen, da kenne ich mich nicht aus. IIRC wurde die Linux Unterstützung aufgegeben.

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

Re: ARM Embedded

Beitrag von Mathias »

Du musst es ja nicht selbst machen sondern lediglich von hier
https://developer.arm.com/open-source/g ... /downloads
herunterladen.
Mit der Paket-Verwaltung hätte man einen extern Link weniger gebraucht.

Weiter oben habe ich mal von umbennnen der Dateien geschrieben.
In den gcc Tools, heisen alle "arm-none-eabi-xxx". Im Ordner "ar,-none-eabi" hat es nackte Dateien.
Und fpc motzt wegen fehlen "arm-embedded-xxx" - Dateien.

Woher kommen diese verwirrenden Unterschiede ?

In der fpc.cfg kann es nicht sein, weil du wie oben beschrieben keine Umbenennung nötig ist, ohne fpc.cfg.

Mit AVR32 UC3 habe ich mit MSEide schon gössere Projekte gemacht. Dort hat man ein Debuginterface mit Nexus Schnittstelle
https://www.microchip.com/webdoc/avrone ... eface.html
der auch mit 8-bit AVR XMEGA verwendet werden kann. Die Verbindung mit MSEide geschieht ebenfalls mit gdb <-> gdbserver. Für die 8-Biter gibt es sicher preisgünstigere Lösungen, da kenne ich mich nicht aus. IIRC wurde die Linux Unterstützung aufgegeben.
Dies wird auch etwas Moderners sein, wen dieser 32Bit hat.
Aber ATTiny und ATmega und Konsorten hat so etwas kaum ?
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: ARM Embedded

Beitrag von kupferstecher »

Mathias hat geschrieben:Aber ATTiny und ATmega und Konsorten hat so etwas kaum ?

Einige Atmegas haben auch JTAG-Schnittstellen, mit denen debuggen möglich ist, theoretisch müsste es auch unter Lazarus fnuktionieren. Außerdem gibt es die DebugWire-Schnittstelle, wohl bei den kleineren Megas und den Tinys.

Im Englischen Forum gibt es einen Beitrag, wie man DebugWire unter Lazarus nutzen kann:
http://forum.lazarus.freepascal.org/ind ... opic,40564

Kennst du übrigens die Firmware-Lib für den STM32? Die originale Seite hab ich nicht gefunden, hier ein Link (auf einen Fork?):
https://github.com/Turro75/CustomRCSTM3 ... f103fw.pas

Das ist eine (unvollständige) Übersetzung der Standard Peripherial Library von ST.

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: ARM Embedded

Beitrag von mse »

Mathias hat geschrieben:Weiter oben habe ich mal von umbennnen der Dateien geschrieben.
In den gcc Tools, heisen alle "arm-none-eabi-xxx". Im Ordner "ar,-none-eabi" hat es nackte Dateien.
Und fpc motzt wegen fehlen "arm-embedded-xxx" - Dateien.

Woher kommen diese verwirrenden Unterschiede ?

Da hat halt jede Linux Distribution eigene Vorstellungen.
Aber ATTiny und ATmega und Konsorten hat so etwas kaum ?

Doch, schau nach debugWIRE oder JTAG wie kupferstecher schreibt.
https://www.microchip.com/wwwproducts/en/ATtiny85
http://www.microchip.com/Developmenttoo ... TAVRDRAGON
https://www.microchip.com/DevelopmentTo ... TATMEL-ICE
AVaRICE stellt einen gdbserver zur Verfügung welcher von MSEide verwendet werden kann wie ST-Link oder Segger J-Link.
https://sourceforge.net/projects/avarice/
http://www.larsen-b.com/Article/315.html
Ungeprüft!
Alternative:
https://github.com/dcwbrown/dwire-debug
Ungeprüft!
Zuletzt geändert von mse am Do 12. Apr 2018, 10:13, insgesamt 1-mal geändert.

Antworten