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
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.
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?
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.
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?
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 :-)
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?
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.
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
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
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 :-)
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
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?
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
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.
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...
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.
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/
Alternativ: Embedded Studio https://www.segger.com/products/development-tools/embedded-studio/ [Edit} Ups, da war einer ein paar Sekunden schneller ;-)
:
Bearbeitet durch User
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/
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
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 ;-).
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
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.
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/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.