当前位置:网站首页>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头文件访问的。
边栏推荐
- USB (XV) 2022-04-14
- B_ QuRT_ User_ Guide(40)
- LeeCode -- 6. Zigzag transformation
- 经纬度PLT文件格式说明
- Network security - Eternal Blue
- B_QuRT_User_Guide(40)
- B_QuRT_User_Guide(37)
- Ros2 topic (03): the difference between ros1 and ros2 [01]
- Unity3d learning notes 4 - create mesh advanced interface
- Solution: prompt "unsupported video format" when inserting avi format video into the message
猜你喜欢
聊聊支付流程的设计与实现逻辑
Gee (IV): calculate the correlation between two variables (images) and draw a scatter diagram
Specific method example of V20 frequency converter manual automatic switching (local remote switching)
MySQL Index Optimization Practice II
Matlab SEIR infectious disease model prediction
云原生正在吞噬一切,开发者该如何应对?
[microservices SCG] gateway integration Sentinel
漏洞复现----49、Apache Airflow 身份验证绕过 (CVE-2020-17526)
建筑建材行业SRM供应商云协同管理平台解决方案,实现业务应用可扩展可配置
PCI-Express接口的PCB布线规则
随机推荐
Coreseek: the second step is index building and testing
System design overview
MATLAB signal processing [Q & A essays · 2]
2022第六季完美童模陕西总决赛圆满落幕
Inftnews | the wide application of NFT technology and its existing problems
高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
V-for traversal object
HDU 4747 mex "recommended collection"
The 19th Zhejiang Provincial Collegiate Programming Contest VP记录+补题
力扣解法汇总648-单词替换
漏洞复现----49、Apache Airflow 身份验证绕过 (CVE-2020-17526)
STL标准模板库(Standard Template Library)一周学习总结
First week of July
B_ QuRT_ User_ Guide(36)
USB (XVII) 2022-04-15
When copying something from the USB flash disk, an error volume error is reported. Please run CHKDSK
turbo intruder常用脚本
电子设备行业智能供应链协同平台解决方案:解决低效, 赋能产业数字化升级
Vs extension tool notes
产业共融新势能,城链科技数字峰会厦门站成功举办