nicsensor/readme.md
2025-05-12 14:17:13 +08:00

161 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# nicsensor工具使用说明
> 本说明仅针对 nicsensorv1.x系列脚本
## 目录
- [nicsensor工具使用说明](#nicsensor工具使用说明)
- [目录](#目录)
- [1\_简介](#1_简介)
- [2\_使用方法](#2_使用方法)
- [2\_1\_传感器读取](#2_1_传感器读取)
- [2\_2\_FRU相关操作](#2_2_fru相关操作)
- [2\_3\_命令透传](#2_3_命令透传)
- [2\_4\_插槽I2C信息遍历](#2_4_插槽i2c信息遍历)
- [2\_5\_调试模式使用](#2_5_调试模式使用)
- [2\_5\_扩展功能](#2_6_扩展功能)
- [3\_常见问题](#3_常见问题)
- [3\_1\_ADC128传感器读值为0](#3_1_adc128传感器读值为0)
- [3\_2\_脚本执行时出现大批量语法错误](#3_2_脚本执行时出现大批量语法错误)
- [4\_附属工具](#4_附属工具)
- [4\_1\_FruParse](#4_1_fruparse)
- [5\_关于nicsensor\_v2](#5_关于nicsensor_v2)
## 1_简介
nicsensor工具是在带有i2ctool工具(i2ctransfer、i2cdetect)的BMC下用于测试网卡I2C功能的工具。
**当前支持的功能有:**
- 读取网卡上的I2C传感器
- 读取并修改网卡上的FRU
- 透传I2C命令到网卡的芯片上
- 遍历服务器上的PCIE插槽的I2C信息
- 部分服务器类型支持读取OCP卡
**当前支持测试的传感器类型**
- adc128
- ina3221
- emc1413
- tmp468
- tmp112
> [!tip]
> 每次执行脚本都可以在 `/tmp/nicsensor_debug.log` 查询详细的命令执行记录
## 2_使用方法
> [!warning]
> 在使用时针对网卡的硬件特性需要定制化修改脚本的 `Project Varible`
### 2_1_传感器读取
**命令格式**
``` shell
./nicsensor.sh <pcie_slot> <sensor_tpye> <sensor_slave>
```
**参数说明**
- `pcie slot`:网卡位于的PCIE SLOT槽位,需要指定pcie/ocp, 不指定时默认为pcie类型
- `sensor type`:传感器类型
- `sensor slave`:传感器的slave地址
**命令示例**
``` shell
# 读取pcie2槽位上的adc128的信息, adc128芯片的地址为0x1f(7bit)
./nicsensor.sh pcie2 adc128 0x1f
```
### 2_2_FRU相关操作
> [!warning]
> 在写入网卡FRU操作时受限于服务器PCA9641的影响需要将服务器关机后执行
**命令格式**
``` shell
# 读取FRU
./nicsensor.sh <pcie_slot> fru <eeprom_slave>
# 写入FRU
./nicsensor.sh <pcie_slot> fru <eeprom_slave> write <filename>
```
**参数说明**
- `pcie slot`:网卡位于的PCIE SLOT槽位,需要指定pcie/ocp, 不指定时默认为pcie类型
- `eeprom slave`: FRU所在的eeprom芯片的slave地址
- `filename`: 仅在写入FRU时提供, 要写入的FRU bin文件
**命令示例**
``` shell
# 读取pcie2槽位上的fru信息, eeprom的芯片地址为0x50(7bit)
./nicsensor.sh pcie2 fru 0x50
# 写入pcie2槽位上网卡的fru
./nicsensor.sh pcie2 fru 0x50 write fru.bin
```
### 2_3_命令透传
**命令格式**
``` shell
./nicsensor.sh <pcie_slot> chip <chip slave> <command>
```
**参数说明**
- `pcie slot`:网卡位于的PCIE SLOT槽位,需要指定pcie/ocp, 不指定时默认为pcie类型
- `chip slave`: 芯片的slave地址
- `command`: 要透传执行的I2C命令
**命令示例**
``` shell
# 对pcie2槽位上的chip透传命令 i2ctransfer -y 12 w2@0x11 0x00 0x00 r2 , 芯片地址为0x11(7bit)
./nicsensor.sh pcie2 chip 0x11 "i2ctransfer -y 12 w2@0x11 0x00 0x00 r2"
```
### 2_4_插槽I2C信息遍历
**命令格式**
``` shell
./nicsensor.sh detect <nic_type>
```
**参数说明**
- `nic type`:需要指定pcie/ocp, 不指定时默认为pcie类型
**命令示例**
``` shell
./nicsensor.sh detect pcie
```
### 2_5_调试模式使用
> 关联变量 `DEBUG_MODE`, 启用调试模式时需要将该变量的值配置为1
如果不需要借助脚本来选通服务器上对应的channel, 仅需要做传感器数值测试, 可以启用调试模式。
在调试模式下, 脚本不会执行选通PCA9641以及PCA9546/9548的操作。仅直接测试传感器。因此需要手动调整两个变量
- `DEBUG_MODE`
- `i2c_bus`
> 关联变量 `DISABLE_DETECT`, 启用时配置为1, 将不会在切换PCA9641和PCA9548时进行i2cdetect
### 2_6_扩展功能
脚本中预留了函数 `handle_reserve` 用于扩展功能。针对有特殊需求的项目可能会使用。
## 3_常见问题
### 3_1_ADC128传感器读值为0
ADC128传感器在使用时需要初始化, 因此第一次读取时传感器可能并未完成初始化, 所以读值为0
### 3_2_脚本执行时出现大批量语法错误
通常是因为服务器上含有PCA9641切断了BMC的I2C控制权导致重试即可
## 4_附属工具
### 4_1_FruParse
提供了一个简单python脚本用于解析FRU的数据, 将nicsensor读取到的FRU数据拷贝到frudata.txt后, 执行
`python fru_parse.py`即可将读取到的数据转化为FRU内容
## 5_关于nicsensor_v2
nicsensor_v2将服务器选通channel和读取传感器数值的功能解耦因此在单独使用某个功能时可以直接找到对应的脚本进行测试。
详见[nicsensor_v2](./nicsensor_v2/readme.md)