You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Toradex Colibri i.MX7D平台PCF85063A RTC挂起恢复后异常求助

PCF85063A RTC挂起恢复后失效及禁用snvs_rtc启动失败问题

硬件与软件环境

  • 处理器:Toradex Colibri i.MX7D 1 GB V1.1A
  • 内核版本:5.4.161-5.6.0-devel+git.0f0011824921
  • 外接RTC:PCF85063A(通过I2C4连接)

当前配置

DTS配置

&i2c4 {
  status = "okay";

  /* PCF85063A real time clock on carrier board */
  pcf_rtc: pcf85063a@51 {
    compatible = "nxp,pcf85063a";
    reg = <0x51>;
    interrupt-parent = <&gpio1>;
    interrupts = <1 IRQ_TYPE_EDGE_FALLING>;
    wakeup-source;
  };
};

内核配置

CONFIG_RTC_DRV_PCF85063=y

异常现象

  1. 系统启动后:

    • PCF85063A注册为rtc0,snvs_rtc注册为rtc1,时钟设置功能正常
    • dmesg存在警告:唤醒IRQ已初始化,且有rtc rtc0: failed to enable irq wake提示
  2. 挂起唤醒后:

    • 无法设置新闹钟,提示Permission denied
    • 用i2cdump读取PCF85063A寄存器全为XX
    • dmesg显示irq 66无人处理,最终被禁用
  3. 尝试禁用snvs_rtc:

    • 在DTS中设置snvs_rtc的status="disabled"后,系统启动卡壳,无法正常进入系统

问题诉求

  • 解决PCF85063A RTC挂起恢复后无法正常工作的问题
  • 实现正确禁用内部snvs_rtc的方法

解决建议

针对PCF85063A挂起唤醒失效问题

  1. 排查IRQ唤醒配置
    启动时的failed to enable irq wake提示说明GPIO1_1的唤醒功能未正确生效。需确认:

    • 该GPIO未被其他设备占用,且硬件上INT脚已正确上拉(PCF85063A的INT为开漏输出)
    • 在DTS中为该GPIO添加明确的唤醒属性验证,比如补充gpio-active-low(若硬件为低电平触发)
  2. 修复I2C总线异常
    挂起后寄存器全为XX说明I2C总线可能在挂起过程中进入死锁状态:

    • 在&i2c4节点添加pm-no-runtime-suspend属性,禁止I2C控制器的运行时挂起,避免总线在休眠时断电
    • 检查PCF85063A的硬件供电,确保休眠阶段有备用电源维持工作
  3. 修复中断注册问题
    irq 66无人处理说明驱动恢复时未重新注册中断:

    • 查看PCF85063A驱动的resume函数实现,确认是否遗漏了中断重新初始化逻辑
    • 尝试升级到Toradex官方更新的同分支内核,修复已知的驱动休眠恢复bug

针对禁用snvs_rtc启动失败问题

  1. 替代方案:优先使用外接RTC
    直接禁用snvs_rtc会破坏启动依赖(系统早期启动可能需要它提供时间基准),可通过内核参数规避:

    • 添加内核参数rtc_hctosys_dev=rtc0,让系统启动时优先读取PCF85063A的时间作为系统时钟
    • 保留snvs_rtc的启用状态,但通过hwclock命令将PCF85063A设为默认时钟源
  2. 强制禁用的正确步骤
    若必须禁用snvs_rtc:

    • 先修改U-Boot配置,确保启动阶段不依赖snvs_rtc获取时间
    • 在DTS中禁用snvs_rtc的同时,修改系统启动脚本,移除所有涉及snvs_rtc的初始化步骤
    • 参考Toradex官方BSP文档,确认该内核版本下是否有官方支持的禁用流程

内容的提问来源于stack exchange,提问作者Rob123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 15:55:51