当前位置:网站首页>B_QuRT_User_Guide(38)
B_QuRT_User_Guide(38)
2022-07-07 21:52:00 【weixin_38498942】
B_QuRT_User_Guide(38)
24 Performance Monitor
线程使用性能监控器在用户程序执行期间实时测量代码性能。
性能监控单元(PMU)是Hexagon处理器的一个硬件功能。它是通过访问一组专用的处理器寄存器来控制的。
性能监测器在QuRT中通过以下操作进行控制。- qurt_pmu_enable()
- qurt_pmu_get()
- qurt_pmu_set()
- Macros
24.1 qurt_pmu_enable()
24.1.1 功能文档
24.1.1.1 void qurt_pmu_enable ( int enable )
启用或禁用Hexagon处理器性能监控单元(PMU)。默认情况下,剖析功能是禁用的。
默认情况下禁用。
注意:启用剖析并不自动重置计数寄存器–必须在开始事件计数之前明确进行。
参数
返回值
None.
依赖项
None.
24.2 qurt_pmu_get()
24.2.1 功能文档
24.2.1.1 unsigned int qurt_pmu_get ( int reg_id )
获取PMU寄存器。
返回指定PMU寄存器的当前值。
参数
返回值
Integer - 指定PMU寄存器的当前值。
依赖项
None.
24.3 qurt_pmu_set()
24.3.1 功能文档
24.3.1.1 void qurt_pmu_set ( int reg_id, unsigned int reg_value )
设置指定的PMU寄存器的值。
注意:设置PMUEVTCFG会自动清除PMU寄存器PMUCNT0到PMUCNT3。
参数
返回值
None.
依赖项
None.
25 Error Results
QuRT函数以两种方式之一返回错误结果。
- 作为函数的结果值
- 作为传递给用户定义的异常处理程序的值
QuRT为错误结果值定义了一组标准符号。本节列出了这些符号和它们相应的值。
26 Function Tracing
QuRT支持函数追踪以协助调试程序。- qurt_trace_changed()
- qurt_trace_get_marker()
- qurt_etm_set_pc_range()
- qurt_etm_set_atb()
- qurt_stm_trace_set_config() - 数据类型
- 宏指令
26.1 qurt_trace_changed()
26.1.1 功能文档
26.1.1.1 int qurt_trace_changed ( unsigned int prev_trace_marker, unsigned int trace_mask )
确定特定的内核事件是否已经发生。
返回一个值,表示自从获得指定的内核跟踪标记后,指定的内核事件是否被记录在内核跟踪缓冲区中。
prev_trace_marker参数指定的是通过调用qurt_trace_get_marker()获得的内核跟踪标记。
注意。
与qurt_trace_get_marker()一起使用,该函数确定某些内核事件是否发生在一个代码块中。
这个函数不能确定特定的内核事件类型是否已经发生,除非该事件类型在系统配置文件的trace_mask元素中被启用。
QuRT只支持记录中断和上下文切换事件(如trace_mask值为0x3)。
参数
返回值
1 - 自从获得指定的跟踪标记以来,已经发生了指定类型的内核事件。
0 - 自从获得指定的跟踪标记后,没有发生指定类型的内核事件。
依赖项
None.
26.2 qurt_trace_get_marker()
26.2.1 功能文档
26.2.1.1 unsigned int qurt_trace_get_marker ( void )
获取内核跟踪标记。
返回内核跟踪标记的当前值。该标记由一个硬件线程标识符和内核跟踪缓冲区的索引组成。跟踪缓冲区记录了各种内核事件。
注意:将此函数与qurt_trace_changed()一起使用可以确定某些内核事件是否发生在一个代码块中。
返回值
Integer - 内核跟踪标记。
依赖项
None.
26.3 qurt_etm_set_pc_range()
26.3.1 功能文档
26.3.1.1 unsigned int qurt_etm_set_pc_range ( unsigned int range_num, unsigned int low_addr, unsigned int high_addr )
设置用于ETM过滤的PC地址范围。根据Hexagon核心设计,最多可支持四个PC范围。
参数
返回值
QURT_ETM_SETUP_OK - 成功。
QURT_ETM_SETUP_ERR - 失败。
依赖项
None.
26.4 qurt_etm_set_atb()
26.4.1 功能文档
26.4.1.1 unsigned int qurt_etm_set_atb ( unsigned int flag )
设置ATB总线的状态,以通知QuRT ATB总线被主动启用或禁用。QuRT执行
在低功率管理下执行相应的动作。
参数
返回值
QURT_ETM_SETUP_OK - 成功。
QURT_ETM_SETUP_ERR - 失败
依赖项
None.
26.5 qurt_stm_trace_set_config()
26.5.1 功能文档
26.5.1.1 unsigned int qurt_stm_trace_set_config ( qurt_stm_trace_info_t ∗ stm_config_info )
设置一个STM端口用于追踪事件。
参数
返回值
QURT_EOK - 成功。
QURT_EINVALID - 失败;可能是因为通过的端口地址不在页面表中。
依赖项
None.
26.6 Data Types
本节介绍了函数追踪服务的数据类型。
26.6.1 Data Structure Documentation
26.6.1.1 struct qurt_stm_trace_info_t
26.7 Macros
STM跟踪信息。
26.7.1 Define Documentation 26.7.1.1 #define QURT_ETM_SETUP_OK 0
ETM setup OK.
26.7.1.2 #define QURT_ETM_SETUP_ERR 1
ETM setup error.
26.7.1.3
ATB off.
26.7.1.4
ATB on.
26.7.1.5 #define QURT_TRACE( str, … ) VA_ARGS
函数追踪是通过一个调试宏(QURT_TRACE)实现的,它可以选择生成printf
语句,在每个作为宏参数传递的函数调用之前和之后都会产生。例如,源代码中的以下宏调用:
QURT_TRACE(myfunc, my_func(33))
产生以下调试输出:
myfile:nnn: my_func >>> calling my_func(33)
myfile:nnn: my_func >>> returned my_func(33)
调试输出包括函数调用的源文件和行号,以及调用本身的文本。编译客户源文件时,对其文件名定义了-D FILENAME。
调试输出是使用库中的函数qurt_printf生成的。符号QURT_DEBUG控制调试输出的生成。如果没有定义这个符号,就不会生成函数跟踪。
注意:调试宏是通过QuRT API头文件访问的。
边栏推荐
- Explain
- B_ QuRT_ User_ Guide(40)
- Unity3d Learning Notes 6 - GPU instantiation (1)
- 家用电器行业渠道商协同系统解决方案:助力家电企业快速实现渠道互联网化
- Force deduction solution summary 648 word replacement
- Conversion between commonsmultipartfile and file
- leetcode-520. Detect capital letters -js
- Unity3d learning notes 4 - create mesh advanced interface
- Tree background data storage (using webmethod) [easy to understand]
- 系统设计概述
猜你喜欢

