CSR配置字典之Time类
更新时间:2025/7/22
在Gitcode上查看源码📋 文档信息
项目 | 内容 |
---|---|
文档标题 | Time类配置字典 |
版本 | v1.0 |
创建日期 | 2025-01-27 |
最后更新 | 2025-01-27 |
维护状态 | ✅ 活跃维护 |
📋 变更历史记录
文档变更记录
版本 | 发布日期 | 变更类型 | 变更内容 | 影响范围 | 维护人员 |
---|---|---|---|---|---|
v1.0 | 2025-01-27 | 初始版本 | 创建Time类配置字典 | 全新文档 | 系统管理员 |
🎯 类概览
Time 类
属性 | 值 |
---|---|
类名称 | Time |
功能描述 | 时间信息管理,提供系统时间同步、RTC时间读取和NTP配置管理功能 |
所属SIG组 | system |
所属组件 | time |
责任人 | 系统管理组 |
最后更新 | 2025-01-27 |
状态 | 🟢 正常运行 |
📊 属性定义详表
必选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
Id | U8 | - | U8 | - | 主键,需要保证全局唯一,如果确定SR只加载一份可以配1,建议使用"${Slot}",避免主键冲突 | 无功能作用 | 1 | CSR | 硬件 |
CpuBrdRtc | String | - | 关联Smc对象 | Smc_CpuBrdSMC | 用于读取RTC芯片的时间,如果需要从RTC芯片同步时间则必须配置,少数机型不涉及则可以不配置 | 用于同步RTC时间 | "#/Smc_CpuBrdSMC" | CSR | 硬件 |
IsValid | Boolean | true | true/false | - | 此对象是否有效,用于部分机型,基础版加载多次,所以多余的对象需要配置为false,如果不涉及加载多次的则可以不配置 | 多host场景判断是否注册 | true | CSR | 硬件 |
RtcSupported | Boolean | true | true/false | - | 是否需要同步RTC时间,如果false则不会去同步RTC | 不需要同步rtc时可配置 | true | CSR | 硬件 |
Offset | U32 | 201327872 | U32 | - | RTC芯片读取偏移 | 需要同步RTC | 201327872 | CSR | 硬件 |
Size | U8 | 8 | U8 | - | RTC芯片读取长度 | 需要同步RTC | 8 | CSR | 硬件 |
YearOffset | U16 | 0 | U16 | - | 年差值 | 需要同步RTC | 0 | CSR | 硬件 |
EffOffset | U8 | 0 | U8 | - | RTC芯片读取格式 | 需要同步RTC | 0 | CSR | 硬件 |
可选属性
属性名 | 类型 | 默认值 | 取值范围 | 动态关联 | 描述 | 使用场景 | 举例 | 来源 | 分类 |
---|---|---|---|---|---|---|---|---|---|
SyncTimeStatus | U8 | 0 | U8 | - | 时间同步状态,组件内部更新,不需要配置 | 查询NTP配置 | NULL | 组件更新 | 软件 |
Extra | String | - | 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
}
}
🔧 使用指南
配置步骤
- 设置主键ID:配置全局唯一的Id,建议使用槽位变量
- 关联SMC对象:通过CpuBrdRtc关联对应的SMC对象
- 配置有效性:设置IsValid决定对象是否生效
- 配置RTC支持:设置RtcSupported决定是否同步RTC时间
- 配置读取参数:设置Offset、Size、YearOffset、EffOffset等RTC读取参数
- 验证关联:确保SMC对象已正确定义
- 多实例处理:多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时间确保精度
- 日志记录:记录时间同步事件便于故障分析
- 告警机制:时间同步失败时产生相应告警