Forum: Compiler & IDEs STM32 in Visual Studio


von Leopold N. (leo_n)


Lesenswert?

Hallo,

ich habe mich jetzt durch Atollic TrueStudio, IAR und SW4STM32 
durchgearbeitet, aber keine dieser IDEs sagt mir wirklich zu.
Deshalb würde ich gerne Visual Studio benutzen, weil ich auch schon mit 
Atmel Studio gearbeitet habe.
Ich möchte aber nicht Dinge wie HAL oder CubeMX verwenden und benutze 
auch ein selbstgebautes Board.

Am besten wäre es wie in Atmel Studio, wo ich einfach nur meinen µC 
angebe, die IDE mir den Compiler, das Linkerscript und den minimal 
notwendigen Startup Code im Hintergrund erzeugt und einbindet und ich 
dann mit dem coden loslegen kann.

Kann mir da jemand helfen?

Grüße

von Ntldr -. (ntldr)


Lesenswert?

Wie kommst du auf die Idee, dass Atmel Studio irgendetwas mit Visual 
Studio zu tun hat?

Ansonsten hat Microsoft in VS 2017 Unterstützung für CMake Projekte 
eingefügt. Damit sollte sich eigentlich jeder µC der einen 
Kommandozeilencompiler mitbringt auch in VS nutzen lassen. Ich wollte 
das auch nochmal ausprobieren (allerdings mit dem ESP32), bin aber noch 
nicht dazu gekommen.

Alternativ könntest du dir auch noch Visual Studio Code mit Platform IO 
Plugin anschauen. An das volle VS kommt das zwar nicht heran, aber es 
ist mMn deutlich besser als die genannten Alternativen.

von Leopold N. (leo_n)


Lesenswert?

Ntldr -. schrieb:
> Wie kommst du auf die Idee, dass Atmel Studio irgendetwas mit Visual
> Studio zu tun hat?

Atmel Studio basiert (soweit ich weiß) auf Visual Studio

Ntldr -. schrieb:
> Alternativ könntest du dir auch noch Visual Studio Code mit Platform IO
> Plugin anschauen. An das volle VS kommt das zwar nicht heran, aber es
> ist mMn deutlich besser als die genannten Alternativen.

Habe ich bereits, aber da muss man ein Board aus einer Liste auswählen, 
und ich verwende ein selbstgebautes...

Ntldr -. schrieb:
> Ansonsten hat Microsoft in VS 2017 Unterstützung für CMake Projekte
> eingefügt. Damit sollte sich eigentlich jeder µC der einen
> Kommandozeilencompiler mitbringt auch in VS nutzen lassen. Ich wollte
> das auch nochmal ausprobieren (allerdings mit dem ESP32), bin aber noch
> nicht dazu gekommen.

Das klingt gut, aber wie geht das genau mit dem Kommandozeilencompiler?

von Ntldr -. (ntldr)


Lesenswert?

Leopold N. schrieb:
> Ntldr -. schrieb:
>> Wie kommst du auf die Idee, dass Atmel Studio irgendetwas mit Visual
>> Studio zu tun hat?
>
> Atmel Studio basiert (soweit ich weiß) auf Visual Studio

Stimmt. Sieht auf den zweiten Blick doch sehr ähnlich aus.

> Ntldr -. schrieb:
>> Alternativ könntest du dir auch noch Visual Studio Code mit Platform IO
>> Plugin anschauen. An das volle VS kommt das zwar nicht heran, aber es
>> ist mMn deutlich besser als die genannten Alternativen.
>
> Habe ich bereits, aber da muss man ein Board aus einer Liste auswählen,
> und ich verwende ein selbstgebautes...

Einfach ein ähnliches Board (mit gleichem Controller) auswählen. Das 
läuft dann idR auch.

> Ntldr -. schrieb:
>> Ansonsten hat Microsoft in VS 2017 Unterstützung für CMake Projekte
>> eingefügt. Damit sollte sich eigentlich jeder µC der einen
>> Kommandozeilencompiler mitbringt auch in VS nutzen lassen. Ich wollte
>> das auch nochmal ausprobieren (allerdings mit dem ESP32), bin aber noch
>> nicht dazu gekommen.
>
> Das klingt gut, aber wie geht das genau mit dem Kommandozeilencompiler?

