Forum: Mikrocontroller und Digitale Elektronik STM32CubeIDE + CMSIS DSP , wie bekomme ich das zum Laufen?


von Seppel V. (seppelv)


Angehängte Dateien:

Lesenswert?

Hallo,

auf einem Nucleo426 versuche ich die DSP-Bibliothek zum Laufen zu 
bekommen, habe aber das Problem dass es nicht kompilieren mag:

1) Wenn man Libraries wählt werden wahrscheinlich die Libraries nicht 
mit kopiert werden, ich hab auch nichts gefunden.

2) Wenn ich Source wähle wird zwar Code kopiert, aber wahrscheinlich 
nicht alles, es werden Fehler wie "...StatisticsFunctions.c:29:10: fatal 
error: arm_max_f32.c: No such file or directory" ausgegeben.

Kennt jemand das Problem, kann mir jemand ein paar Tipps geben woran das 
liegen kann? Ich würde auch gerne den integrierten FreeRTOS-Configurator 
nuten, das hatte geklappt,... bei der DSP-Lib komme ich irgendwie nicht 
weiter.

Vielen Dank, freue mich auf hilfreiche Kommentare, Grüße, Seppel

P.S. Wenn ich die CMSIS-Lib bei Github per Zip manuell herunterlade ist 
in den *. a Files so was drin wie das hier, was mache damit? Wie bekomme 
ich die kompilierten Lib’s,… ? Eigentlich wäre es kein Problem wenn die 
STM32CubeIDE das alles machen würde,... .

version https://git-lfs.github.com/spec/v1
oid 
sha256:665489491655c7175b701063d3c792ff443e4576ded2eb7fae114d94aae3d595
size 6421864

von pegel (Gast)


Lesenswert?

Zuerst einmal, ich habe keine Ahnung von DSP.

Aber: wenn ich das Packet X-CUBE-ALGOBUILD 1.1.0 wähle, kann ich DSP 
auswählen und alle Funktionen sind bei

#include "arm_math.h"

verfügbar. Zeig doch mal ein kurzen DSP Code für die main.c zum testen.

von pegel (Gast)


Lesenswert?

Bei "Define Symbols" noch hinzufügen:

-DARM_MATH_CM4

von pegel (Gast)


Lesenswert?

Besteht noch Interesse an der Lösung?

Ich denke, jetzt habe ich die Beste und Aktuellste für STM32CubeIDE.

Getestet mit dem arm_sin_cos_example_f32.c .

von Seppel V. (seppelv)


Lesenswert?

Hallo,

ja gerne, war nur gestern nicht zu Hause.

In der main.c habe ich:

#include "arm_math.h"


Warum sollte man X-CUBE-ALGOBUILD 1.1.0 wählen, geht nicht das ARM 
Package?


-DARM_MATH_CM4 habe ich gesetzt aber es fehlen trotzdem Dateien.

Hab aus dem Download einfach alles in 
../Middlewares/Third_Party/ARM_CMSIS/CMSIS/ , kopiert, jetzt habe ich 
andere Fehler, funktioniert aber immer noch nicht.

Bin für jede Hilfe sehr dankbar.

Viele Grüße, Seppel

von Seppel V. (seppelv)


Angehängte Dateien:

Lesenswert?

Hallo,

kleines update,  ich habe das Projekt noch mal neu angelegt, wenn ich 
nur das #include"arm_math.h" in der main.c habe, kompiliert es durch.

Aber wenn ich dann in die while loop die sinus Funktion aufrufe kracht 
es(siehe Screenshot).

Core/Src/main.o: In function `main':
C:/p_projects/STM32CubeIDE/workspace_1p4p0/429_dsp/Debug/../Core/Src/mai 
n.c:112:  undefined reference to `arm_sin_f32'
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:50: 429_dsp.elf] Error 1

Grüße, Seppel

von pegel (Gast)


Lesenswert?

Hi Seppel,

das mit dem X-CUBE-ALGOBUILD funktioniert zwar, ist aber nicht die 
neueste Version. Habe ich wieder verworfen.

Ich muss erst mal für ca. 2 Stunden weg, deshalb nur die Kurzfassung:

