반응형
1. PC's UNIX Time
코드
결과
참으로 정상적인 값이 들어와 준다.
2. S3C2440Mini's UNIX Time
코드
'1. PC's UNIX Time'와 코드 동일.
결과
왜 이런 검사를 하게 된 이유는 time_t mktime(struct tm*) 함수를 사용하면 -1이 반환되기 때문이다. struct tm 타입의 시간 데이터로 second 값으로 반환해줘야 하는데 해주지를 않는다. google에서 mktime() 함수 코드를 보면 overflow가 발생 할 경우 -1을 반환하는 것 같다. 그외에 여러 데이터 값으로 테스트를 했지만 결과는 같았다.
어쩔 수 없이 직접 stime()의 첫번째 매개변수에 들어갈 값을 계산 해줘야 할 듯 하다. 그래서 '1969-12-31 16:0:0' 을 0이라고 가정하고 second를 계산해서 stime()에 설정 할 것이다.
코드
#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[]) {
time_t local = 0;
int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0;
int ret = stime(&local);
while(1) {
(void) time(&local);
time_struct = localtime(&local);
year = time_struct->tm_year + 1900;
month = time_struct->tm_mon + 1;
day = time_struct->tm_mday;
hour = time_struct->tm_hour;
minute = time_struct->tm_min;
second = time_struct->tm_sec;
printf("local --> %d-%d-%d %d:%d:%d\n", year, month, day, hour, minute, second);
usleep(1000000);
}
}
#include <time.h>
int main(int argc, char* argv[]) {
time_t local = 0;
int year = 0, month = 0, day = 0, hour = 0, minute = 0, second = 0;
int ret = stime(&local);
while(1) {
(void) time(&local);
time_struct = localtime(&local);
year = time_struct->tm_year + 1900;
month = time_struct->tm_mon + 1;
day = time_struct->tm_mday;
hour = time_struct->tm_hour;
minute = time_struct->tm_min;
second = time_struct->tm_sec;
printf("local --> %d-%d-%d %d:%d:%d\n", year, month, day, hour, minute, second);
usleep(1000000);
}
}
결과
local --> 1970-1-1 9:0:0
local --> 1970-1-1 9:0:1
local --> 1970-1-1 9:0:2
local --> 1970-1-1 9:0:3
local --> 1970-1-1 9:0:4
...
int stime(time_t) 함수의 첫번째 매개변수에 0을 준다면, '1970년 1월 1일 9시' 시간을 얻는다.local --> 1970-1-1 9:0:1
local --> 1970-1-1 9:0:2
local --> 1970-1-1 9:0:3
local --> 1970-1-1 9:0:4
...
참으로 정상적인 값이 들어와 준다.
2. S3C2440Mini's UNIX Time
코드
'1. PC's UNIX Time'와 코드 동일.
결과
local --> 1969-12-31 16:0:0
local --> 1969-12-31 16:0:1
local --> 1969-12-31 16:0:2
local --> 1969-12-31 16:0:3
local --> 1969-12-31 16:0:4
...
S3C2440Mini 개발 보드에서 int stime(time_t) 함수의 첫번쨰 매개변수에 0을 준다면, '1969년 12월 31일 16시' 시간을 얻는다. 코드는 같지만, 결과 값이 다른 것을 보여준다. local --> 1969-12-31 16:0:1
local --> 1969-12-31 16:0:2
local --> 1969-12-31 16:0:3
local --> 1969-12-31 16:0:4
...
왜 이런 검사를 하게 된 이유는 time_t mktime(struct tm*) 함수를 사용하면 -1이 반환되기 때문이다. struct tm 타입의 시간 데이터로 second 값으로 반환해줘야 하는데 해주지를 않는다. google에서 mktime() 함수 코드를 보면 overflow가 발생 할 경우 -1을 반환하는 것 같다. 그외에 여러 데이터 값으로 테스트를 했지만 결과는 같았다.
어쩔 수 없이 직접 stime()의 첫번째 매개변수에 들어갈 값을 계산 해줘야 할 듯 하다. 그래서 '1969-12-31 16:0:0' 을 0이라고 가정하고 second를 계산해서 stime()에 설정 할 것이다.
반응형
'임베디드 > s3c2240mini (X35)' 카테고리의 다른 글
FriendlyARM mini2240의 IP 설정하기 (0) | 2012.09.17 |
---|---|
S3C2440mini 개발환경 구축 (0) | 2011.10.14 |
[S3C2440] 하드웨어 외관 및 스펙 (0) | 2011.06.19 |
[2440Mini] RS232C(UART) 통신하기 (0) | 2011.06.19 |
mini2440 정보 공유 사이트 (0) | 2011.06.14 |
[MINI2440] 초기에 설정된 linux_cmd_line param에 대해서 (0) | 2011.06.04 |
[MINI2240] Supervivi 상에서 NAND 라이팅하기 (0) | 2011.06.04 |