为PCF85263 RTC驱动添加时间戳支持的问题排查与解决
PCF85263 RTC驱动扩展:实现篡改检测与电池切换时间戳功能及问题排查
背景
- 基于Yocto Mickledore(内核v6.1.36)开发,使用集成NXP PCF85263 RTC的自定义开发板
- 该RTC原生支持篡改检测、电池切换事件时间戳功能,但内核现有PCF85263驱动未实现这些特性(PCF2131驱动提供了完整支持)
- 需求:参照PCF2131驱动扩展PCF85263驱动,实现篡改事件TS和电池切换时间戳功能
问题排查与解决
问题1:rtc_add_group()导致RTC设备节点消失
- 初始尝试调用
rtc_add_group()添加sysfs时间戳接口,结果/dev/rtc0设备消失,hwclock、timedatectl等工具无法正常工作 - 移除
rtc_add_group()调用后,/dev/rtc0恢复,但丢失时间戳sysfs接口 - 解决方案:改用
ATTRIBUTE_GROUPS()宏定义属性组,并直接赋值给设备的groups成员,既保留了sysfs时间戳接口,又保证/dev/rtc0正常可用
问题2:篡改时间戳读取报“Invalid argument”
- 改用
ATTRIBUTE_GROUPS()后,电池切换时间戳功能正常,但读取篡改时间戳时提示Invalid argument - 排查后确认:问题源于TS引脚硬件故障,并非驱动逻辑问题
- 修复硬件故障后,篡改时间戳功能恢复正常
完整修复后的驱动代码
// 此处粘贴完整的驱动代码内容
内容的提问来源于stack exchange,提问作者Simone Bernabè
相关产品推荐
相关产品推荐