Du installierst dir von irgendwo her einen passenden Compiler (z.B. GCC 
mit ARM) sowie die benötigten Bibliotheken, sodass du manuell Code auf 
der Kommandozeile kompilieren und linken kannst.

Dann brauchst du nur noch ein CMake Script, welches den Compiler mit den 
passenden Argumenten aufruft. Ggf. gibt es da für den STM32 irgendwas 
fertiges im Netz.

von Leopold N. (leo_n)


Lesenswert?

Ok, und wie mache ich das ganze nun genau?
Ich habe mit makefiles und linkern noch nicht wirklich was zu tun gehabt 
bisher.
Kannst du mir schritt für schritt sagen, was zu tun ist?

von Leopold N. (leo_n)


Lesenswert?

Hat hier keiner ne Ahnung wie das geht und kann mir das mal schreiben?

von Michael F. (Gast)


Lesenswert?

Entweder man nutzt eine IDE, die einem den ganzen Low-Level Kram des 
Build-Prozesses abnimmt oder man 'darf' sich darum selbst kümmern...

Zu make gibt es Schrankwände voll an Literatur und Google ist mit den 
richtigen Suchbegriffen da sehr auskunftsfreudig, z.B. mit: make 
tutorial

:-)

von Leopold N. (leo_n)


Lesenswert?

Michael F. schrieb:
> Entweder man nutzt eine IDE, die einem den ganzen Low-Level Kram des
> Build-Prozesses abnimmt oder man 'darf' sich darum selbst kümmern...
>
> Zu make gibt es Schrankwände voll an Literatur und Google ist mit den
> richtigen Suchbegriffen da sehr auskunftsfreudig, z.B. mit: make
> tutorial
>
> :-)

schön und gut, aber wie bringe ich die IDE dazu dieses Makefile dann 
auch auszuführen?

von Michael F. (Gast)


Lesenswert?

Keine Ahnung...

Make kenne ich nur von der Kommandozeile und da ich darauf keinen Bock 
habe, nutze ich fertige IDEs. Da hat man zwar Einschränkungen beim 
Editor gegenüber z.B. CLion oder VS-Code, aber dafür muss man sich um 
diverse andere Dinge nicht kümmern.

von Arc N. (arc)


Lesenswert?

Wenn's etwas kosten darf https://visualgdb.com/
Ansonsten die Features neuerer VS-Versionen nutzen. MS hat einen Artikel 
dazu (Beispiel nutzt Nucleo-F411RE, Debugging über gdbserver und OpenOCD 
wird auch beschrieben)
https://devblogs.microsoft.com/cppblog/arm-gcc-cross-compilation-in-visual-studio/

: Bearbeitet durch User
von Leopold N. (leo_n)


Lesenswert?

Also ich habe inzwischen eine Lösung gefunden.

Sie lautet: External Editor.

IAR mit Visual Studio Code funzt wunderbar und macht Spaß zu coden.

Damit wäre der Thread dann wohl beendet.

Dankeschön

von Michael F. (Gast)


Lesenswert?

Könntest Du etwas mehr Details zu Deiner Lösung preisgeben? Eventuell 
stehen andere User auch vor der gleichen Frage und würden sich über 
etwas Starthilfe freuen...

Danke :-)

von Leopold N. (leo_n)


Lesenswert?

Michael F. schrieb:
> Könntest Du etwas mehr Details zu Deiner Lösung preisgeben?
> Eventuell
> stehen andere User auch vor der gleichen Frage und würden sich über
> etwas Starthilfe freuen...
>
> Danke :-)

Klaro.

Den Code schreibe ich in Visual Studio Code (VSC, gibts kostenlos zum 
Download) und kompilieren, programmieren und debuggen tue ich dann in 
IAR (gibts kostenlos bis 32k).
Man muss in VSC als Workspace den gleichen Ordner nehmen, in dem man mit 
IAR sein Projekt erstellt hat. Dann schreibt man den Code in VSC und 
speichert ihn mit STRG+S. IAR aktualisiert automatisch die Dateien, so 
dass man direkt kompilieren kann.
Das wars... :)

Edit: Das mit dem externen Editor aus IAR heraus ist gar nicht mal 
nötig.

: Bearbeitet durch User
von Michael F. (Gast)


Lesenswert?

Leopold N. schrieb:
> IAR aktualisiert automatisch die Dateien, so
> dass man direkt kompilieren kann.
> Das wars... :)

