CSR配置字典之Time类
更新时间:2025/7/22
在Gitcode上查看源码

📋 文档信息

项目内容
文档标题Time类配置字典
版本v1.0
创建日期2025-01-27
最后更新2025-01-27
维护状态✅ 活跃维护

📋 变更历史记录

文档变更记录

版本发布日期变更类型变更内容影响范围维护人员
v1.02025-01-27初始版本创建Time类配置字典全新文档系统管理员

🎯 类概览

Time 类

属性
类名称Time
功能描述时间信息管理,提供系统时间同步、RTC时间读取和NTP配置管理功能
所属SIG组system
所属组件time
责任人系统管理组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
IdU8-U8-主键,需要保证全局唯一,如果确定SR只加载一份可以配1,建议使用"${Slot}",避免主键冲突无功能作用1CSR硬件
CpuBrdRtcString-关联Smc对象Smc_CpuBrdSMC用于读取RTC芯片的时间,如果需要从RTC芯片同步时间则必须配置,少数机型不涉及则可以不配置用于同步RTC时间"#/Smc_CpuBrdSMC"CSR硬件
IsValidBooleantruetrue/false-此对象是否有效,用于部分机型,基础版加载多次,所以多余的对象需要配置为false,如果不涉及加载多次的则可以不配置多host场景判断是否注册trueCSR硬件
RtcSupportedBooleantruetrue/false-是否需要同步RTC时间,如果false则不会去同步RTC不需要同步rtc时可配置trueCSR硬件
OffsetU32201327872U32-RTC芯片读取偏移需要同步RTC201327872CSR硬件
SizeU88U8-RTC芯片读取长度需要同步RTC8CSR硬件
YearOffsetU160U16-年差值需要同步RTC0CSR硬件
EffOffsetU80U8-RTC芯片读取格式需要同步RTC0CSR硬件

可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
SyncTimeStatusU80U8-时间同步状态,组件内部更新,不需要配置查询NTP配置NULL组件更新软件
ExtraString-String-扩展服务器IP,组件内部更新,不需要配置查询NTP配置NULL组件更新软件

🔗 动态关联机制

语法规范

使用 #/xxx 和变量替换语法实现动态关联:

yaml
# SMC对象关联
CpuBrdRtc: "#/Smc_CpuBrdSMC"

# 槽位变量替换
Id: "${Slot}"

关联说明

  • CpuBrdRtc: 关联SMC对象用于RTC芯片时间读取
  • Id: 建议使用槽位变量确保全局唯一性

📂 分类标准

硬件属性

  • 定义:与硬件RTC芯片和时间读取直接相关的参数
  • 特点:通常与硬件时间芯片配置对应
  • 示例Id, CpuBrdRtc, IsValid, RtcSupported, Offset, Size, YearOffset, EffOffset

软件属性

  • 定义:用于软件逻辑控制和状态管理的参数
  • 特点:由组件内部更新和管理
  • 示例SyncTimeStatus, Extra

📝 配置示例

标准RTC时间同步配置

json
{
  "Time": {
    "Id": 1,
    "SyncTimeStatus": 0,
    "Extra": "",
    "CpuBrdRtc": "#/Smc_CpuBrdSMC",
    "IsValid": true,
    "RtcSupported": true,
    "Offset": 201327872,
    "Size": 8,
    "YearOffset": 0,
    "EffOffset": 0
  }
}

多槽位时间配置

json
{
  "Time": {
    "Id": "${Slot}",
    "SyncTimeStatus": 0,
    "Extra": "",
    "CpuBrdRtc": "#/Smc_CpuBrdSMC",
    "IsValid": true,
    "RtcSupported": true,
    "Offset": 201327872,
    "Size": 8,
    "YearOffset": 0,
    "EffOffset": 0
  }
}

禁用RTC同步配置

json
{
  "Time": {
    "Id": 1,
    "SyncTimeStatus": 0,
    "Extra": "",
    "CpuBrdRtc": "#/Smc_CpuBrdSMC",
    "IsValid": true,
    "RtcSupported": false,
    "Offset": 201327872,
    "Size": 8,
    "YearOffset": 0,
    "EffOffset": 0
  }
}

多Host场景配置

json
{
  "Time": {
    "Id": 1,
    "SyncTimeStatus": 0,
    "Extra": "",
    "CpuBrdRtc": "#/Smc_CpuBrdSMC",
    "IsValid": true,
    "RtcSupported": true,
    "Offset": 201327872,
    "Size": 8,
    "YearOffset": 0,
    "EffOffset": 0
  }
},
{
  "Time": {
    "Id": 2,
    "SyncTimeStatus": 0,
    "Extra": "",
    "CpuBrdRtc": "#/Smc_CpuBrdSMC",
    "IsValid": false,
    "RtcSupported": true,
    "Offset": 201327872,
    "Size": 8,
    "YearOffset": 0,
    "EffOffset": 0
  }
}

🔧 使用指南

配置步骤

  1. 设置主键ID:配置全局唯一的Id,建议使用槽位变量
  2. 关联SMC对象:通过CpuBrdRtc关联对应的SMC对象
  3. 配置有效性:设置IsValid决定对象是否生效
  4. 配置RTC支持:设置RtcSupported决定是否同步RTC时间
  5. 配置读取参数:设置Offset、Size、YearOffset、EffOffset等RTC读取参数
  6. 验证关联:确保SMC对象已正确定义
  7. 多实例处理:多Host场景下合理配置IsValid属性

注意事项

  • 主键唯一性:Id必须在全局范围内保持唯一
  • SMC关联:CpuBrdRtc必须关联有效的SMC对象
  • 多实例管理:多Host场景下只有一个实例应设置IsValid为true
  • RTC支持:RtcSupported为false时不会进行RTC时间同步
  • 参数匹配:Offset、Size等参数需要与实际RTC芯片规格匹配
  • 状态属性:SyncTimeStatus和Extra由组件内部更新,无需手动配置

性能建议

  • 合理配置RTC:不需要RTC同步的场景可设置RtcSupported为false
  • 优化多实例:多Host场景下避免多个实例同时生效
  • 参数优化:根据实际RTC芯片规格优化读取参数
  • 状态监控:定期检查SyncTimeStatus了解同步状态

故障排查

  • 时间同步失败:检查CpuBrdRtc关联的SMC对象是否正常
  • RTC读取异常:检查Offset、Size等参数是否与芯片规格匹配
  • 多实例冲突:检查多Host场景下IsValid配置是否正确
  • 同步状态异常:检查SyncTimeStatus和RtcSupported配置
  • 主键冲突:检查Id是否全局唯一
  • SMC通信失败:检查SMC对象配置和硬件连接

时间管理指导

  • NTP配置:配合NTP服务实现网络时间同步
  • RTC备份:RTC芯片作为系统时间的备份源
  • 时间精度:根据应用需求选择合适的时间同步精度
  • 故障恢复:RTC时间可在网络时间不可用时提供备份
  • 年份处理:YearOffset用于处理RTC芯片年份表示差异

系统集成

  • 启动时间:系统启动时从RTC读取初始时间
  • 定期同步:定期从NTP服务器同步网络时间
  • 时间校准:定期校准RTC时间确保精度
  • 日志记录:记录时间同步事件便于故障分析
  • 告警机制:时间同步失败时产生相应告警