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