Forum: Compiler & IDEs STM32CubeIDE


von Thomas L. (thomas_hx)


Lesenswert?

STM32CubeMX ist jetzt in die IDE integriert.
https://www.st.com/en/development-tools/stm32cubeide.html

von Curby23523 N. (Gast)


Lesenswert?

Na dann hoffen wir mal, dass es keinen MX Zwang gibt. Im Sinne von, dass 
man ohne einbinden der Libs etc. nichts übersetzen kann. Ich benutze 
nämlich nur direkten Registerzugriff.

PS: Was soll eigentlich dieser Unsinn, dass man für jeden Download 
seinen Namen, Nachnamen und E-mail angeben muss. Die wissen doch genau, 
dass die meisten (genauso wie ich) da nur Unsinn und eine Wegwerf E-mail 
angeben.

EDIT: Scheinbar gibt es immernoch keine Strg+F11 Run option.. oder 
übersehe ich die?

von Horst (Gast)


Lesenswert?

Curby23523 N. schrieb:
> Ich benutze
> nämlich nur direkten Registerzugriff.

Ich schätze CubeMX sehr, weil ich damit in wenig Zeit viel erreiche. Wie 
lange brauchst Du denn z.B. um eine DMA Übertragung von ADC1 und ADC2 im 
Dual-Mode zu einem Buffer im RAM aufzubauen wenn Du die Bits in den 
Registern direkt ansprichst? Ich stelle mir das sehr aufwändig vor die 
Datenblätter und Referenzen zu wälzen und dann den Code zu debuggen?

von Christopher J. (christopher_j23)


Lesenswert?

Thomas L. schrieb:
> STM32CubeMX ist jetzt in die IDE integriert.
> https://www.st.com/en/development-tools/stm32cubeide.html

Sieht fancy aus, vor allem wegen der Trace-Optionen. Gab/gibt es die 
schon im TrueStudio?

von Curby23523 N. (Gast)


Lesenswert?

Ich habe die STM32CubeIDE inzwischen in gebrauch. Sieht nicht sonderlich 
anders aus, als das bisherige Atollic.

Horst schrieb:
> Ich schätze CubeMX sehr, weil ich damit in wenig Zeit viel erreiche. Wie
> lange brauchst Du denn z.B. um eine DMA Übertragung von ADC1 und ADC2 im
> Dual-Mode zu einem Buffer im RAM aufzubauen wenn Du die Bits in den
> Registern direkt ansprichst? Ich stelle mir das sehr aufwändig vor die
> Datenblätter und Referenzen zu wälzen und dann den Code zu debuggen?

5 Minuten, manchmal 10 (wenn noch nie gemacht). Macht man in einem 
Projekt in der Regel ein oder zwei mal, dafür hat man komplett auf HAL 
verzichtet. Ich verbrauche wesentlich mehr Zeit beim 
Programmieren/debuggen meines eigenen Codes, als vom Zugriff auf die 
Hardware.

Und wie immer geht es bei Registerzugriff NICHT um Zeitgewinn (wobei man 
auch sehr schnell ist, wenn man es einmal verstanden hat) - es geht um 
Sicherheit. Ich weiß wie es geht und was passiert und ich weiß, dass 
kein versteckter Code vorhanden ist, der mir irgendwie dazwischen 
grätscht und womöglich noch viele Bugs hat (was die HAL nachgewiesener 
Maßen hat).

Bei SPI sind es z.B. nur diese Zeilen:
1
RCC->AHBENR |= RCC_AHBENR_DMA1EN;
2
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;
3
4
DMA1_Channel2->CPAR = (uint32_t)&SPI1->DR;
5
DMA1_Channel2->CMAR = (uint32_t)&au8OutputData;
6
DMA1_Channel2->CNDTR = DATASIZE - 1;
7
DMA1_Channel2->CCR = DMA_CCR_EN | DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE;
8
9
SPI1->CR1 |= SPI_CR1_SSM;
10
SPI1->CR1 |= SPI_CR1_MSTR;
11
SPI1->CR1 |= ((uint16_t)2<<3);
12
SPI1->CR2 |= (0b0111ul << 8);
13
SPI1->CR2 |= SPI_CR2_SSOE;
14
SPI1->CR2 |= SPI_CR2_FRXTH;
15
SPI1->CR2 |= SPI_CR2_RXDMAEN;
16
SPI1->CR1 |= SPI_CR1_SPE;
17
18
SPI_SendDMA(SPI1, au8OutputData[0]);