Du musst aber dann Deine Projekte in IAR und VSC parallel pflegen. Also 
Souce-Files, Include-Pfade, ... hinzufügen, oder?

von Leopold N. (leo_n)


Lesenswert?

Michael F. schrieb:
> Leopold N. schrieb:
>> IAR aktualisiert automatisch die Dateien, so
>> dass man direkt kompilieren kann.
>> Das wars... :)
>
> Du musst aber dann Deine Projekte in IAR und VSC parallel pflegen. Also
> Souce-Files, Include-Pfade, ... hinzufügen, oder?

Ne, das erledigst du alles dadurch, dass du den Projektordner als 
Workspace hinzufügst, den Rest macht Intellisense, das ist ja grad das 
geile an VSC.

Also das Projekt erstellst du mit IAR, und den Projektordner zeigst du 
dann VSC.

: Bearbeitet durch User
von Leopold N. (leo_n)


Lesenswert?

Hallo,

wie es scheint, muss ich das Ganze noch einmal aufwärmen...

Problem:
IAR bindet im Hintergrund startup Code, etc... ein.
Den ganzen Krempel will ich aber selber schreiben.

Außerdem wäre es viel eleganter, nur eine IDE (--> Visual Studio Code) 
statt zweien verwenden zu müssen.

Meine Idee:

In Visual Studio Code eine .json Datei schreiben, die die 
arm-none-eabi-gcc toolchain aufruft und ihr die Files übergibt.
Ein weiteres .json File, die OpenOCD aufruft und das Debugging startet.

Geht das und wenn ja, wie?
Bitte mit Details und hilfreichen Links zu Seiten, wo ich so etwas 
Nachlesen kann.

von Michael F. (Gast)


Lesenswert?

Leopold N. schrieb:
> Problem:
> IAR bindet im Hintergrund startup Code, etc... ein.
> Den ganzen Krempel will ich aber selber schreiben.

Kannst Du gerne tun :-)

Einfach im *.map die ganzen Funktionsaufrufe der low-level Funktionen 
raussuchen, selbst implementieren und die zugehörigen Source-Files ins 
Projekt einbinden.

Wenn der Linker z.B. das Label __iar_data_init3 innerhalb des Projekts 
findet, dann nimmt der die darunterliegende (selbstgeschriebene) 
Funktion. Wenn er nix findet, dann greift er auf die Funktionen von IAR 
zurück, die als vorcompilierte Library in der Installation der Embedded 
Workbench vorliegen.

Das Ergebnis kannst Du wieder im *.map sehen, wenn die Verweise auf die 
ganzen *.a Files mit kryptischem Namen am Ende des *.map weniger 
werden...

von Micha (Gast)


Lesenswert?

Leopold N. schrieb:
> Den ganzen Krempel will ich aber selber schreiben.

Wenn du nicht grundsätzlich ein Problem mit Eclipse hast, kannst du dir 
auch https://gnu-mcu-eclipse.github.io/ ansehen. Dort gibt es 
Anleitungen und da es Open Source ist kannst du dir ansehen wie es 
funktioniert und es ändern.

von Random .. (thorstendb) Benutzerseite


Lesenswert?

MDK-ARM (µVision) ist dem Visual Studio sehr ähnlich, und bietet die auf 
MCUs ausgelegten Debug Features. STLink wird unterstützt. Frei bis 32k 
Code.
http://www.keil.com/

Ansonsten gibt es noch Embedded Studio, das sieht ähnlich aus (hab es 
noch nie benutzt, ich verwende MDK-ARM pro):
https://www.segger.com/products/development-tools/embedded-studio/

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Alternativ:
Embedded Studio
https://www.segger.com/products/development-tools/embedded-studio/

[Edit} Ups, da war einer ein paar Sekunden schneller ;-)

: Bearbeitet durch User
von Vincent H. (vinci)


Lesenswert?

Leopold N. schrieb:
> Meine Idee:
>
> In Visual Studio Code eine .json Datei schreiben, die die
> arm-none-eabi-gcc toolchain aufruft und ihr die Files übergibt.
> Ein weiteres .json File, die OpenOCD aufruft und das Debugging startet.
>
> Geht das und wenn ja, wie?
> Bitte mit Details und hilfreichen Links zu Seiten, wo ich so etwas
> Nachlesen kann.

