芯片debug:awk结合grep获取读数据

文摘   2024-11-04 20:54   北京  
linux系统中进行芯片调试定位时,我们经常需要读取寄存器的数值,有些时候可能手动读取就可以了,当读取频率高且数据量较大的场景时,就需要需要使用脚本解决问题了,脚本语言可以采用Pythonshell等等,很复杂的脚本实现推荐使用Python。简单的脚本实现推荐使用shell,因为所有的linux系统都支持shell命令,脚本可以直接使用。

在获取寄存器数值时,我们通常需要进行读信息过滤和筛选,留下需要的读数据。命令 mem_access nic -d 06:00.0 -r 0xa8110868    1”是读取06:00.0PCIe bdf)网卡设备

地址为0xa811086832bit寄存器。可得知读出的数据是0x10

命令 read_value1=$(mem_access nic -d $bdf_num -r 0xa8302f00 1 | grep "Value:" | awk '{print $4}') 首先执行了一个读命令,读结果是3行数据,grep "Value:" 筛选出来第3行,即“Addr: 0xa8110868, Value: 0x10”。

awk 是一个强大的文本处理工具,它默认使用空格或制表符作为字段分隔符,并将输入行分割成多个字段$4 awk 命令中用于字段提取的一个参数。awk '{print $4}'匹配上了第四个参数,即0x10。最终,read_value1为0x10,其实在正式的调试脚本中,读数据的获取仅仅是其中最基础的一个功能。
[root@asic-lab-asic205 icxiaoge]# mem_access nic -d  06:00.0 -r 0xa8110868    1nic: read register 0xa8110868BDF:0000:06:00.0:Addr: 0xa8110868, Value: 0x10[root@asic-lab-asic205 icxiaoge]# [root@asic-lab-asic205 icxiaoge]# cat ./read.sh #!/bin/bash
bdf_num=06:00.0read_value1=$(mem_access nic -d $bdf_num -r 0xa8110868 1 | grep "Value:" | awk '{print $4}')echo "read value is:$read_value1"[root@asic-lab-asic205 icxiaoge]# [root@asic-lab-asic205 icxiaoge]# ./read.sh read value is:0x10


处芯积律
处芯积律,而后知所至。一个芯片人的技术和行业研究分享。
 最新文章