Forum: Compiler & IDEs MCUXpresso - CMSIS Core wird nicht gefunden


von Checker (Gast)


Lesenswert?

Hallo,

habe mich an die Beschreibung gehalten und auch andere ausprobiert.
http://www.ocfreaks.com/tutorial-using-mcuxpresso-create-cortex-m-project-cmsis/

Step 6:
Das mit dem Import "LatestCMSIS ..." funktioniert nicht. Kann ich zwar 
auswählen aber danach die "CMSIS_CORE..." nicht anhaken. Die 
nachfolgende Auswahl CMSIS_CORE_LPC17xx" funktioniert und damit 
funktioniert auch der Testcode erstmal im Debugmode. Was der CMSIS 
Unterschied ist und ob das wichtig ist weiß ich nicht. Vielleicht weiß 
es jemand?

Kompilieren funktioniert im Debugmode. Auch takten die Pin am Oszi 
sichtbar. Der Pin taktet im Debugmode mit 9,1MHz.

Nur wie bekomme ich das Release kompiliert. Dabei findet es die CMSIS 
Core nicht mehr. Im Debugmode muss er die doch auch benötigen?
1
make -r -j8 all 
2
Building file: ../src/GPIO_0.cpp
3
Invoking: MCU C++ Compiler
4
arm-none-eabi-c++ -D__NEWLIB__ -DNDEBUG -D__CODE_RED -DCORE_M3 -D__USE_CMSIS=CMSIS_CORE_LPC17xx -DCPP_USE_HEAP -D__LPC17XX__ -I"C:\Users\Checker\Documents\MCUXpressoIDE_10.1.1_606\workspace\CMSIS_CORE_LPC17xx\inc" -Os -fno-common -Os -g -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -fdata-sections -fno-rtti -fno-exceptions -mcpu=cortex-m3 -mthumb -MMD -MP -MF"src/GPIO_0.d" -MT"src/GPIO_0.o" -MT"src/GPIO_0.d" -o "src/GPIO_0.o" "../src/GPIO_0.cpp"
5
Finished building: ../src/GPIO_0.cpp
6
 
7
Building target: GPIO_0.axf
8
Invoking: MCU C++ Linker
9
arm-none-eabi-c++ -nostdlib -Xlinker -Map="GPIO_0.map" -Xlinker --gc-sections -Xlinker -print-memory-usage -mcpu=cortex-m3 -mthumb -T "GPIO_0_Release.ld" -o "GPIO_0.axf"  ./src/GPIO_0.o ./src/cr_cpp_config.o ./src/cr_startup_lpc175x_6x.o ./src/crp.o   -lCMSIS_CORE_LPC17xx
10
c:/nxp/mcuxpressoide_10.1.1_606/ide/tools/bin/../lib/gcc/arm-none-eabi/6.3.1/../../../../arm-none-eabi/bin/ld.exe: cannot find -lCMSIS_CORE_LPC17xx
11
collect2.exe: error: ld returned 1 exit status
12
make: *** [GPIO_0.axf] Error 1
1
#ifdef __USE_CMSIS
2
#include "LPC17xx.h"
3
#endif
4
5
#include <cr_section_macros.h>
6
7
8
int main(void) {
9
10
    SystemInit();                      //Clock and PLL configuration
11
      LPC_GPIO0 -> FIODIR = 0xFFFFFFFF;    //Configure the PORT pins as OUTPUT;
12
13
14
    while(1)
15
    {
16
         LPC_GPIO0->FIOSET = 0xFFFFFFFF;     // Turn ON all the LEDs
17
18
         LPC_GPIO0->FIOCLR = 0xFFFFFFFF;     // Turn OFF all the LEDs
19
    }
20
21
    return 0 ;
22
}

von Johannes S. (Gast)


Lesenswert?

kontrolliere mal in den Projekteinstellungen 'C/C++ Build - Settings - 
MCU Linker - Librariers' ob die CMSIS lib und Pfad für Debug und Release 
eingetragen sind.

