www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Keil µVision Code-Checker


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,
ich habe von einem Tool für Keil's µVision gehört, dass mein C-code 
analysiert. Es werden z.B. ungenutze Funktionen gefunden. Desweiteren 
soll dieses Tool auch herausfinden ob sich Schleifen irgenwo aufhängen.
Hat jemand eine Idee?

mfg Markus

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> ich habe von einem Tool für Keil's µVision gehört, dass mein C-code
> analysiert.

Meinst Du PC-lint (www.gimpel.com)? Das ist nicht "für µVision". Man 
kann es aus µVision (aber auch von der Kommandozeile, z.B. Makefile) 
starten. Der Aufruf ist ähnlich zu dem eines Compilers. Es gibt sogar 
eine Art Objekt Datei, um über die Grenzen einer Compile Unit 
analysieren zu können.

Ob es generell Schleifen analysiert kann ich nicht sagen. Gut möglich, 
solange das statisch zu ermitteln ist:
while (1) {
    if (1 == 0)
        break;
}

PC-lint ist quasi Standard für derartige Tools in der Embedded Software 
Welt.

Gruß
Marcus
http://www.doulos.com/arm/

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Scheint nicht gerade kostengünstig zu sein. Gibt es ein solches Tool 
evtl. als Freeware Version?

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Splint (http://www.splint.org/), kommt aber nicht an die Fähigkeiten von 
PC-lint heran. Wenn Du Dir Keils tools leisten kannst, dann sollten die 
paar Kröten für PC-Lint auch noch drin sein ;-)

RTL-check (http://rtlcheck.sourceforge.net/). Bin aber nicht sicher, wie 
der Entwicklungsfortschritt ist. Der aktuelle Zustand ist wohl eher 
proof-of-concept.

Bei Splint ist nach langer Pause wenigstens mal wieder was passiert.

Gruß
Marcus
http://www.doulos.com/arm/

Autor: Christian H. (blueicehaller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte meinen C-Code überprüfen lassen.
µVision3/LPC23xx verwendet Compilerspezifische Anweisungen die Splint 
nicht kennt. Auch Unterstriche, Konstanten, ...

Aus der io.h
void ISR_EINT_0_Handler (void) __irq;
Parse Error: New function scope inside function. (For help on parse errors, see splint -help parseerrors.)
*** Cannot continue.

Ein Bekannter hat mir gesagt ich soll folgende Parameter versuchen:
splint -strict *.c > splint_report.log

Und später jede c Datei einzeln:
splint -checks -Dfar= -Dnear= io.c > splint_io.log

Autor: Christian H. (blueicehaller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Wie) Können Schlüsselwörter ignoriert werden?

Zitat übersetzt: __irq
Das __irq Schlüsselwort ermöglicht die C oder C++ Funktion als interrupt 
routine zu nutzen.

__irq ist ein Funktionskennzeichner. Er beeinflusst den Typ/die Art der 
Funktion.
Quelle: 
http://infocenter.arm.com/help/index.jsp?topic=/co...

Autor: Christian H. (blueicehaller)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Multiposting: Beitrag "Re: Wie benutzt man Lint?!"

Ich glaube ich habs jetzt verstanden.
Ich habe meine Header Datei wie folgt geändert:
#ifndef __SPLINT__
void ISR_EINT_0_Handler (void) __irq; 
#endif

#ifdef __SPLINT__
void ISR_EINT_0_Handler (void); 
#endif

Oder optimiert:
#ifndef __SPLINT__
void ISR_EINT_0_Handler (void) __irq; 
#else
void ISR_EINT_0_Handler (void); 
#endif

Allerdings ist dann nicht klar ob Splint diese Funktion als Interrupt 
nutzt, der Sinn von __irq verloren geht.
Möglicherweise gibt es alternative Anweisungen um Splint mitzuteilen 
diese Funktion als Interrupt zu nutzen ist.

http://www.cs.virginia.edu/pipermail/splint-discus...

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.