一开始DM8168没有设置pcf-8563硬件时钟时,在/sys/class/rtc/rtc1路径下读取date 和time数据是正常的,
但是通过 hwclock -w -f /dev/rtc1 和open("/dev/rtc1", O_RDWR); retval = ioctl(fd, RTC_SET_TIME, &rtc_tm); 两种方法设置pcf 8563时钟
第一种方法:
root@dm816x:/# date 070117522016
Fri Jul 1 17:52:00 UTC 2016
root@dm816x:/# hwclock -w -f /dev/rtc1
第二种方法:
rtc_tm.tm_year = 2016-1900;
rtc_tm.tm_mon = 07 - 1;
rtc_tm.tm_mday = 01;
rtc_tm.tm_hour = 17;
rtc_tm.tm_min = 52;
rtc_tm.tm_sec = 57;
fd = open("/dev/rtc1", O_RDWR); //O_RDWR
if (fd == -1) {
perror("/dev/rtc1");
exit(errno);
}
retval = ioctl(fd, RTC_SET_TIME, &rtc_tm);
if (retval == -1) {
perror("ioctl set");
exit(errno);
}
close(fd);
fprintf(stderr, "RTC date/time: %02d/%02d/%04d %02d:%02d:%02d\n",
rtc_tm.tm_mday, rtc_tm.tm_mon + 1, rtc_tm.tm_year + 1900,
rtc_tm.tm_hour, rtc_tm.tm_min, rtc_tm.tm_sec);
后再到 /sys/class/rtc/rtc1路径下 cat dade 和 cat time 发现有些数据位读不出来
如小时的某些位和秒钟个位8对应的那个位读取有问题(但是里面是有数据的,只是读不出来)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:44 (秒二进制:100 0100)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:45 (秒二进制:100 0101)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:46 (秒二进制:100 0110)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:47 (秒二进制:100 0111)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:40 (秒二进制:100 1000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:41 (秒二进制:100 1001)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:50 (秒二进制:101 0000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:51 (秒二进制:101 0001)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:52 (秒二进制:101 0010)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:57 (秒二进制:101 0111)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:50 (秒二进制:101 1000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:51 (秒二进制:101 1001)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:54:00 (秒二进制:000 0000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:54:01 (秒二进制:000 0001)
00:53:44 (秒二进制:100 0100)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:45 (秒二进制:100 0101)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:46 (秒二进制:100 0110)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:47 (秒二进制:100 0111)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:40 (秒二进制:100 1000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:41 (秒二进制:100 1001)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:50 (秒二进制:101 0000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:51 (秒二进制:101 0001)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:52 (秒二进制:101 0010)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:57 (秒二进制:101 0111)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:50 (秒二进制:101 1000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:53:51 (秒二进制:101 1001)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:54:00 (秒二进制:000 0000)
root@dm816x:/sys/class/rtc/rtc1# cat time
00:54:01 (秒二进制:000 0001)
换了一个好的pcf 8563芯片还是一样的情况。应该不是芯片的问题。
请问:是 ti_tools/linux_lsp/kernel/linux-dvr-rdk/drivers/rtc/rtc-pcf8563.c 里面设置硬件时钟的程序有错误(把某些位屏蔽了)?
我需要如何操作?