www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik uVision von Keil Anzeigen von Elementen einer struct


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten morgen,

ich will einem Element in einer Struktur einen Wert zuseisen.
Im Studio wird nach dem Punkt (pers.) alle elemente einer Struktur 
angezeigt.
Wird dies von uVision nicht unterschtützt?
#include <stdio.h>

struct person
{
  
  int id;
  int alter;
};

int main ( void )
{
  struct person pers;
  pers.
  
  return 0;
}

Autor: Roger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hat nichts mit Keilis uVision, zu tun sondern das ist C

Die Schreibweise ist die gleiche.

mfg
Roger

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine die Auswahlbox wird nicht eingeblendet.
Bei Studio und auch Eclipse kommt dieses Fenster und man kann Elemente 
der Struktur auswählen. Bei uVision kommt dieses Fenster bei mir nicht.

Autor: Roger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry.

Das hat uVision2 nicht.  (Kenns zumindest nicht!)

Die uVision3 (beta) vielleicht?

mfg
Roger

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Roger schrieb:
> Sorry.
>
> Das hat uVision2 nicht.  (Kenns zumindest nicht!)
>
> Die uVision3 (beta) vielleicht?
>
> mfg
> Roger

Hi,

du meinst UV3 und UV4 Beta3.

Nein, das Feature ist noch nicht implementiert, dafür aber eine ganze 
Menge anderer neuer Sachen, die auch in der Demo (32k) verfügar sind, 
u.a.

- docking windows, alle Fenster bis auf die Edit Windows können gedockt 
oder frei auf mehreren Monis verschoben werden
- System Viewer erlaubt Einblicke auch in nicht simulierte Peripherals 
mittels Beschreibung im Headerfile
- Serial / ITM Window unterstützen wichtige VT100 commands, verschiedene 
Data Views (Terminal, Ascii, Hex, Mixed) sowie Copy to clipboard und 
Save to file
- jLink driver for Cortex-M3, incl. SWO Trace, ITM Ch. printf


VG,
/th.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich benutze bereits uVision3, dort geht es leider nicht.
Schade.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe ich richtig versanden?
Die Funktion printf funktioniert?
Soll ich irgendwelche Einsatellungen vornehmen.
Bei mir wen ich printf ("random number = %d\n", 10); und in sebug-Modus 
gehen.
Scheint was nicht zu funktionieren. Also run ist ausgegraut.

Autor: Random ... (thorstendb) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast schrieb:
> Habe ich richtig versanden?
> Die Funktion printf funktioniert?
> Soll ich irgendwelche Einsatellungen vornehmen.
> Bei mir wen ich printf ("random number = %d\n", 10); und in sebug-Modus
> gehen.
> Scheint was nicht zu funktionieren. Also run ist ausgegraut.

Hi,

ganz so einfach ist es leider nicht.

Also...
man nehme die CMSIS für Cortex-M3 (oder nur diesen Demo-Code hier):

static uint32_t ITM_SendChar (uint32_t ch)
{
  if(ch == '\n') ITM_SendChar('\r');

  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA)  &&
      (ITM->TCR & ITM_TCR_ITMENA)                  &&
      (ITM->TER & (1UL << 0))  )
  {
    while (ITM->PORT[0].u32 == 0);
    ITM->PORT[0].u8 = (uint8_t) ch;
  }
  return (ch);
}

und ergänze das ganze um das retargeting:


#include <stdio.h>

int fputc(int c, FILE *f)
{
  ITM_SendChar(c);
  return(c);
}

und schon funzt dein printf.

Willst du das ganze auf dem UART haben, biege die Funktionen in der 
fputc um nach uart1_putchar(c); z.B. und implementiere diese Funktion, 
so dass sie Zeichen auf den UART schickt.

Zum ITM in uVision 3, 4, am Beispiel eines STM32
Baue das o.g. in deine Software ein.
Dann compilieren

Target driver (debug) einstellen:
- project -> options for target
- Tab "Debug"
- ev. Target abhängiges .ini file laden, z.B. STM32DBG.ini (findet sich 
unter C:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB_Blinky)
- settings

Debug:
- SWJ / Port SW für ULINK
- Port SW für jLink

Trace:
- [x] Trace enable
- Core Clock einstellen (z.B. 72MHz)
- ITM stimulus Port 0 sowie Port 7..0 anticken
- PC sampling nicht zu hoch ansetzen, sonst bleibt nicht mehr genügend 
SWO bandbreite für ITM übrig.


Debug session starten...
View -> Serial Windows -> ITM (printf) viewer

und schon habt ihr ein schönes Window, dass die printf Daten anzeigt, 
die aus dem Core kommen.


Ab UV4:

Dieses serial Window verfügt - genau wie die anderen serial windows - 
über einen grundlegenden vt100 support und div. anzeigemodes sowie 
Möglichkeiten zum Speichern der Ausgabe.
Das Kontextmenue mit rechter Maustaste gibt hier auskunft...


ANSI VT100 Terminal functions:
------------------------------
- CR            Carriage Return
- LF            Line Feed
- BS            Back Space
- TAB           Tabulator
- BEL           Bell
- ESC [ C       move cursor (position) 1 to the right
- ESC [ D       move cursor (position) 1 to the left
- ESC [ J       Clear Screen
- ESC [ K       delete line right to cursor
- ESC [ yy;xxf  sets Cursor to Row yy, Colum xx


Cursor Keys transfered to the Terminal from the GUI
-----------------------------------------------------
- ESC [ A       Cursor Keys UP
- ESC [ B       Cursor Keys DOWN
- ESC [ C       Cursor Keys RIGHT
- ESC [ D       Cursor Keys LEFT


Examples
---------

void ClearScreen(void)
{
  printf(fp, "%c[1;1f%c[J", 27, 27);    // terminal-control-sequence for 
clear-screen / Cursor Home
}

void gotoxy(int x, int y)
{
  printf("%c[%i;%if", 27, (signed int)y, (signed int)x);
}

ausserdem sind da noch einige nette Features zum Handling mit drin, 
sowie ein interessanter Mixed Mode zur Protokollanalyse.


Funktioniert übrigends auch im Simulator!



VG,
/th.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.