Forum: Mikrocontroller und Digitale Elektronik Programmstillstand bei time()-Aufruf mit NXP LPC2368 (ARM)


von Rob S. (ckolumbus)


Lesenswert?

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

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

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

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.