von Au weia (Gast)


Lesenswert?

Thomas L. schrieb:
> STM32CubeMX ist jetzt in die IDE integriert.

Ich glaub es einfach nicht.
Es scheint keine 32-Bit-Installation zu geben.

Warum muss so eine billige Java App 64-bittig sein?

von Damals in Stalingrad (Gast)


Lesenswert?

Au weia schrieb:
> Es scheint keine 32-Bit-Installation zu geben.

X64 gibt es seit 2003, wo ist das Problem?

von Au weia (Gast)


Lesenswert?

Damals in Stalingrad schrieb:
> X64 gibt es seit 2003, wo ist das Problem?

Dass es triftige Gründe gibt ein 32-Bit (Betriebs-)System
zu verwenden (auch wenn man 64-bittige Hardware hat) und
darauf keine 64-Bit Applikationen laufen.

von Mike (Gast)


Lesenswert?

>> X64 gibt es seit 2003, wo ist das Problem?
> Dass es triftige Gründe gibt ein 32-Bit (Betriebs-)System

Ich frage mich welche? Ich weiss keine echten Gründe noch 32 Bitig 
fahren.

von Leopold N. (leo_n)


Lesenswert?

Weiß jemand, wie man in STM32CubeIDE im Debug Modus mehrere Instanzen 
der SFR View anzeigen erzeugen kann?
Wäre ganz cool beim Debuggen mehrere Hardwareregister aufeinmal 
beobachten zu können...

von nur lam so (Gast)


Lesenswert?

Au weia schrieb:
> Dass es triftige Gründe gibt

und die wären?

von Vincent H. (vinci)


Lesenswert?

Funktioniert der Scheißdreck bei irgendwem? Hab mir jetzt vor kurzem mal 
die aktuelle Version auf eine Arch-Installation gezogen, ein Projekt 
erstellt und eine Debug-Konfiguration dafür kreiert.

Bis ich soweit kam musste ich schon einmal den Indexer abdrehn weil mein 
Projekt scheinbar zu groß ist... Ja gut, verständlich dass 2MB Text 
einen Rechner mit 64GB in die Knie zwingen.

Dann musste ich mein executable umbenennen, weil sich das Plugin weigert 
irgendwas zu nehmen was nicht auf .elf endet.

Auto-build abdrehn? Geht nicht. Weder in den Workspace settings noch in 
der Debug-Konfiguration.

Egal, proceed...

Dann erbarmt sich mein JLink tatsächlich und spielt das Projekt ein! Es 
öffnet sich die Debug Perspective und BOOM. Die Scheiß IDE is tot...

von Harry L. (mysth)


Lesenswert?

Vincent H. schrieb:
> Funktioniert der Scheißdreck bei irgendwem?

Ja, vollkommen problemlos.

Vincent H. schrieb:
> ein Projekt
> erstellt und eine Debug-Konfiguration dafür kreiert.

Die Debug-Konfiguration ist bereits fertig wenn das Projekt korrekt 
erzeugt wurde.
Ausser dem Umstellen auf J-Link musste ich da noch nie etwas ändern.

Vincent H. schrieb:
> Dann musste ich mein executable umbenennen, weil sich das Plugin weigert
> irgendwas zu nehmen was nicht auf .elf endet.

Dann war das aber kein CubeIDE-Projekt.
Das widerspricht sich dann mit dem, was du oben schreibst.

Vincent H. schrieb:
> ein Projekt
> erstellt

Vincent H. schrieb:
> Dann erbarmt sich mein JLink tatsächlich und spielt das Projekt ein! Es
> öffnet sich die Debug Perspective und BOOM. Die Scheiß IDE is tot...

Ist bei meiner täglichen Arbeit damit noch nie passiert.
Bist du sicher, daß dein JavaRuntime dazu passt?

von Vincent H. (vinci)


Lesenswert?

Harry L. schrieb:
> Dann war das aber kein CubeIDE-Projekt.
> Das widerspricht sich dann mit dem, was du oben schreibst.

Ist es auch nicht. Mein executable erzeuge ich mit cmake und als Editor 
nutze ich lieber VSCode. STM32CubeIDE wollte ich eigentlich nur 
ausprobieren weil die aktuelle Hardware-Revision eines Produkts an dem 
ich arbeite wieder einen SWO-Ausgang besitzt und damit doch einige ganz 
praktische Dinge möglich sind.

Was natürlich trotzdem problemlos gehn sollte ist ein "default" Projekt 
auf Basis des selben Prozessors zu erzeugen, dort alles rauszulöschen 
und dann schlichtweg eine Debug-Konfiguration anzulegen die eben auf das 
via cmake compilierte executable zeigt.


Harry L. schrieb:
> Ist bei meiner täglichen Arbeit damit noch nie passiert.
> Bist du sicher, daß dein JavaRuntime dazu passt?

Keine Ahnung ehrlich gesagt. Pacman sagt mir das folgendes installiert 
ist:
local/java-environment-common 3-1
    Common files for Java Development Kits
local/java-runtime-common 3-1
    Common files for Java Runtime Environments
local/jdk8-openjdk 8.u222-2
    OpenJDK Java 8 development kit
local/jre8-openjdk 8.u222-2
    OpenJDK Java 8 full runtime environment
local/jre8-openjdk-headless 8.u222-2
    OpenJDK Java 8 headless runtime environment


Ein normales Eclipse + GNU MCU Plugin funktioniert interessanterweise, 
nur fehlen dort halt die ganzen Trace Features. :/


/edit
Einspielen tut er die Software noch bevor er sich abschießt.

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Von Java hab ich leider wirklich keine Ahnung, und um Problemen damit 
von Anfang an aus dem Weg zu gehen hab ich bei mir Oracle-Java 8 
installiert.

Das hat zumindest immer problemlos funktioniert.
Ob es tatsächlich an OpenJDK liegt kann ich also nicht sagen.

Vielleicht solltest du mal versuchen, dein komplettes Projekt in CubeIDE 
zu importieren.

Das funktioniert eigentlich recht gut - zumindest mit 
makefile-Projekten.
Mit cmake hab ich aber auch keine Erfahrungen.

Oder du erzeugst ein neues Cube-Projekt und kopierst deinen Code in das 
Projekt unter Beibehalten von Linker- und Debug-File.

: Bearbeitet durch User
von pegel (Gast)


Lesenswert?

Also bei mir funktioniert STM32CubeIDE auch.
Es bringt, wenn nichts verstellt wurde, sogar sein eigenes java mit.
Siehe Verzeichnis jre.

von Vincent H. (vinci)


Lesenswert?

Oh man. Ich hab grad durch Zufall entdeckt was Schuld is. Man darf in 
den Debug-Konfigurationen aus irgendeinem Grund keine Variablen 
verwenden ala:
1
${project_loc}/build/test.elf

Verwende ich einen absoluten Pfad (home/...), dann funktionierts 
problemlos...

von Harry L. (mysth)


Lesenswert?

pegel schrieb:
> Es bringt, wenn nichts verstellt wurde, sogar sein eigenes java mit.

Aber nur in der Windoof-Variante.
Vincent und ich nutzen Linux.

von pegel (Gast)


Lesenswert?

Harry L. schrieb:
> Vincent und ich nutzen Linux.

Ich auch. Nur weiss ich nicht welcher Programmteil java benutzt.
So meldet es sich im Verzeichnis jre:


$ ./java -version
openjdk version "1.8.0_202"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.202-b08, mixed mode)

von Harry L. (mysth)


Lesenswert?

pegel schrieb:
> Nur weiss ich nicht welcher Programmteil java benutzt.

Die gesamte IDE (Eclipse) und CubeMX sind Java-Programme.

von pegel (Gast)


Lesenswert?

Der STM32CubeProg auch. Der ist auch im Paket enthalten.
Müsste man mal testen, ob dessen GUI Version damit funktioniert.

von pegel (Gast)


Lesenswert?

Harry L. schrieb:
>> Nur weiss ich nicht welcher Programmteil java benutzt.

Ich hätte schreiben sollen, welches dieses und nicht das System Java 
benutzt.

von Ingo S. (ingo-s)


Lesenswert?

Gibt es mittlerweile Erfahrungen mit der neuen Version 1.02?

Noch benutze ich True Studio und ganz selten mal CubeMx.
Gibt es Gründe, noch bei der alten 2er Kombination zu bleiben?

Zusätzlich habe ich noch einige alte CooCox Projekte, die ich auch mal 
umziehen müsste.

Gruß Ingo

von Hans-Georg L. (h-g-l)


Lesenswert?

Ich habe in letzter Zeit etliches getestet...
Eine moderne und die meiner Meinung nach flexibelste Lösung ist 
Eclipse_cpp_2019_06 dazu noch das MCU Plugin installieren.

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.