LPCXpresso Debug

Gast #5044902
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 ...
Gast #5044991
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
}
Gast #5045005
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
}
Gast #5045803
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?
Angehängte Dateien:
Gast #5045934
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.
Gast #5045990
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren