首页 > 其他分享 >DV仿真环境下问题定位和性能分析工具:基于PC指针,结合map文件分析函数调用轨迹以及耗时

DV仿真环境下问题定位和性能分析工具:基于PC指针,结合map文件分析函数调用轨迹以及耗时

时间:2023-02-26 18:14:28浏览次数:41  
标签:map 函数 耗时 函数调用 PC 指令 DV

关键词:DV仿真,Python,map,PC等。

 

当DV使用复杂软件对硬件进行仿真时,由于没有类似Trace32等IDE调试环境,出现问题往往较难定位问题。同时如果想优化性能,较难直到不同流程耗时。

DV仿真可以记录每一次PC变动值,但是软件稍复杂会导致数据量非常庞大。

这里结合map就可以知道每一次执行所处函数,结合disassemble dump就可以直到每一次执行的指令。

1 PC指针指示了什么

ARM处理器3级流水线:取指->译码->执行,如下图:

PC始终指向正在取指的地址,由于流水线的存在,导致PC的值比当前正在执行的值要大两条指令的地址,而在ARM状态下,由于是四字节的指令因此PC保存着当前执行的指令地址值加 8 个字节,而在Thumb状态下,是两字节的指令因此加4字节即可。

2 工具设计思路

 pc_2_sym.py首先从map文件中解析出每个符号的名称/起始地址/大小/文件名,然后开始遍历PC轨迹文件:逐个根据PC-8查找对应的符号,写入csv文件中;将PC-8写入到ExecuteTraceAddress中。

3 Python实现

执行命令:

python pc_2_sym.py -m xxx.map -p pc.txt -o pc.csv

 代码如下:

 

4 使用

生成的csv文件使用Excel打开,对于查看函数调用轨迹可读性要好很多。

1. 可以对Symbol使用Filter进行过滤,查看关键函数轨迹。(函数级别)

2. 如果想查看函数内部调用细节,对照转换后的ExecuteTraceAddress和disassemble dump文件查看指令执行细节。(指令级别)

3. 可以对函数Duration进行排序,重点分析耗时较大的函数。或者明显异常的函数。或者一些udelay/mdelay延时函数。

缺点:

1. 无法记录函数入口和出口,所以csv中一次函数调用可能出现几次。对于分析函数耗时不准确,但结合代码可以分析出大概。

 

总体使用来看,比分析DV波形,查看关键节点寄存器或者特殊流程标记要高效全面得多。

标签:map,函数,耗时,函数调用,PC,指令,DV
From: https://www.cnblogs.com/arnoldlu/p/17157195.html

相关文章

  • system.map u-boot.map
    System.map linuxkernel编译后产生的System.map文件是通过如下命令生成的nmvmlinux|sort|less上图中的第二列表示符号类型,如果是小写字母,一般表示局部性,......
  • 横向移动之Windows IPC远程命令行连接
    https://www.cnblogs.com/iAmSoScArEd/p/17156938.html我超怕的IPC(InternetProcessConnection),用于进程间通信的命名管道。连接目标时需要验证用户名和密码,可以访问目标......
  • 09. Kubernetes - 可变信息配置管理(ConfigMap)
    ConfigMap前面的资源对象并不能满足日常工作中的所有需求,一个最重要的需求就是应用的配置管理,特别是可变配置。比如,在开发过程中程序需要配置MySQL或者Redis的连接地......
  • Semaphore
    (一)SYSTEM_INFOSYSTEM_INFO,Win32API函数GetSystemInfo所使用的结构体。1.说明SYSTEM_INFO结构体包含了当前计算机的信息。这个信息包括计算机的体系结构、中央处理器的......
  • Nmap列举远程机器上开放的端口
    一、Nmap扫描原理示意图:如果发现主机存活,nmap就会继续发送其他类型的数据包,通过分析远程机器上返回的数据包来得到相关信息;如果不存活就停止扫描二、使用Zenmap扫描......
  • 【MAUI】resource mipmap/appicon (aka com.companyname.mauiblazordemoapp:mipmap/ap
    问题出现描述我在向Resource文件夹下的Appicon和Splash里面分别添加了一个svg图标。随后我更改项目csproj文件里面的图标,随后启动项目出现错误。解决问题首先我删除了b......
  • PC怎样利用交换机进行信息交互
    一.IP地址及网络划分 我们这里有三台pc,分别是pc1,pc2,pc3,他们现在是不能互相交互的,很显然,默认状态下他们的IP地址都是属于C类,子网掩码也就是255,255,255,0;所以这三台电脑的......
  • go中的map和锁
    Go中的map和锁声明和初始化只声明,vargMapmap[string]string使用var声明声明初始化varhMap=map[string]string使用make初始化packagemainimport"fmt"......
  • Map
      介绍ES6提供了Map数据结构。它类似于对象,也是键值对的集合。但是“键的范围不限于字符串,各种类型的值(包括对象)都可以当作键。Map也实现了iterator接口,所......
  • VUEX mapActions 和 mapMutations
     不使用mapActions和mapMutations的代码要用的地方字体放大了<template><divid="app"><h1>当前总数为:{{nbr}}</h1><h2>放大十倍总数为:{{bigSum}}......