Hallo Ich verwende LPCXpresso v8.2.2 mit einem LPC Link 2. Prinzipiell funktioniert alles, also ich kann compilieren, er lädt mir den Code auf das Target, und ich kann durchsteppen und mir den Inhalt der Variablen anschauen. Meine Frage nun. 1.) Gibt es eine einfache Möglichkeit ein printf oder co. so umzuleiten, das ich es dann als Output im LPCXpresso sehe? (Ich möchte bei vielen Sachen zB keinen Breakpoint, aber den Verlauf der Variable sehe) 2.) Im LPCXpresso gibt es einen Reiter mit SWO Trace Config - Da sehe ich ein SWD Connection wo nur ein grauer Punkt ist ...
Ich habe es nicht hinbekommen. Ich habe dann einen Uart aktiviert und dann Debug-Infos über seriell in ein 2tes Terminal ausgegben. Das wird später auf der Zielplatine dann genauso sein.
Bei den LPCopen Beispielen gibt es eines mit dem Namen nxp_lpcxpresso_11c24_periph_adc da sieht man wie die Ausgabe mittels DEBUGOUT funktioniert und wie der Controller dafür konfiguriert werden muss. Christian_RX7
Dazu muss gegen die 'Semihost' Library gelinkt werden. Die alten CodeRed Doku Seiten sind da sehr hilfreich: http://www.support.code-red-tech.com/CodeRedWiki/UsingPrintf
Hmmm... Also wenn ich die RedLib (semihost) verwende, dann lässt sich alles kompilieren und co nur printf macht nix. Sobald ich das __main() aufrufe gleich als erste zeile im main, dann bekomme ich einen Fehler. Selbiges mit den newlib(semihost) immer einen Fehler und er steht dann in der zeile (nachher passiert nichts mehr)
1 | __attribute__ ((section(".after_vectors"))) |
2 | void HardFault_Handler(void) |
3 | {
|
4 | while(1) |
5 | {
|
6 | }
|
7 | }
|
Das __main() musst du nicht aufrufen, das macht der startup code (soll er machen), das wird zu einer Endlosschleife führen wenn das selber wieder main() aufruft. Hast du ein LPCOpen Beispiel benutzt? Im Can Beispiel für 11C24 ist im startup code schon der richtige call drin wenn die richtigen defines verwendet werden:
1 | #if defined (__REDLIB__)
|
2 | // Call the Redlib library, which in turn calls main()
|
3 | __main() ; |
4 | #else
|
5 | main(); |
6 | #endif
|
7 | //
|
8 | // main() shouldn't return, but if it does, we'll just enter an infinite loop
|
9 | //
|
10 | while (1) { |
11 | ;
|
12 | }
|
13 | }
|
hmmm bin mir nicht ischer welches ich da habe :O also ich habe von dem hier weggearbeitet : LPCXpresso_8.2.2_650\workspace\nxp_lpcxpresso_11c24_periph_blinky\exampl e\src\blinky.c und in dem cr_startup ist dieses define drinnen
1 | #if defined (__REDLIB__)
|
2 | // Call the Redlib library, which in turn calls main()
|
3 | __main() ; |
4 | #else
|
5 | main(); |
6 | #endif
|
und das Library wähle ich wie im Bild1 aus. Das printf und co läuft zwar durch (also ich rufe das __main NICHT Auf, und es wird korrekt mein main aufgerufen und es läuft auch alles) Nur ich sehe die Ausgabe des printf niergends (sollte ja vermutlich in der console auftauchen) und zweite Frage Bild2 ... müsste da was ersichtlich sein?
Habe es gerade nochmal an einem LPC1343 ausprobiert, ich muss nur gegen die Semihost Version von Newlib oder NewlibNano linken. Dann liefert ein printf wie gewünscht die Ausgabe im Console Fenster. Linken gegen die RedLib bringt Fehler beim linken. Die Code Red Spezialitäten werden aber schon lange nicht mehr unterstützt, die wurden ja von NXP aufgekauft und daraus ist das LPCXpresso entstanden. Deshalb würde ich auch nur die Newlib Versionen nehmen und das __CODE_RED und __REDLIB define aus den Compiler/Symbols Einstellungen rauswerfen. Und der LPCLink2 sollte über das 10 pol. Kabel verbunden werden und SWD muss benutzt werden. Der SWO Trace ist wieder etwas anderes und wird von den Cortex-M0 auch nicht unterstützt. Die Trace Funktion lassen sich viele Hersteller extra bezahlen und in der freien Version von LPCXpresso sind da nur eingeschränkte Features drin. Mit den Standard Debug Funktionen kommt man aber in den meisten Fällen auch aus.
Und hier ist noch ein Hinweis wenn die LPCOpen Lib benutzt wird: https://community.nxp.com/thread/389140 Da ist die Umleitung auf UART per default drin, das muss man dann abklemmen.
hmm wenn ich auf das newlib umstelle, dann bekomme ich hier einen Fehler :
1 | #if defined(CHIP_LPC11AXX) || defined(CHIP_LPC11CXX) || defined(CHIP_LPC11EXX) || defined(CHIP_LPC11UXX) || defined(CHIP_LPC1125)
|
2 | #if defined(CHIP_LPC1125)
|
3 | #error "LPC1125 support for the PMU driver is not ready
|
4 | #endif
|
das ist die pmu_11xx.h ich weiss nicht wie er auf die Idee kommt das zu compilieren, da es ja kein LPC1125 ist sondern ein LPC11C24 mit dem RedLib was per default drinnen steht bekomme ich den Fehler nicht
... aber mit dem link hats nun geklappt !! Danke! - verwende zwar nun die Redlib wie vorher . aber mit dem DEFINE bekomme ich die ausgabe nun in der Console!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.