外设测试 - RTC 测试

概述

Linux 系统中获取 RTC 时间可能有两种途径,一种是处理器内部的 RTC,另一种是主板上独立的 RTC 模块。我们这里不涵盖前者,因为一般认为处理器良率较高。

RTC 模块有几大主要部件:晶振、RTC 芯片、I2C 总线、电池供电。所以测试方案的设计就是从这几个部件的功能确认出发。

读取 RTC 时间

RTC 芯片除了电池可以供电,板卡本身的系统电源也会给他供电。当从 Linux 系统中能够读取到 RTC 芯片上的时间时,就起码确保了两个功能运行正常:RTC 芯片正常;与处理器连接的 I2C 总线正常。至于晶振,也确认其有工作,但精度不能保证符合标准。这个测试是最基本的,所谓的功能测试,实现方案也很简单。以下示例代码演示了使用 hwclock 命令进行时间读取的测试。

#!/usr/bin/env python
# Description:
#   Test RTC. Just test for running, no accuracy.

import os, sys, time

hw_time1 = os.popen('hwclock').read()
time.sleep(2)
hw_time2 = os.popen('hwclock').read()

fields = hw_time1.strip().split()
time_list1 = fields[3].strip().split(':')

fields = hw_time2.strip().split()
time_list2 = fields[3].strip().split(':')

#FIXME 23:59:59 and 00:00:02
if time_list1[0] < time_list2[0]:
    print 'Test pass!'
    sys.exit(0)
if time_list1[1] < time_list2[1]:
    print 'Test pass!'
    sys.exit(0)
if time_list1[2] < time_list2[2]:
    print 'Test pass!'
    sys.exit(0)
print 'Test Failed!'
sys.exit(3)

先后读取两次,确认后者比前者大。

确认计时精度

前面方案做了基本测试,也提到晶振的精度还不能保证。另外电池供电相关的电路与元器件还未验证。这里需要采用网路对时的手段来测试。

  1. 安装纽扣电池进行供电;
  2. 启动板卡进入系统,使用 ntpd 连接对时服务器进行对时校准;并确认校准后的时间同步设置到 RTC。另外,确保系统配置,在启动后会从 RTC 读取时间并设置系统时间。
  3. 断电板卡,确保纽扣电池持续对 RTC 供电,放置板卡 10 小时以上;
  4. 重新上电启动板卡,再次使用 ntpd 工具对时,留意对时完成后打印的误差(offset),小于 1 秒即为测试通过。

这样,就确保了电池供电正常,晶振与 RTC 芯片精度正常。

参考

https://blog.csdn.net/engrossment/article/details/104566244

https://blog.csdn.net/engrossment/article/details/84529219

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页