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

📋 文档信息

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

📋 变更历史记录

文档变更记录

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

🎯 类概览

Smc 类

属性
类名称Smc
功能描述系统管理控制器(SMC)配置和通信参数设置
所属SIG组hardware
所属组件硬件通信
责任人硬件通信组
最后更新2025-01-27
状态🟢 正常运行

📊 属性定义详表

必选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
NameStringN/A--SMC的命名
1、基础板-CpuBrdSMC
2、扩展板-ExpBoardSMC
配置Smc器件实现Smc命令字读写"ExpBoardSMC"CSR配置硬件
AddressU32N/A--器件总线地址
十进制,如0x60的地址对应十进制96
配置Smc器件实现Smc命令字读写96CSR配置硬件
AddrWidthU8N/A--地址位宽
单位Byte
配置Smc器件实现Smc命令字读写1CSR配置硬件
OffsetWidthU8N/A--偏移宽度配置Smc器件实现Smc命令字读写1CSR配置硬件

可选属性

属性名类型默认值取值范围动态关联描述使用场景举例来源分类
WriteTmoutU320--描述写入寄存器的超时时间
单位ms
无需配置0CSR配置硬件
ReadTmoutU320--描述读取寄存器的超时时间
单位ms
无需配置0CSR配置硬件

🔗 动态关联机制

语法规范

Smc对象通常被Scanner、Accessor等组件通过Chip属性引用:

yaml
# 在Scanner中引用SMC
Scanner:
  Chip: "#/ExpBoardSMC"                     # 引用扩展板SMC
  Chip: "#/CpuBrdSMC"                       # 引用基础板SMC

# 在Accessor中引用SMC
Accessor:
  Chip: "#/ExpBoardSMC"                     # 引用扩展板SMC

关联说明

  • Scanner关联: Scanner通过Chip属性引用SMC进行周期性数据扫描
  • Accessor关联: Accessor通过Chip属性引用SMC进行按需数据读写
  • 命令字通信: SMC通过I2C等总线协议实现命令字级别的通信

📂 分类标准

硬件属性

  • 定义:与SMC硬件通信直接相关的参数
  • 特点:影响硬件通信协议和性能
  • 示例Name, Address, AddrWidth, OffsetWidth, WriteTmout, ReadTmout

📝 配置示例

基础板SMC配置

json
{
  "CpuBrdSMC": {
    "Name": "CpuBrdSMC",
    "Address": 96,
    "AddrWidth": 1,
    "OffsetWidth": 1,
    "WriteTmout": 0,
    "ReadTmout": 0
  }
}

扩展板SMC配置

json
{
  "ExpBoardSMC": {
    "Name": "ExpBoardSMC",
    "Address": 96,
    "AddrWidth": 1,
    "OffsetWidth": 1,
    "WriteTmout": 0,
    "ReadTmout": 0
  }
}

多地址SMC配置

json
{
  "ExtSMC_0x62": {
    "Name": "ExtSMC_0x62",
    "Address": 98,
    "AddrWidth": 1,
    "OffsetWidth": 1,
    "WriteTmout": 100,
    "ReadTmout": 100
  }
}

宽地址SMC配置

json
{
  "WideSMC": {
    "Name": "WideSMC",
    "Address": 96,
    "AddrWidth": 2,
    "OffsetWidth": 2,
    "WriteTmout": 0,
    "ReadTmout": 0
  }
}

🔧 使用指南

配置步骤

  1. 确定SMC类型:根据板卡类型选择合适的命名(基础板/扩展板)
  2. 设置总线地址:配置Address为十进制的I2C地址
  3. 配置位宽参数:设置AddrWidth和OffsetWidth
  4. 可选超时配置:根据需要设置WriteTmout和ReadTmout
  5. 验证通信:确保SMC能够正常响应命令字操作

注意事项

  • 地址格式转换:Address需要从十六进制转换为十进制(如0x60 → 96)
  • 位宽匹配:AddrWidth和OffsetWidth必须与SMC硬件规格匹配
  • 命名规范:Name应该遵循统一的命名规范
  • 超时设置:WriteTmout和ReadTmout通常设置为0,表示使用默认值
  • 总线冲突:确保Address不与其他器件冲突

性能建议

  • 地址优化:选择合适的I2C地址避免总线冲突
  • 超时配置:根据SMC响应特性合理设置超时时间
  • 位宽选择:使用合适的位宽以平衡性能和复杂度
  • 命名管理:建立清晰的命名体系便于维护

SMC类型说明

  • 基础板SMC(CpuBrdSMC)
    • 位于CPU基础板上的SMC
    • 通常管理CPU相关的监控和控制功能
    • 地址通常为标准的I2C地址
  • 扩展板SMC(ExpBoardSMC)
    • 位于扩展板上的SMC
    • 管理扩展板特定的功能
    • 可能使用不同的I2C地址

通信协议说明

  • I2C协议:SMC通常使用I2C协议进行通信
  • 命令字模式:通过命令字实现寄存器级别的读写操作
  • 地址映射:AddrWidth和OffsetWidth定义了地址映射方式
  • 超时机制:WriteTmout和ReadTmout提供通信超时保护

常见问题

  • Q: SMC对象能否做成固定的模板配置?
    • A: 可以,常见的基础板和扩展板SMC配置相对固定,可以创建标准模板
  • Q: 为什么Address要用十进制?
    • A: JSON配置文件不支持十六进制格式,需要转换为十进制进行配置
  • Q: AddrWidth和OffsetWidth如何确定?
    • A: 根据SMC硬件规格确定,通常为1字节,特殊情况可能需要2字节
  • Q: 何时需要配置超时时间?
    • A: 当SMC响应较慢或需要特殊超时控制时,可以配置非零的超时值

地址转换对照表

十六进制地址十进制地址常见用途
0x6096标准SMC地址
0x6298扩展SMC地址
0x64100备用SMC地址
0x66102特殊SMC地址