von Checker (Gast)


Angehängte Dateien:

Lesenswert?

meinst du das?
Die Begriffe "MCU-Linker" finde ich nirgends.

von Johannes S. (Gast)


Lesenswert?

Jein, du musst die Root vom Projekt markieren und dann die Eigenschaften 
anzeigen lassen. Da müssen dann auch die Linker Settings drin sein.

von Checker (Gast)


Angehängte Dateien:

Lesenswert?

ganz schön versteckt

Die Libraries Einträge sind gleich zwischen Release und Debug.
Allerdings sah ich nebenbei die Einträge direkt unter MCU C++ Linker. 
Die sind verschieden in den Optionen.
Falls das wichtig wäre. Da gibts bei Debug eine CMSIS Core Option und 
bei Release nicht.

Warum ausgerechnet ich Probleme bei der Installation habe kann ich nicht 
nachvollziehen. Bis jetzt klappte alles. Vielleicht kann sich 
Atmel/Microchip und NXP auf der Platte nicht leiden.  :-)   Atmel Studio 
zickte nicht rum. µC auswählen und los gings. Hilft jetzt auch nicht 
weiter, wollte es nur erwähnen.

von Johannes S. (Gast)


Lesenswert?

Ja, keine Rose ohne Dornen :-) ich hatte ja gesagt das man sich mit 
Eclipse erst anfreunden muss...

In den grauen Boxen sind die Einstellungen mit denen der Linker 
aufgerufen wird und die ergeben sich aus den Dialogen darunter. Da passt 
es also nicht das Debug/Release gleich sein sollen.

Evtl. gibt es die Cmsis Lib noch nicht als Release - ins Cmsis Projekt 
wechseln und Release bauen. Allerdings sollte den Dialog erstmal nicht 
interessieren das die Lib nicht da ist, deshalb vermute ich doch das die 
Einstellungen unter Libraries nicht gleich sind.

Dann gibt es noch die Möglichkeit auf andere Projekte zu verweisen um 
die zu inkludieren. Das wäre unter Project References da im Baum zu 
finden.

Kann das gerade nicht testen und da auch nur raten.

von Checker (Gast)


Angehängte Dateien:

Lesenswert?

Die IDE möchte mich nur vom schnelleren µC fernhalten, wird sie auf 
Dauer nicht schaffen.   :-)

"Project Reference" finde ich mal wieder nicht. Anbei ein Vollbild mit 
der geplagten Fehlermeldung vom Release Build und was ich überhaupt 
alles sehe.

Irgendwann juckte es im Finger und ich habe den Baum links oben von 
CMSIS_CORE... geöffnet und habe einfach mal die src > .c als Release 
kompiliert. Funktionierte.

Danach bin ich wieder auf mein Bsp. GPIO.cpp und habe Release Build 
gedrückt.
Wundersamerweise hat es fehlerfrei kompiliert.  Bild "seltsam.png"

Anderen Code reinkopiert, Release kompiliert auch. Scheint zu klappen.
Bild "anderes Release.png"
Muss man das jetzt verstehen? Falls es das jetzt war.

Aber. Das ist noch nicht die Lastest CMSIS CORE Lib.
Die kann ich nachwievor nur auswählen aber nicht anhaken bei einem neuen 
Projekt erstellen.
Ist das überhaupt wichtig ob lastest oder "normale"?

Jetzt wäre noch die Frage wie ich das Build aus der IDE heraus auf mein 
Arch Pro Board geschoben bekomme zum testen? Mir fehlt der Upload Button 
bzw. im Menü.

Und die SystemInit() Funktion benötigt man wirklich nicht?
Nicht das der µC im Schnarchmodus taktet.

Diese "cr_section_marcros.h", wo finde ich die und was stellt die zur 
Verfügung?  Wenn ich die finde kann ich selbst reinschauen.  ;-)
Die Pinname.h usw. habe ich schon gefunden.

