查看: 2641|回复: 1

Silicon Labs EFR32xG22 开发板软件评测 - GPD工程功耗检测

[复制链接]

该用户从未签到

发表于 2020-7-20 09:04:33 | 显示全部楼层 |阅读模式
分享到:
前言
---------------
第二篇评测我们基于SiliconEFR32平台,创建了Zigbee GPD工程,本文在该工程基础上,学会如何使用Silicon自带的功耗检测工具Energy Profiler,并对工程功耗进行代码级别的监测。

什么是Energy Profiler
---------------
EnergyProfiler(以下简称EP)是Silicon自研的一款功耗测量软件,作为插件内嵌于Simplicity Studio内部,可以以代码级别的形式,对程序的每个函数进行实时功耗统计。同时可以记录例如TX/RX中断的发生,在波形上同步记录与统计,方便应用级别开发者在项目评估阶段就可以快速分析程序功耗,将低功耗做到极致。EP安装请参考测评第一篇文章。启用EP时界面如下: 1.png

基于GPD工程添加支持EP功能
---------------
GPD工程(或者自定义工程)本身并不支持EP功能,需要按照如下步骤对工程进行修改:
第一步:添加硬件接口定义在hal-config.h(project_name/hal-config/hal-config.h)文件内, 添加代码

  1. <p class="MsoNormal" style="text-align:left;mso-layout-grid-align:
  2. none;text-autospace:none" align="left"><b><span style="font-size:10.0pt;
  3. font-family:" courier="" new";color:#7f0055;mso-font-kerning:0pt"="" lang="EN-US">#define</span></b><span style="font-size:10.0pt;font-family:" courier="" new";color:black;="" mso-font-kerning:0pt"="" lang="EN-US"> BSP_TRACE_SWO_PIN<span style="mso-spacerun:yes">                     </span>(3U)</span><span style="font-size:10.0pt;font-family:" courier="" new";mso-font-kerning:="" 0pt"="" lang="EN-US"></span></p>

  4. <p class="MsoNormal" style="text-align:left;mso-layout-grid-align:
  5. none;text-autospace:none" align="left"><b><span style="font-size:10.0pt;
  6. font-family:" courier="" new";color:#7f0055;mso-font-kerning:0pt"="" lang="EN-US">#define</span></b><span style="font-size:10.0pt;font-family:" courier="" new";color:black;="" mso-font-kerning:0pt"="" lang="EN-US"> BSP_TRACE_SWO_PORT<span style="mso-spacerun:yes">                    </span>(gpioPortA)</span><span style="font-size:10.0pt;font-family:" courier="" new";mso-font-kerning:="" 0pt"="" lang="EN-US"></span></p>

  7. <p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:
  8. " courier="" new";color:#7f0055;mso-font-kerning:0pt"="" lang="EN-US">#define</span></b><span style="font-size:10.0pt;font-family:" courier="" new";color:black;="" mso-font-kerning:0pt"="" lang="EN-US"> <span style="background:silver;mso-highlight:silver">BSP_TRACE_SWO_LOC</span><span style="mso-spacerun:yes">                     </span>(0U)</span></p>
复制代码

2.png


第二步:导入bsp文件将bsp_trace.c文件导入到工程内部,操作方法为在操作系统中直接复制即可。即在v2.7/hardware/kit/common/bsp路径下copy到 工程所在代码目录.
3.png

第三步:主函数内初始化进入emberGpdAfPluginMainCallback函数(对于本工程,该函数在gpd-sensor/gpd-sensor-callback.c中),在进入while循环前,添加初始化代码BSP_TraceSwoSetup(); 同时,为了导入该函数,需要在该c文件中包含头文件bsp_trace.h
                  4.png

5.png

第四步:确认debug功能打开右键工程->Properties->C/C++ Build->Settings->Debug Settings, 确认debug level功能已打开。 6.png

第五步:编译与启动重新编译工程,如按照上述步骤执行(仅限于zigbee类型工程,蓝牙等配置过程稍有不同)。在Simplicity Studio中点击Launcher->Tool(小图标)->选择Energy Profiler启动。同时确认EVB开发板电源的拨码开关调节到AEM档位。下载s37程序。 7.png 8.png 9.png
(下文如何使用EP接评论)



回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2020-7-20 09:04:34 | 显示全部楼层
使用Energy Profiler
------------------------
启动EP:Quick Access ->Start Energy Capture, 选中Jlink Silicon Labs:
10.png

11.png


接下来,在底部点击Select an Executable, 选中工程axf文件 12.png
13.png
注意,如果设备显示Device is Locked. 说明该设备已经加锁,需要Connect设备,手动解锁,或者关掉已经打开的energy progfiler,成功后,启动EP会显示如下图
14.png

15.png

可以看到,目前工程RX和串口相关函数是较为耗费电量的。对于应用级开发者,为了降低功耗,可以选择适当关闭串口功能(实际应用中全部关闭)。选择按键PB0-PB1,可以看到波形发生了变化,触发中断时,电流发生了变化,可以充分说明该软件对功耗的统计是实时的。方便应用开发者实时跟踪耗电情况。 16.png
17.png
接下来, 通过输入cli命令 sensorsleep 可以对比电流功率: 18.png
通过进入睡眠模式,可以看到电流从平均 3.73mA->2.14mA,降低了42.6%。此时也可以通过按键来唤醒设备,继续cli命令debug。

总结--------------
本文基于Silicon EFR32, 介绍了如何在zigbee工程中添加Energy Profiler工具并使用,可以看到在该工具的帮助下,开发者可以迅速分析系统中代码功耗,快速定位功耗较大的代码段,对于从应用代码中降低系统功耗有着显著的便利。需要额外说明的是,本文展示的工程电流在mA级别,原因是睡眠只调用了EM2级别,但是实际工程中通过配置EM4级别,可达到uA级别电流,从而符合市场与产品的需求。




回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条

手机版|小黑屋|与非网

GMT+8, 2024-3-29 04:27 , Processed in 0.132768 second(s), 18 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.