>MV6410 WINCE에서 RTC 사용하여 시간/날짜 설정하는 것에 대한 문의입니다.
>
>날짜와 시간을 2010년 10월 29일, 시간을 설정해놓고 전원을 껐다 켜거나 보드 뒷면의 리셋버튼을
>눌러서 재부팅 시키면 날짜가 2006년도로 초기화되는 문제입니다.
>
>해결방안 부탁합니다.
마이크로비젼 기술지원팀입니다.
아래 방법을 참고하여 작업을 진행하시길 바랍니다.
MV6410-LCD보드에서는 H/W적으론 RTC가 구현이 되어 있는 상태이므로 소스 단 수정만으로 RTC
동작을 확인 하실 수있습니다.
수정할 파일은 main.c / init.c / ioctl.c 이고 각각의 위치는 아래를 참고하시면 됩니다.
C:\\WINCE600\\PLATFORM\\MV6410_0902\\SRC\\OAL\\OALLIB폴더를 보시면 init.c / ioctl.c을
확인할 수 있습니다.
Init.c 수정부분은 “InitializeRTC”을 검색하여 관련 부분을 주석 처리해 주시길 바랍니다.
검색한 결과는 아래 같습니다.
--------------------------------------------------------------------
static void InitializeRTC(void);
InitializeRTC();
static void InitializeRTC(void)
{
volatile S3C6410_RTC_REG *pRTCReg = (S3C6410_RTC_REG *)OALPAtoVA(S3C6410_BASE_REG_PA_RTC, FALSE);
// As per the S3C6410 User Manual, the RTC clock divider should be reset for exact RTC operation.
// Enable RTC control first
pRTCReg->RTCCON |= (1<<0);
// Pulse the RTC clock divider reset
pRTCReg->RTCCON |= (1<<3);
pRTCReg->RTCCON &= ~(1<<3);
// The value of BCD registers in the RTC are undefined at reset. Set them to a known value
pRTCReg->BCDSEC = 0;
pRTCReg->BCDMIN = 0;
pRTCReg->BCDHOUR = 0;
pRTCReg->BCDDATE = 1;
pRTCReg->BCDDAY = 1;
pRTCReg->BCDMON = 1;
pRTCReg->BCDYEAR = 0;
// Disable RTC control.
pRTCReg->RTCCON &= ~(1<<0);
}
--------------------------------------------------------------------
Ioctl.c는 bRet = OEMSetRealTime(pTime); 부분을 주석 처리해 주시길 바랍니다.
C:\\WINCE600\\PLATFORM\\MV6410_0902\\SRC\\BOOTLOADER\\EBOOT폴더를 보시면 main.c
를 확인할 수 있습니다.
main.c도 init.c와 같이 “IinitializeRTC”을 검색하여 관련 부분을 주석 처리해 주시길 바랍니다.
위 소스 단을 수정 하신 후에 컴파일을 하여 생성된 이미지를 보드에 write하신 후에 테스트를 해보시길
바랍니다.
|