Programmstillstand bei time()-Aufruf mit NXP LPC2368 (ARM)

OP #1569149
Hallo Gemeinschaft,

ich bin der Neue. :o) Ich komme gleich zur Sache: Ich arbeite mit Keil 
µVision 4 an einem Programm für einen NXP LPC2368 ARM-Controller mit. Es 
wird der RTX-Kernel verwendet. Das Ganze läuft im ARM-Mode. Nun wollte 
ich in einer Methode eine ANSI-C Standardfunktion nutzen, time(). 
Anfangs hat der Linker sich immer beschwert, dass ihm das Symbol time 
nicht bekannt sei. Ich habe dann herausgefunden, dass es an der 
aktivierten MicroLIB lag, durch die Standardfunktionen die auf das 
Betriebssystem zugreifen nicht verfügbar sind (MicroLIB ist eine 
abgespeckte Bibliothek für Zielumgebungen mit wenig Speicher). Da die 
Nutzung der MicroLIB nicht erforderlich war (k.A. warum die aktiviert 
war), habe ich sie deaktiviert. Nun compiliert und linkt µVision das 
Programm ohne Warnungen oder Fehler, aber das Programm bleibt beim 
time()-Funktionsaufruf stehen. Das passiert sowohl im Debugger als auch 
ohne Debugger. Im Debugger wird bei Ausführung der Zeile mit 
time()-Aufruf im Schrittbetrieb auch keine Funktion geöffnet, wie es 
sonst der Fall ist. Hier ein Code-Auszug aus der Methode:
1
#include "time.h"
2

3
void MethodeXYZ()
4
{
5
  time_t TmpZeit;
6
  struct tm *StartZeit;
7

8
  // ...
9
  time(&TmpZeit);                  // aktuelle Systemzeit (in Sekunden)
10
  TmpZeit-= lVarB;                 // ermittelte Sekunden abziehen => Startzeit
11
  StartZeit= localtime(&TmpZeit);  // Startzeit in Struktur mit Einzelwerten
12
  // ...
13
}

Kann mir jemand Hinweise geben wie ich das Problem lösen kann und woran 
es liegen könnte?

Vielen Dank schonmal
MfG
cKolumbus
Persönliche Seite
Rob S. schrieb:
> Nun compiliert und linkt µVision das Programm ohne Warnungen oder
> Fehler, aber das Programm bleibt beim time()-Funktionsaufruf
> stehen.

Das Problem ist das fehlende retargeting:
http://infocenter.arm.com/help/topic/com.arm.doc.dui0378a/Cihchbfc.html

Viele Funktionen der C-library sind sehr systemspezifisch und müssen
daher angepasst werden.

Gruß
Marcus

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.