Es gibt ein Plugin namens Cortex-Debug, dass Support für OpenOCD zur 
Verfügung stellt und Register und Peripheral View hat. Es reicht den 
Pfad zu OpenOCD einzustellen und ein launch.json zu Erstellen.


Zum Beispiel hier etwa meine aktuelle launch.json
1
{
2
  "version": "0.2.0",
3
  "configurations": [
4
    {
5
      "name": "Debug release",
6
      "cwd": "${workspaceRoot}",
7
      "executable": "./build/release/release.elf",
8
      "request": "launch",
9
      "type": "cortex-debug",
10
      "servertype": "jlink",
11
      "interface": "swd",
12
      "device": "STM32F407VG",
13
      "runToMain": true,
14
      "preRestartCommands": [
15
        "enable breakpoint",
16
        "monitor reset"
17
      ]
18
    }
19
  ]
20
}


Näheres hier:
https://marcelball.ca/projects/cortex-debug/

von Leopold N. (leo_n)


Lesenswert?

Til S. schrieb:
> Alternativ:
> Embedded Studio
> https://www.segger.com/products/development-tools/embedded-studio/
>
> [Edit} Ups, da war einer ein paar Sekunden schneller ;-)

Ist die einzige IDE, die ich noch net ausprobiert hab, hab nämlich n ST 
Link

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Ist das ein ST Link onboard? Dann kannst du ihn in einen J-Link 
verwandeln:
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/

Ansonsten wird es Zeit sich einen J-Link zuzulegen ;-).

von Operator S. (smkr)


Lesenswert?

Leopold N. schrieb:
> Außerdem wäre es viel eleganter, nur eine IDE (--> Visual Studio Code)
> statt zweien verwenden zu müssen.

Schau dich mal im VSCode marketplace um. Da gibts einige Extensions für 
dein Anliegen. Ohne davon eines getestet zu haben, z.B. 
https://marketplace.visualstudio.com/items?itemName=metalcode-eu.windows-arm-none-eabi 
oder 
https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug

von Leopold N. (leo_n)


Lesenswert?

Til S. schrieb:
> Ist das ein ST Link onboard? Dann kannst du ihn in einen J-Link
> verwandeln:
> 
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/st-link-on-board/
>
> Ansonsten wird es Zeit sich einen J-Link zuzulegen ;-).

Ne is kein OnBoard...

Operator S. schrieb:
> Schau dich mal im VSCode marketplace um. Da gibts einige Extensions für
> dein Anliegen. Ohne davon eines getestet zu haben, z.B.
> 
https://marketplace.visualstudio.com/items?itemName=metalcode-eu.windows-arm-none-eabi
> oder
> https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug

Hab ich mir schon angeschaut und auch versucht mithilfe von Tutorials 
zum Laufen zu bringen, aber hat net funktioniert.

von Vincent H. (vinci)


Lesenswert?

Leopold N. schrieb:
> Hab ich mir schon angeschaut und auch versucht mithilfe von Tutorials
> zum Laufen zu bringen, aber hat net funktioniert.

Eigenwerbung:
https://higaski.at/vscode-arm-cortex-m-debugging/

von janvi (Gast)


Lesenswert?

Der Segger Debugger läuft auch Standalone ohne IDE.
Für Make Thomas Peschel-Findeisen oder Helmut Herold (Addison Wessley)
aber wieso überhaupt make ? Im Gegensatz zu einem Linux Kernel 
compiliert
der gcc ein uC Code auf aktuellen Rechnern so schnell, daß du es nicht 
mal schaffst eine Tasse nachzufüllen. Also kannst du stattdessen den 
Aufruf über ein ganz normales batch File machen und einfach immer alles 
übersetzen. Das ist am Anfang sowieso sicherer als wenn man beim 
makefile basteln irgendwelche Abhängigkeiten vergisst. Es schadet 
sowieso nicht wenn du die gcc Schalter kennst und weist, was im Linkfile 
und in den Startup Code reingehört. Dann könntest du tatsächlich auch 
mit dem Visual Studio editieren. Als echter Hardcore Hacker vielleicht 
noch vi oder Wordstar im non document Modus als Editor ?

Hitex scheint seinen Tantino zwischenzeitlich verschrottet zu haben aber 
es gibt auch eine freie WinIdea Version die mit dem Segger Jlink 
bemerkenswerterweise sogar besser läuft als mit den iSystem eigenen 
Kabeln

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.