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

科技   2024-11-06 12:02   江苏  
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

本文内容仅代表作者观点,不代表平台观点。

如有任何异议,欢迎联系我们。

如有侵权,请联系删除。


往期精彩回顾





2021年的第一场雪!英特尔2020年Q4财报解读



利用硬件辅助验证工具加速功能仿真


博文:裸片尺寸和光罩难题——光刻扫描仪吞吐量的成本模型


博文速递:Race condition in digital circuits


IP与SoC设计
《IP 与SoC》依托无锡国家“芯火”平台,全面报道全球IP与SoC设计技术的发展和国内外应用经验,为中国IC设计行业搭建一个IP与SoC资讯交流、产业促进的平台,为中国IC设计行业提供IP与SoC专业知识及相关信息支持和服务。
 最新文章