CMSIS DSP Library richtig anwenden

OP Persönliche Seite #4075398
Autor: DH1AKF K. (wolfgang_kiefer)
Datum: 01.04.2015 11:52
Angehängte Dateien:
fft.c (917 Bytes, 21 Downloads) | Codeansicht


Hallo Experten!
Es steht ein Programm zur Verfügung, das für einen Microchip Controller 
und die zugehörige (Firmware-) Library geschrieben wurde.
Ich möchte es auf einen anderen Prozessor (Cortex- M3) portieren, und
dabei die CMSIS- DSP- Library- Funktionen benutzen.

Frage: Hat einer von Euch schon mal so etwas probiert? Oder gibt es
Beispiele, wie man die DSP- Funktionen der CMSIS anwendet?
Bin für alle Hinweise dankbar.
Angehängte Dateien:
Gast #4075740
Das was du da gepostet hast, besteht praktisch nur aus ein paar Aufrufen 
von Funktionen, die es im MicroChip-Portfolio gibt. Sowas kann man nicht 
portieren. Du müßtest dich stattdessen mit der Doku zu den 
CMSIS-DSP-Routinen vertraut machen und die Aufrufe der dort vorhandenen 
Funktionen dir selber neu schreiben - aber das Aufrufen von fertigen 
Bibliotheksroutinen ist ja nur Kleinkram.

Gehe ich recht in der Annahme, daß du dir nen Bandpaß (300..2700 Hz oder 
so) programmieren willst?

W.S.
OP Persönliche Seite #4075812
W.S. schrieb:
> Gehe ich recht in der Annahme, daß du dir nen Bandpaß (300..2700 Hz oder
> so) programmieren willst?

Nein, es soll eine kleine FFT- Anwendung für einen Demodulator (PSK31 
und CW) werden. Das Spektrum, auf einem GLCD angezeigt, soll die exakte 
Frequenzeinstellung im o.g. Frequenzbereich ermöglichen.

Ich habe schon ein CMSIS- Beispiel versucht zu übersetzen, aber meine 
IDE - es ist der PSoC Creator 2.2 von Cypress - erzeugt ihrerseits 
"Firmware"- Quellcode, der mit CMSIS kollidiert.

So einfach, wie ich mir das vorgestellt habe, geht es leider nicht: Ich 
muss die ganzen Hardware- Eigenschaften meines Prozessors definieren, 
damit CMSIS
 vernünftig laufen kann.

Ein Bandpass 300..2700 wäre mit der IDE in 5 Minuten fertig ...

Danke für die Antwort, W.S. !
OP Persönliche Seite #4075956
DH1AKF K. schrieb:
> habe schon ein CMSIS- Beispiel versucht zu übersetzen, aber meine
> IDE - es ist der PSoC Creator 2.2 von Cypress - erzeugt ihrerseits
> "Firmware"- Quellcode, der mit CMSIS kollidiert.

Jetzt habe ich mal den Keil uVision5 installiert --> das 
Beispielprogramm von CMSIS (FFT32) ließ sich fehlerfrei compilieren...

...aber nicht als Target auf meinen PSoC5...
OP Persönliche Seite #4076887
Vielen Dank, Dieter für den guten Hinweis!

Nach etlichen Versuchen hat es nun auch bei mir geklappt mit dem 
fehlerfreien Compilieren. Ich habe erst einmal das mitgelieferte 
Beispiel (FFT 1024 Samples, Float32) ausprobiert.

Aber ein Flash- Verbrauch von ca. 230 kB ist nicht akzeptabel. Da bleibt 
ja kaum Platz für irgend etwas Anderes!

Vielleicht habe ich auch etwas falsch gemacht...
Gast #4076950
Respekt ich mußte an den bitreversal Assemblerquellen rumfummeln und 
komme auf Flash used: 248238 of 262144 bytes (94,7%).
Vermutlich  muß man die Datei arm_common_tables.c ausmisten da ist alles 
mit const auf Flash gesetzt.
#4077317
Wie wurde kompiliert? Die DSP Lib ist riesig, für FFT braucht es nur ein 
oder zwei der C Files. Bei GCC muss u.U. -ffunction-sections und bei LD 
-gc-sections als Parameter übergeben werden, damit ungenutzte Funktionen 
auch wirklich rausfliegen.
Gast #4077320
Wenn ich alle Tabellen lösche die für die Demo nicht gebraucht werden 
komm ich auf
Flash used: 51030 of 262144 bytes (19,5%).
SRAM used: 14957 of 65536 bytes (22,8%). Stack: 2048 bytes. Heap: 128 
bytes.
--------------- Build Succeeded: 04/02/2015 23:25:41 ---------------
ich hab in der Datei  arm_const_structs.c alles auskommentiert außer
 const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024 = {
  1024, twiddleCoef_1024, armBitRevIndexTable1024, 
ARMBITREVINDEXTABLE1024_TABLE_LENGTH
};
die Common tables aus dem Projekt entfernt
und dann anhand der fehlermeldungen geschaut was fehlt

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.