Forum: Mikrocontroller und Digitale Elektronik LPCXpresso Debug


von sn00py (Gast)


Lesenswert?

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 ...

von PittyJ (Gast)


Lesenswert?

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.

von Christian K. (christian_rx7) Benutzerseite


Lesenswert?

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

von Johannes S. (Gast)


Lesenswert?

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

von sn00py (Gast)


Lesenswert?

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
}

von Johannes S. (Gast)


Lesenswert?

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
}

von sn00py (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Johannes S. (Gast)


Lesenswert?

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.

von Johannes S. (Gast)


Lesenswert?

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.

von sn00py (Gast)


Lesenswert?

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

von sn00py (Gast)


Lesenswert?

... 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
Noch kein Account? Hier anmelden.