如何简单快速的来打造MCU性能分析利器的详细资料概述

嵌入式资讯精选 2018-07-05 09:23 次阅读

说出来不确定大家信不信,实现起来也就70来行算上大括号的代码,是不是很激动人心?

言归正传,再小的程序,也是数据结构+代码。咱们先来由表及里地看看核心数据结构的样子。

首先,既然要从Cortex-M核在响应中断时自动入栈的信息采集PC,就必须了解自动入栈了些啥东东:

如何简单快速的来打造MCU性能分析利器的详细资料概述

这里可以看出Cortex-M内核自动压入了8个寄存器,右二那个不起眼的pc,正是一号主角。对自动入栈不太了解的小伙伴,可以查看《Cortex-M3权威指南》第9章的介绍

(https://github.com/RockySong/cm3_def_guide_cn)

理论上pc可以是任何指令位置。不幸的是一般工程生成的指令数常常在几万甚至几十万条,难道都要记录下来?估计天价的开发工具也不会这么做。常言说“首恶必办,协从不问”,咱们做profiling,也没必要统计出PC在所有指令上的分布密度,只要抓几个大头就够了。还有个麻烦的,是一个函数可以有多个指令,函数长度可以相差巨大,而且在一个大函数里不同区域的覆盖密度也不同。过日子还需要精打细算呀,咱们权衡打击精度与弹药消耗量,使用2个宏来决定配置,比如:

如何简单快速的来打造MCU性能分析利器的详细资料概述

第1个宏PROF_CNT决定了抓多少个大头,第2个宏PROF_ERR决定了网眼的大小——抓取的地址范围(也就是最大误差),在这个范围内的地址都计作同一个地址块。显然,PROF_CNT越多,PROF_ERR越小,抓取的就越多越精确,也就更接近高档的分析工具。值得一表的是,如果PROF_ERR够小,可以在较大的函数中抓出更消耗性能的位置。

第3个宏PROF_MASK又是什么鬼?这其实是个工具宏,用来把地址向下对齐到误差范围的边界,这也意味着PROF_ERR必须是2的整数次幂,这么做是避免消耗性能的取模运算。

下面请出关键的数据结构:性能分析的PC统计单元:

如何简单快速的来打造MCU性能分析利器的详细资料概述

很显然,PROF_CNT是多少,就应该有多少个ProfUnit_t实例。结构中,hitCnt是关键的参数,它统计了这个对齐后的PC地址”baseAddr”被采集到了多少次,”hitRatio”则是一个对人类友好的辅助变量,提供千分数(其实是1024级)精度的CPU占用率。

此外,还有个非常有用的小细节。比如,小伙伴们可能也注意到了,CPU占用率也是有时效性的。就像一个漫长的初始化可能让一些查询等待的函数红极一时,但在之前越是弄得满城风雨,程序主体运行后往往越是无声无息,甚至都没机会再运行一遍。

而即使在正常运行期间,不同时段开启的功能不同,常常出现“皇帝轮流做,明年到我家”。因此,咱们可以加一点衰减处理,也就是定期对于非0的hitCnt进行扣除一格,如果没有后续源源不断的再次命中,就会渐渐走下神坛直至跌出排行榜。这样可以提高统计结果的实时性。衰减机制的思路也很简单,就是轮流从hitCnt非0的各个PC样本点去扣。

综合上面的如意算盘,定义了如下统领全局的结构体:

如何简单快速的来打造MCU性能分析利器的详细资料概述

这个结构里decayNdx表示下次统计时从谁身上扣除hitCnt,每一次扣除后就轮转到后面的item上,以公平公正。profCnt则表示已经做了多少次profiling统计,用于计算命中率,而items则是上文介绍的PC样本统计单元。这里也有个小细节,就是在应用衰减来扣除每个item的hitCnt时,profCnt也需要扣除。

好了,有了完整的数据结构,该写代码了。从易到难,咱们可以先处理命中时的动作。

如何简单快速的来打造MCU性能分析利器的详细资料概述

代码很简单,记录地址,增加hitCnt,计算hitRate,再实时地“冒泡”,把最多hitCnt的item顶上去,排序的目的也是为了便于突出重点,对人类查看友好。这里每次hitCnt加2,是为了让衰减得没有增加的快,“过气”得缓慢点,小伙伴们可以根据需要调节增加量。

再剩下的就是最复杂的主函数了——说是复杂也就不到40行的代码。要在主函数里先应用衰减,然后检查这次的PC样本是否已有记录。如有记录就调用上面的_ProfOnHit(),如无记录则在一个hitCnt为0的item上记录这个新PC样本,也是调用_ProfOnHit()。此外,为了避免把idle函数和一些不想关心的函数也记录下来,程序还支持一个“忽略列表”,凡是位于忽略列表地址范围的PC样本都不理会。

如何简单快速的来打造MCU性能分析利器的详细资料概述

大功告成!接下来就是要使用了。使用非常简单,只需在定时器中断服务程序的主体中调用Profiling()并告诉它进入定时器中断时pc寄存器的值。为了获取入栈的PC,这个需要一点Cortex-M的基础知识和手写汇编。下面给出KEIL下的汇编入口:

如何简单快速的来打造MCU性能分析利器的详细资料概述

这个小程序先查出中断前使用的栈指针并以作为参数传递给C语言主体“SysTick_C_Handler”。如果小伙伴们对这段汇编看不明白,就直接用就可以。

C语言主体的使用方式如下:

如何简单快速的来打造MCU性能分析利器的详细资料概述

在使用的时候,咱们就进入开发工具的调试会话,让程序跑一会,再停下来。如果是在KEIL或IAR中,可以使用memory窗口或watch窗口观察s_prof.items。如果使用了GDB,可以输入命令 p/a s_prof.items。查看排名靠前的item,对照map文件即可估计出函数的名字和大致位置。值得一表的是,GDB下会自动解析出地址所对应的函数名,不用再让咱们手动查map,非常贴心!

回顾理论篇介绍的几个小坑,当查到一个不合理的地址时,先别激动,看看是不是小坑中的之一。如果确定不是,就有必要深入处理了。

到了这里,这期性能分析的话题的理论和实践的故事就讲完了。

等等,似乎还有什么没交待完。试想,当我们一一找出最耗CPU资源的函数后,倘若束手无策,那也是徒劳无功,我们必须有对付他们的办法。其中一项省力而又见效快的办法就是把它们放在执行性能更高的位置中去,也就是前面说的VIP区。下次,咱们就介绍一下各种VIP区的特点,以及升V的方法!敬请继续关注!

原文标题:70行代码来打造MCU性能分析利器!

文章出处:【微信号:mcuworld,微信公众号:嵌入式资讯精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

哈希表是什么?哈希表数据结构详细资料分析

哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构。也就是说,它通过把....

的头像 算法与数据结构 发表于 09-24 10:25 19次 阅读
哈希表是什么?哈希表数据结构详细资料分析

如何快速理解和掌握新MCU?

MCU的特点:要了解一款MCU,首先需要知道就是其ROM空间、RAM空间、IO口数量、定时器数量和定....

的头像 单片机精讲吴鉴鹰 发表于 09-23 09:16 80次 阅读
如何快速理解和掌握新MCU?

单片机MCU基础知识,初学者必看

1.MCU有串口外设的话,在加上电平转换芯片,如MAX232,SP3485就是RS232和RS485....

发表于 09-22 09:00 35次 阅读
单片机MCU基础知识,初学者必看

MCU将部分函数运行于RAM中解析

MCU(如: 基于Cortex V6M 的Cortex M0+ 等) Code 通常运行在内嵌Fla....

发表于 09-22 09:00 34次 阅读
MCU将部分函数运行于RAM中解析

MCU在血液分析仪中的应用设计

测量的次序通常由微控制器进行控制(MCU)。微控制器还进行转换结果的处理,存储测量结果至EEPROM....

发表于 09-22 09:00 19次 阅读
MCU在血液分析仪中的应用设计

怎么判断MSP430是否适合您的LCD应用

作者:Jennifer Barry, TI MSP430产品事业部 2001 年,MSP430产品线推出第一款具有集成型 LCD 的微控制器。自此,...

发表于 09-21 15:41 76次 阅读
怎么判断MSP430是否适合您的LCD应用

浅析非对称双核MCU基础知识及核间通信

首先是内核的选择。LPC4350基于32位的ARM Cortex-M4和Cortex-M0内核(以下....

发表于 09-21 09:39 28次 阅读
浅析非对称双核MCU基础知识及核间通信

STM32L4进入STOP2模式后的漏电问题的分析及解决

STM32L4 系列,目前是STM32超低功耗产品中最强大的一个系列。它为我们提供了丰富的低功耗模式....

的头像 电子设计 发表于 09-21 09:02 510次 阅读
STM32L4进入STOP2模式后的漏电问题的分析及解决

ESP8266 Node MCU-API 函数的详细中文说明

本文档的主要内容详细介绍的是ESP8266的Node MCU-API 函数的详细中文说明。

发表于 09-21 08:00 18次 阅读
ESP8266 Node MCU-API 函数的详细中文说明

IC Insights报告显示:2018年全球MCU营收预将成长11%,可达到186亿美元

IC Insights在其《The 2018 McClean Report》调报告中,提高了对MCU....

发表于 09-20 16:41 59次 阅读
IC Insights报告显示:2018年全球MCU营收预将成长11%,可达到186亿美元

基于FRAM的MCU MSP430FR57xx系列设计

作者:Priya Thanigai 这是三篇系列技术文章中的第一篇。请您下周一定继续查阅最新文章!:) 您是否曾有看似超越现有技术好...

发表于 09-20 16:25 70次 阅读
基于FRAM的MCU MSP430FR57xx系列设计

PD3173放电正常但充电无法带电池是否需要用MCU通过IIC设置相关参数?

一、一、二、二: 1、pd3173放电正常;充电无法带电池,没有充电电流,是否需要用单片机通过IIC设置相关参数,如何设置? 二...

发表于 09-20 16:22 28次 阅读
PD3173放电正常但充电无法带电池是否需要用MCU通过IIC设置相关参数?

基于MSP430FR5739的应用至物联网的连接

作者:Priya Thanigai 我们在上周探讨了基于 MSP430FR5739 器件的移动信用卡读卡器。MSP430FR5739 是 MSP430 系...

发表于 09-20 16:21 96次 阅读
基于MSP430FR5739的应用至物联网的连接

在用mcu的串口接收数据完成后, 如何把串口关闭以降低功耗

在用mcu的串口接收数据,用完后,想把串口关闭以降低功耗 ...

发表于 09-20 10:01 192次 阅读
在用mcu的串口接收数据完成后, 如何把串口关闭以降低功耗

宽范围二进制逻辑电平电压转换模块包括BOM及原理图

描述              此参考设计可将高达 300VDC 的高直流电压输入转换成典型电子电...

发表于 09-20 08:55 304次 阅读
宽范围二进制逻辑电平电压转换模块包括BOM及原理图

适用于1GHz以下频段具有极长电池寿命的门窗传感器设计方案

描述             The TIDA-01066 TI Design uses Texas Instruments' u...

发表于 09-20 08:53 138次 阅读
适用于1GHz以下频段具有极长电池寿命的门窗传感器设计方案

通过以太网供电的音频通信参考设计包括BOM及层图

描述             This design uses Texas Instrument's high performance TM...

发表于 09-20 08:45 137次 阅读
通过以太网供电的音频通信参考设计包括BOM及层图

2016-2018年中国无线MCU产品市场分析

据赛迪顾问预测,2025年我国物联网连接数将达到53.8亿,其中5G物联网连接数达到39.3亿。

发表于 09-20 08:33 76次 阅读
2016-2018年中国无线MCU产品市场分析

基于MCU模块的定时器工作原理解析

在MCU中(M16),定时器是独立的一个模块,M16有三个独立的定时器模块,即T/C0、T/C1和T....

发表于 09-19 16:16 70次 阅读
基于MCU模块的定时器工作原理解析

Pickit4支持AVR吗?

我在EVB博客上看到,新的PACKIT4将支持AVR MCU。这是真的吗?我在任何一个文学作品中都没有看到过。有人能证实或...

发表于 09-19 15:25 16次 阅读
Pickit4支持AVR吗?

热噪声可以变废为宝吗

作者:  Mike Beckman   德州仪器 模拟设计中的热噪声几乎总属于寄生特性,需要不惜一切代价加以避免。...

发表于 09-19 15:04 167次 阅读
热噪声可以变废为宝吗

EEPROM结构的内置Flash降低成本

LPC802是NXP推出的一款性价比很高的微处理器,具有EEPROM结构的Flash,开关矩阵等,可....

的头像 周立功单片机 发表于 09-19 09:48 601次 阅读
EEPROM结构的内置Flash降低成本

MAIN、MCU和UART的PCB封装的资料和封装图详细资料免费下载

本文档的主要内容详细介绍的是MAIN、MCU和UART的PCB封装的资料和封装图详细资料免费下载。

发表于 09-19 08:00 22次 阅读
MAIN、MCU和UART的PCB封装的资料和封装图详细资料免费下载

基于AVR单片机的常见问题解答

所有的C 编译器均已在ATMEL 网站上有关第三方工具供应商的网页上列出;ATMEL 公司在它的网站....

发表于 09-18 16:52 80次 阅读
基于AVR单片机的常见问题解答

基于AIS系统中2189M的硬件设计

ADSP2189M芯片是一种定点DSP,其指令周期为13.3ns,运行速度可达75MIPS。处理器包....

发表于 09-17 14:44 68次 阅读
基于AIS系统中2189M的硬件设计

基于C8051F920单片机在太阳能充电系统中的设计

太阳能光伏板接入光伏信号处理电路,光伏电压经PWM充电控制电路送到12 V蓄电池内。正常工作时,12....

发表于 09-17 14:36 89次 阅读
基于C8051F920单片机在太阳能充电系统中的设计

使用英特尔图形性能分析器分析应用程序

This video shows how to launch a Microsoft DirectX....

的头像 英特尔 Altera视频 发表于 09-17 09:19 135次 观看
使用英特尔图形性能分析器分析应用程序

如何为单片机选择合适的人机界面?

单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英....

发表于 09-17 08:00 44次 阅读
如何为单片机选择合适的人机界面?

MCU再创销售额新高纪录,到2020年持续呈现上扬走势

市场研究机构IC Insights预期,IC产业的原始系统级晶片(SoC)产品──微控制器(micr....

发表于 09-16 11:13 116次 阅读
MCU再创销售额新高纪录,到2020年持续呈现上扬走势

关于步进电机控制器与伺服电机控制器的对比浅析

步进电机和伺服电机是工控领域应用最广泛的两类产品,而它们的核心分别是步进电机控制器与伺服电机控制器,....

发表于 09-16 09:48 143次 阅读
关于步进电机控制器与伺服电机控制器的对比浅析

高整合度血压计MCU BH66F2232广泛应用雨血压计方案

BH66F2232具有2K Word Flash程序内存、128 Byte数据存储器及32 Byte....

发表于 09-15 09:25 41次 阅读
高整合度血压计MCU BH66F2232广泛应用雨血压计方案

微软为MCU设备构建物联网安全平台

有数据显示,预计到2020年全球物联网市场将以每年28.5%的复合增长率飞速发展,而物联网背后的技术....

发表于 09-15 06:39 185次 阅读
微软为MCU设备构建物联网安全平台

基于移动数据LED显示屏系统的构成及原理解析

此种基于移动数据的LED显示屏幕系统由GSM无线收发模块、MCU(单片机)、LED驱动电路、LED显....

发表于 09-14 16:48 87次 阅读
基于移动数据LED显示屏系统的构成及原理解析

2018年MCU的出货量比预期提高了18%,增长还将持续强劲

2018年McClean报告的年中更新数据披露,IC Insights将MCU 2018年的出货量预....

发表于 09-14 14:08 95次 阅读
2018年MCU的出货量比预期提高了18%,增长还将持续强劲

华大携手华虹打造国内最低功耗MCU系列产品

华大半导体有限公司MCU事业部携手全球领先的特色工艺纯晶圆代工企业上海华虹宏力半导体制造有限公司(“....

的头像 华大半导体有限公司 发表于 09-14 11:29 1159次 阅读
华大携手华虹打造国内最低功耗MCU系列产品

新唐NuMicro系列M0和M4的芯片的详细资料介绍和使用手册免费下载

一块板子拿在手里,大家最急切想知道的应该就是该芯片都有什么功能?用什么编译?怎么编译?怎么下载?怎么....

发表于 09-14 10:55 31次 阅读
新唐NuMicro系列M0和M4的芯片的详细资料介绍和使用手册免费下载

IC Insights预测,2022年MCU销售额将达到239亿美元

MCU(微控制器)是把中央处理器的频率与规格做适当缩减,并将内存、计数器、 USB、 A/D转换、U....

的头像 罗欣 发表于 09-14 10:23 465次 阅读
IC Insights预测,2022年MCU销售额将达到239亿美元

使用英特尔®图形性能分析器执行帧分析

This video shows how to perform frame analysis for....

的头像 英特尔 Altera视频 发表于 09-14 10:09 104次 观看
使用英特尔®图形性能分析器执行帧分析

MCU生态短板,亟待多端突破

微控制器(MCU),国人更喜欢称为单片机,是今天电子产品的心脏,被广泛地应用到消费和工业电子产品中。

的头像 嵌入式资讯精选 发表于 09-12 10:37 818次 阅读
MCU生态短板,亟待多端突破

为什么要学习数据结构?数据结构的应用详细资料概述免费下载

本文档的主要内容详细介绍的是为什么要学习数据结构?数据结构的应用详细资料概述免费下载包括了:数据结构....

发表于 09-11 17:15 33次 阅读
为什么要学习数据结构?数据结构的应用详细资料概述免费下载

什么是MCU,主控MCU和触控IC之间有何区别?

触摸ic触摸在此特指单点或多点触控技术; IC,即集成电路,是半导体元件产品的统称。包括:1.集成电....

发表于 09-10 16:36 226次 阅读
什么是MCU,主控MCU和触控IC之间有何区别?

如何将MCU部分函数运行于RAM中?

MCU(如: 基于Cortex V6M 的Cortex M0+ 等) Code 通常运行在内嵌Fla....

的头像 畅学单片机 发表于 09-10 16:19 241次 阅读
如何将MCU部分函数运行于RAM中?

华虹半导体上半年营收8588万美元,同比增加25%

华虹半导体2018上半年净利润8588.8万美元同比增加25.5%华虹半导体 发布2108年第二季度....

的头像 集成电路应用杂志 发表于 09-10 14:26 839次 阅读
华虹半导体上半年营收8588万美元,同比增加25%

大咖解读:MCU在无线传感网节点上的应用

无线传感网节点上的核心部分为无线传输模块,用电池的场合对MCU 功耗会较高,航顺HK32系列MCU功....

的头像 Duke 发表于 09-10 12:24 0次 阅读
大咖解读:MCU在无线传感网节点上的应用

下游应用牵引MCU产业前景向好,投资MCU企业有三种思路

自上世纪70年代问世以来,单片机(Microcontroller Unit,MCU)就凭借其极强的....

发表于 09-08 11:32 432次 阅读
下游应用牵引MCU产业前景向好,投资MCU企业有三种思路

IoT需要什么样的MCU?MCU该如何满足需求?

物联网(IoT)的应用为MCU开启了新的征战地,尤以大量节点的低功耗MCU为甚,众多厂商也在潜心修....

发表于 09-08 11:14 224次 阅读
IoT需要什么样的MCU?MCU该如何满足需求?

汽车芯片能力再提升,四维图新MCU芯片预计年底进入量产

据报道,四维图新在互动平台上透露,其MCU芯片研发进度正常,目前已进入产品化设计阶段,预计2018年....

的头像 电子发烧友网 发表于 09-08 09:46 1149次 阅读
汽车芯片能力再提升,四维图新MCU芯片预计年底进入量产

基于MCU52单片机在无线传感器网络演示系统中的应用

无线传感器网络能够实时监测、感知和采集网络分布区域内的各种环境或监测对象的信息,并对这些信息进行处理....

发表于 09-07 15:25 119次 阅读
基于MCU52单片机在无线传感器网络演示系统中的应用

MicrochipSAML10和SAML11MCU,两款32位MCU可实现业界最低功耗

SAM L10在业界同类MCU中功耗最低,可让用户免受低能效 MCU 电源的限制进行安全应用开发。其....

发表于 09-06 17:19 448次 阅读
MicrochipSAML10和SAML11MCU,两款32位MCU可实现业界最低功耗

如何将MCU中部分函数运行于RAM中

MCU(如: 基于Cortex V6M 的Cortex M0+ 等) Code 通常运行在内嵌Fla....

发表于 09-06 17:13 125次 阅读
如何将MCU中部分函数运行于RAM中

基于触控IC和触控MCU应用设计,对比二者的不同

触摸ic触摸在此特指单点或多点触控技术; IC,即集成电路,是半导体元件产品的统称。包括:1.集成电....

发表于 09-06 17:07 84次 阅读
基于触控IC和触控MCU应用设计,对比二者的不同

MCU未来市场前景看好,国产MCU需多端突破

2017年MCU市场十分活跃,市场增长很快,尤其是消费电子市场。据市场研究机构IHS数据,2017年....

发表于 09-06 17:00 484次 阅读
MCU未来市场前景看好,国产MCU需多端突破

物联网在应用上对于传感器的需求非常之高

ST亚太区模拟、MEMS与传感组件产品营销经理陈建成指出,在物联网应用中,准确度将会特别重要。这是因....

发表于 09-06 16:38 83次 阅读
物联网在应用上对于传感器的需求非常之高

AVR的IO口的资料和使用说明及正确的熔丝配置详细资料免费下载

其实采用真正双向IO结构的新型MCU很多,常用的有 增强型51,PIC,AVR等 AVR的IO是真....

发表于 09-06 15:28 36次 阅读
AVR的IO口的资料和使用说明及正确的熔丝配置详细资料免费下载

人工智能给MCU带来新机遇,先进工艺或阻碍其发展

Arm嵌入式与汽车事业部市场营销高级总监Rhonda Dirvin日前接受了《电子工程专辑》的采访,....

的头像 Arm芯闻 发表于 09-06 15:14 909次 阅读
人工智能给MCU带来新机遇,先进工艺或阻碍其发展

购物网站数据库设计的详细资料概要免费下载

 编写数据库设计文档的目的是:明确数据库的表名、字段名等数据信息,用来指导后期的数据库脚本的开发。本....

发表于 09-05 15:45 24次 阅读
购物网站数据库设计的详细资料概要免费下载

浅析MCU的内存分配与代码执行

单片机执行指令过程详解单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。

的头像 玩转单片机 发表于 09-04 16:25 360次 阅读
浅析MCU的内存分配与代码执行

全球MCU市场将于2020年达到高峰,国产MCU厂商任重道远

灵动微电子董事长兼CEO吴忠洁博士表示,近年来,灵动微电子主要在四个方面持续努力,简称为——APPS....

的头像 电子发烧友网工程师 发表于 09-04 10:14 461次 阅读
全球MCU市场将于2020年达到高峰,国产MCU厂商任重道远

低成本彩屏显示方案

基于i.MX RT系列高性能跨界处理器设计的一款高性价比视频播放解决方案。实现了在嵌入式微处理器上的....

的头像 周立功单片机 发表于 09-03 17:39 444次 阅读
低成本彩屏显示方案

AGM推出基于ASIC的MCU算力加速芯片,将是车载计算平台未来发展趋势

近几年,深度神经网络(DNN)在图像识别、自然语言处理等方向上取得了前所未有的成功,并推动相关行业的....

的头像 芯榜 发表于 09-03 17:29 989次 阅读
AGM推出基于ASIC的MCU算力加速芯片,将是车载计算平台未来发展趋势