Erstmal genug gefragt, muss dir wieder Zeit geben.

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

Checker schrieb:
> Irgendwann juckte es im Finger und ich habe den Baum links oben von
> CMSIS_CORE... geöffnet und habe einfach mal die src > .c als Release
> kompiliert. Funktionierte.
>
> Danach bin ich wieder auf mein Bsp. GPIO.cpp und habe Release Build
> gedrückt.
> Wundersamerweise hat es fehlerfrei kompiliert.

Das meinte ich damit, das es die cmsis lib noch nicht als release build 
gibt, da liegen die sourcen aber daraus wird eine Lib (eine richtige als 
Archivfile) gebaut und die fehlte dem gpio Projekt. Einmal erstellen 
reicht, jetzt kann die in mehreren Projekten verwendet werden.
Die DSP Version der CMSIS enthält noch Mathe Sachen wie fft, zu mehr ist 
die cmsis aber nicht zu gebrauchen. Ich dachte Anfangs auch das wäre wer 
was Tolles, aber da sind hauptsächlich Assembler Makros für Cortex-M 
Spezialitäten drin. Für Peripherie wie gpio nix, das ist ja wieder 
Herstellerabhängig.
Die Project References sind in dem Eigenschaften Dialog vom Projekt, den 
hattest du doch gezeigt.
Das Arch Pro sollte mit dem mbed Firmware Update das CMSIS-DAP 
Debuginterface haben. Also einfach USB Kabel dran und in der IDE links 
unten im Quickstart Panel auf 'Debug' klicken. Dann kommt ein Dialog mit 
dem hoffentlich gefundenen Board und nach ok rennt der Debugger ins 
main. Dann im Single Step oder mit Run schauen was das Programm macht.
SystemInit wird im Startup Code vor dem main aufgerufen, die Datei ist 
aber auch im Projekt zu sehen.

Das Debuggen starten am Besten im Debug Build, beim Release wird immer 
vieles wegoptimiert und das verwirrt wenn die Codezeilen in anderer 
Reihenfolge oder garnicht aufgerufen werden.

von Checker (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

den Debugmodus hatte ich vor paar Tagen schon entdeckt und er 
funktionierte ja als Einziger. Ich meinte jedoch wie ich das Programm 
ohne Debugmodus auf das Board bekomme? Also die Release kompilierte 
Version. Zur Zeit werden die Programme nur immer mit Debug auf das Board 
geschoben. Es muss doch auch normal möglich sein?

Allerdings und nun kommts wieder dicker, erhalte seit der obigen 
Fehlerbehebung mit der cmsis core Kompilierung immer nach Buildung egal 
ob Release oder Debug immer eine wmic Fehlermeldung. Drücke ich die Weg 
gehts weiter als wäre nichts gewesen. Und das Taktsignal sieht nicht wie 
ein Rechteck aus sondern wie schlanke Spitzen mit nur 6,7MHz. Sollte 
eigentlich schneller sein. Nehme ich SystemInit() mit rein sieht es 
schon eher nach Taktsignal aus aber auch wieder mit nur 6,7MHz.

Ich bekomme noch die Motten ...

von Checker (Gast)


Lesenswert?

Das "wmic createprocess error=2" Problem konnte durch PATH Änderung der 
Umgebungsvariablen behoben werden. Ich kann es nicht beweisen, aber seit 
der mbed cli und MCUXpresso Installation musste ich schon mehrfach die 
Umgebungsvariablen anpassen bzw. korrigieren. Hatte ich im Leben noch 
nicht anfassen müssen. Irgendwas könnte im argen liegen. Ich habe jetzt 
einen Screenshot als Backup angelegt.

von Checker (Gast)


Lesenswert?

achso, was musste ich ändern/ergänzen ...
PATH:  C:\Windows\System32\wbem

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.