Inftnews | the wide application of NFT technology and its existing problems

B_QuRT_User_Guide(36)

Wechat forum exchange applet system graduation design (5) assignment

LDO稳压芯片-内部框图及选型参数

Inftnews | web5 vs Web3: the future is a process, not a destination

UE4_UE5结合罗技手柄(F710)使用记录

Oracle-数据库的备份与恢复

ArcGIS: field assignment_ The attribute table field calculator assigns values to fields based on conditions

聊聊支付流程的设计与实现逻辑

Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting
随机推荐
LDO voltage stabilizing chip - internal block diagram and selection parameters
648. Word replacement
The text editor of markdown class should add colors to fonts (including typora, CSDN, etc.)
进度播报|广州地铁七号线全线29台盾构机全部完成始发
UE4_ Ue5 combined with Logitech handle (F710) use record
欢聚时代一面
Freelink open source call center design idea
STL标准模板库(Standard Template Library)一周学习总结
The 19th Zhejiang Provincial Collegiate Programming Contest 2022浙江省赛 F.EasyFix 主席树
Wechat forum exchange applet system graduation design (2) applet function
Description of longitude and latitude PLT file format
Turbo introder common scripts
Matlab-SEIR传染病模型预测
LDO穩壓芯片-內部框圖及選型參數
leetcode-520. Detect capital letters -js
生鲜行业数字化采购管理系统:助力生鲜企业解决采购难题,全程线上化采购执行
USB (十八)2022-04-17
ROS2专题(03):ROS1和ROS2的区别【02】
Add data analysis tools in Excel
聊聊支付流程的设计与实现逻辑