DSP: CubeIDE Lib Projekt anlegen

Prog: Lib Ordner mit Links auf die aktuelle Version


Bis nachher...

von Seppel V. (seppelv)


Lesenswert?

Hallo,

die STM32IDE scheint nicht alle Files zu kopieren, also hab ich aus dem 
Package von Github 
https://github.com/ARM-software/CMSIS_5/releases/tag/5.6.0 
heruntergelasen und in mein STM32CobeIDE Pojekt in den Pfad 
/429_dsp/Middlewares/Third_Party/ARM_CMSIS/CMSIS/DSP die Orner Include 
und Source kopiert.

Problem, mehrfach

Middlewares/Third_Party/ARM_CMSIS/CMSIS/DSP/Source/TransformFunctions/ar 
m_rfft_q31.o:  In function `arm_split_rfft_q31':
C:/p_projects/STM32CubeIDE/workspace_1p4p0/429_dsp/Debug/../Middlewares/ 
Third_Party/ARM_CMSIS/CMSIS/DSP/Source/TransformFunctions/arm_rfft_q31.c 
:131:  multiple definition of `arm_split_rfft_q31'
Middlewares/Third_Party/ARM_CMSIS/CMSIS/DSP/Source/TransformFunctions/Tr 
ansformFunctions.o:C:/p_projects/STM32CubeIDE/workspace_1p4p0/429_dsp/De 
bug/../Middlewares/Third_Party/ARM_CMSIS/CMSIS/DSP/Source/TransformFunct 
ions/arm_rfft_q31.c:131:  first defined here
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:60: 429_dsp.elf] Error 1
"make -j12 all" terminated with exit code 2. Build might be incomplete.

16:49:31 Build Failed. 674 errors, 2 warnings. (took 2s.685ms)

