STM32CubeIDE

Gast #5830669
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?
Gast #5831812
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?
Gast #5832113
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]);
#5903269
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...
#5903383
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?
#5903395
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.
#5903407
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren