由于三星的评估板并没有用rtc电池,所以提供的bsp是不能保存时间的,即使你在板子上加了rtc电池,不过修改起来也非常简单,修改smdk2410\KERNEL\HAL\ARM下的timer.c,我把修改过的oemsetrealtime函数贴在下面,这样改绝对没有问题。
BOOL
OEMSetRealTime(LPSYSTEMTIME lpst)
{
 volatile RTCreg *s2410RTC = (RTCreg *)RTC_BASE;
  static int firsttime = 0;//firsttime是静态的,所以每进入一次都会加1
if ( firsttime == 0 )//判断是否第一次进入
{
(void)OEMGetRealTime(lpst);
          if((lpst->wSecond>59)||(lpst->wMinute>59)||(lpst->wHour> 24)||(1>lpst->wDay>31)||(1>lpst->wMonth>12))//判断读出的RTC 时钟是否有效,否则设置
{
lpst->wSecond = 1;
lpst->wMinute = 1;
lpst->wHour = 1;
lpst->wDay = 11;
lpst->wMonth = 11;
lpst->wDayOfWeek= 5;
lpst->wYear = 2004;
} firsttime = 1;

 // enable RTC control
 s2410RTC->rRTCCON =  0x1;//使能RTC控制器,主要是允许写RTC寄存器
 s2410RTC->rBCDSEC  = (unsigned char)TO_BCD(lpst->wSecond );
 s2410RTC->rBCDMIN  = (unsigned char)TO_BCD(lpst->wMinute );
 s2410RTC->rBCDHOUR = (unsigned char)TO_BCD(lpst->wHour   );
 s2410RTC->rBCDDATE = (unsigned char)(lpst->wDayOfWeek + 1);
 s2410RTC->rBCDDAY  = (unsigned char)TO_BCD(lpst->wDay    );
 s2410RTC->rBCDMON  = (unsigned char)TO_BCD(lpst->wMonth  );
 s2410RTC->rBCDYEAR = (unsigned char)TO_BCD((lpst->wYear % 100));
 RETAILMSG(0,(TEXT("OEMSetRealTime: Year: %u, Month: %u, Day: %u, Hour: %u, Minute: %u, second: %u rcnr=%Xh\r\n"), lpst->wYear, lpst->wMonth,lpst->wDay, lpst->wHour, lpst->wMinute,lpst->wSecond,s2410RTC->rRTCCON));
 RETAILMSG(0,(TEXT("OEMSetRealTime(register): Year: %x, Month: %x, Day: %x, Hour: %x, Minute: %x, second: %x rcnr=%Xh\r\n"), \
     s2410RTC->rBCDYEAR, s2410RTC->rBCDMON,s2410RTC->rBCDDAY, s2410RTC->rBCDHOUR, s2410RTC->rBCDMIN,s2410RTC->rBCDSEC,s2410RTC->rRTCCON));
 // disable RTC control
 s2410RTC->rRTCCON = 0; //&= ~0x1;
 
 // Just certify heart bit
// timer_cnt = 0;
 return TRUE;

}