Ich finde aber of `arm_split_rfft_q31' nur ein mal in den Files, da 
scheint nichts doppelt zu sein.

Bin immer mehr verwirrt.

Grüße, Seppel

von Seppel V. (seppelv)


Lesenswert?


von Seppel V. (seppelv)


Lesenswert?

Zitat:

We introduced some "collective C files" which include all the other C 
files in a group. You must not include both, the collective and the 
individual files, in your project.

Frage: Warum inkludiert man C-Files? Und warum haben die keinen "Include 
Guard" ? Warum sollte man etwas so lösen?

Grüße, Seppel

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

So, bin wieder da.

Mein System:
Ubuntu 18.04
STM32CubeIDE-1.4.2
CMSIS-5.7.0
STM32F401CCU Black

Um immer aktuell zu sein, habe ich die Lib neu compiliert.

-CubeIDE: neues Projekt, Static Library, Name: arm_cortexM4lf_math
-µC auswählen, Lib sollte dann für die ganze Familie passen
-Include Verzeichnis anlegen, mit -I Suchpfad darauf einstellen

-Dateien aus: 
~/STM32Cube/Repository/STM32Cube_FW_F4_V1.25.0/Drivers/CMSIS/DSP/Include 
nach Include kopieren

-gewünschte Ordner, oder alle von 
~/STM32Cube/Repository/STM32Cube_FW_F4_V1.25.0/Drivers/CMSIS/DSP/Source 
nach /Src kopieren

das kompiliert sieht dann so aus:

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

-Projekt erstellen (Executable)

-im Projektverzeichnis /DSP Verzeichnis anlegen, und absoluten Link zu 
den Dateien aus dem Lib Projekt (dsp2.png)
damit kann das Verzeichnis DSP in jedes neue Projekt einfach kopiert 
werden

-Include eintragen (dsp3.png)

-Lib eintragen (dsp4.png)

Damit sollten alle Funktionen zur Verfügung stehen.
Gestestet mit meinem Board.

Wobei float32 natürlich eine Katastrophe ist. ;)

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Man muß das Library gar nicht selber bauen.
Wenn man das Package aus CubeMX heraus installiert hat, liegt das 
bereits auf der Platte.
Man muß die Dateien auch nicht in das Projekt kopieren.
Es reicht, den Include-Pfad auf den Repository-Pfad mit dem Package zu 
legen.
Das Selbe macht man mit dem existierenden Library.
Wichtig ist, bei der Angabe des Library-Namen das Prefix lib und die 
Extension .a wegzulassen.

: Bearbeitet durch User
von Seppel V. (seppelv)


Lesenswert?

Hallo,

ich habe mal nachgesehen welche Version ich habe. Woher habt ihr die 
Version 1.4.2, ich habe die 1.4.0.

https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html#get-software

Bei ST gibt es nur die 1.4.0?

Vielen Dank, Grüße, Seppel

von Harry L. (mysth)


Lesenswert?

Seppel V. schrieb:
> Bei ST gibt es nur die 1.4.0?

Das macht für dein konkretes Problem überhaupt keinen Unterschied.
Das Update auf 1.42 geschieht aus der IDE heraus

Help->Check for Updates

: Bearbeitet durch User
von Seppel V. (seppelv)



Lesenswert?

Hallo Harry,

das Problem ist, die Library-Files werden nicht in den Projekt-Workspace 
kopiert. Warum das nicht klapp weiß ich nicht.

Wie bekomme ich über GIT den Tag mit der Version 5.6.0 auf meine Platte 
in dem auch in den .a files etwas drin ist? Wenn ich in das Zip schue 
dann ist da ein LFS-Link drin. Wie kann ich das so "auschecken" dass ich 
nur die 5.6.0 mit den Files habe(Verwende noch SVN, mit Git kenne ich 
mich weniger gut aus).

Anbei ein Screenshot,... keine Ahnung warum jemand ein ZIP macht und da 
ist der LFS-Link, schade.

Vielen Dank, Grüße, Seppel

P.S. Das Update hat geklappt, dank für den Hinweis, hab mal alle 
Packages auf Stand gebracht. :-)

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Das ist auch aus CubeIDE möglich siehe unter Hilfe:

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Seppel V. schrieb:
> das Problem ist, die Library-Files werden nicht in den Projekt-Workspace
> kopiert.

Das ist ja auch vollkommen unnötig.
Wenn du das Paket (CMSIS DSP) aus CubeMX heraus installiert hast, 
befindet sich das Library ja bereits auf deiner Platte.
Du musst das nur noch referenzieren.
Wo du die findest steht in den Einstellungen. (siehe Anhang)

Und hier:
Beitrag "Re: STM32CubeIDE + CMSIS DSP , wie bekomme ich das zum Laufen?"
hab ich ja beschrieben, wie du das einbindest.

von pegel (Gast)


Lesenswert?

Da braucht es keine externen links.
Die Pakete liegen alle im Repository Verzeichnis

von Seppel V. (seppelv)


Angehängte Dateien:

Lesenswert?

Hallo,

ok, super, ohne eure Unterstützung hätte ich das Setting nie gefunden. 
Hab den Pfad geändert und die Dateien sind jetzt im Workspace.

Die Include-pfade und die Linker-Seetings habe ich auch angepasst, die 
hat die STM32CubeIde nicht gesetzt, was ich erwartet hätte.

Funktioniert aber immer noch nicht, der Linker findet anscheinend Objets 
nicht, siehe Screenshot.

Grüße, Seppel

P.S. Das mit GIT würde ich gerne verstehen, wie kann ich das so 
auschecken dass ich die keinen LFS Link drin hab. Hab’s mit SVN 
probiert, Auschecken ging sehr elegant, aber in den Files ist trotzdem 
der LFS-Link drin. Git-Bash, damit kenne ich mich nicht gut aus und die 
Git-GUI bringt mcih auch nicht weiter. Ich sehe den 5.6.0 er Tag, aber 
wie ich die Version mit den .s file auf den rechner bekomme, hab’s noch 
nicht verstanden.

von Johannes S. (Gast)


Lesenswert?

da wird angemeckert das die floating point formate von Lib und Programm 
nicht übereinstimmen. Gibt es die Lib auch mit HW floating point?

von Harry L. (mysth)


Lesenswert?

Seppel V. schrieb:
> Funktioniert aber immer noch nicht, der Linker findet anscheinend Objets
> nicht, siehe Screenshot.

Ja, und in den Fehlermeldungen beschwert der Linker sich, daß er dein 
Library nicht findet.
Also entweder stimmt der Pfad nicht, oder der Library-Name.

Du verwendest ja Windoof; gabs da nicht irgendwann mal ein Problem mit 
zu langen Pfaden?

von Harry L. (mysth)


Lesenswert?

Johannes S. schrieb:
> Gibt es die Lib auch mit HW floating point?

Ja genau!
Hatte ich übersehen.

arm_cortexM4lf_math
sollte passen.

von pegel (Gast)


Lesenswert?

...uses VFP registers... ...does not

Deutet darauf hin, dass einige Dateien mit FPU Unterstützung compiliert 
sind, andere nicht.

Das war die Grundidee dafür, die Lib wie auch die Anwendung für den 
passenden µC zu bauen.

von Seppel V. (seppelv)


Angehängte Dateien:

Lesenswert?

Hallo,

an den Pfaden liegt es nicht, sonst würde es auch das Headerfile nicht 
includieren können.

Bei q31_t funktioniert es ebenfalls nicht. An float liegt es nicht.
Die FPU ist an, wie man am Screenshot sieht.


Als nächstes werde ich versuchen die Library wie oben im Thread zu 
compilieren.

Grüße, Seppel

von pegel (Gast)


Lesenswert?

Wenn das bei Win mit den Links zu schwierig ist, kannst Du die beiden 
Dateien auch einfach in dein Exe Projekt kopieren.

Werden dann nur nicht bei Lib Neubau automatisch aktualisiert.

von pegel (Gast)


Lesenswert?

Übrigens kannst Du an Stelle der Version aus:

~/STM32Cube/Repository/STM32Cube_FW_F4_V1.25.0/Drivers/CMSIS/DSP/

auch die neuere aus:

~/STM32Cube/Repository/Packs/ARM/CMSIS/5.7.0/CMSIS/DSP/

benutzen.
Der Ablauf ist der Gleiche.

von seppelv (Gast)


Lesenswert?

Hallo,

was meinst Du mit Exe-Projekt?

Die letzten zweiposts kann ich leider nicht nachvollziehen.

Vielen Dank.

Grüsse, Seppel

von pegel (Gast)


Lesenswert?

Moin,
es gibt das Lib Projekt und das dieses benutzt ist das Exe Projekt.

Das mit den links bedeutet, dass Du die arm_math.h und die erzeugte Lib 
auch einfach in das DSP Verzeichnis kopieren kannst. (dsp2.png)

Du kannst entweder wie oben geschrieben die Quellen des F4 DSP in der 
Version 1.5.1, oder die aus CMSIS-5.7 Version 1.7 benutzen.

Wie weit bist Du?

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Ich verstehe nicht, warum du dir das Leben so schwer machst...
Alle Librarys, die du brauchst liegen bereits fertig compiliert auf 
deiner Platte.
Am Anfang der arm_math.h findet sich der folgende Hinweis. (siehe 
Anhang)

Du benötigst das arm_cortexM4lf_math.

: Bearbeitet durch User
von Seppel V. (Gast)



Lesenswert?

Hallo,

ich hab auf einem anderen Rechner auf dem bisher nichts von ST 
installiert war STM32CubeIDE neu installiert. Danach hab ich ein Update 
auf die Version 1.4.2 geamcht,... alles schön up to Date gebracht.

Dann kam die "Überraschung", ich hab im "Embedded Software Packages 
Manager" gar keinen ARM Tab (siehe Screenshot). Wie kann das sein? 
Unterstützt ST die CMSIS nicht mehr?

Grüße Seppel

von Harry L. (mysth)


Angehängte Dateien:

Lesenswert?

Du suchst ja auch an der falschen Stelle.

von pegel (Gast)


Lesenswert?

@Seppel

Du kannst auch das Paket herunterladen und dann "From Local" 
installieren.

https://github.com/ARM-software/CMSIS_5/releases/download/5.7.0/ARM.CMSIS.5.7.0.pack

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.