主题中讨论的其他器件:AM4372、
工具/软件:Linux
我正在尝试在运行 Linux、内核版本4.1.18的定制板上读取 AM4378上的内部 RTC。 我已使用"/arch/arm/boot/dts/am437x-gp-evm.dts "作为指南来设置器件树。 我没有外部时钟源。 默认情况下包括"am4372.dtsi"、其中包括配置 RTC 的本节。
RTC:RTC@44e3e000{
兼容="ti、am4372-rtC"、"ti、am3352-rtC"、"ti、DA830-rtC";
reg =<0x44e3e000 0x1000>;
中断= ;
ti、hwmds ="rtc";
系统电源控制器;
status ="禁用";
};
在基于"AM437X-gp-evm.dts "的自定义 DTS 文件中、我有以下行。
RTC{(&R)
状态="确定";
};
我的理解是、这应该会启用内部 RTC。 在启动期间、我观察到以下情况:
[1.251581] OMAP_RTC 44e3e000.RTC:RTC 内核:将44e3e000.RTC 注册为 rtc0...
[1.472652] OMAP_RTC 44e3e000.RTC:hctosys:无法读取硬件时钟
我认为这表明"OMAP_RTC"驱动程序正在正确加载。 RTC 出现在器件树中(作为/dev/rtc0)。
问题是、我似乎无法从该器件读取数据。 我已经查看了有关"hwclock"的信息、下面显示了各种命令的结果。
# hwclock --help
Busybox v1.23.2 (2017-08-09 12:21:48 EDT)多呼叫二进制文件。
用法:hwclock [-r|--show][-s|--hctosys][-w|--systohc][-t|--systz][-l|--localtime][-u|--UTC][-f|--RTC 文件]
查询和设置硬件时钟(RTC)
-r 显示了硬件时钟时间
-s 从硬件时钟设置系统时间
w 设置系统时间的硬件时钟
t 设置内核时区、正确的系统时间
如果硬件时钟处于本地时间
-u 假设硬件时钟保持 UTC 状态
-l 假设硬件时钟保持本地时间
f 文件使用指定的器件(例如/dev/rtc2)
# hwclock -r -f /dev/rtc0
hwclock:rtc_rd_time:参数无效
这似乎表明"OMAP_RTC"驱动程序内的 ioctl 函数调用有问题。
# hwclock -w -f /dev/rtc0
此函数调用不清楚写入(设置硬件时钟)是否成功。