DevEco Device Tool迎来了2.1 Beta1,新版本有很多亮点。在上次“DevEco Device Tool 2.1 Beta1 的Hi3861在Windows平台的编译体验 ”(https://harmonyos.51cto.com/posts/4027)中,我们已经体验了HI3861在Windows平台的编译亮点及工具链管理功能的亮点,这次,来体验一下HI3861开发板在Windows平台的可视化分析这个亮点。润和的HiSpark_Wifi_IoT开发板和小熊派的BEARPI HM_Nano开发板使用的都是海思的Hi3861V100芯片,手头有小熊派的BEARPI HM_Nano开发板,就用它来做体验。
开发者在Hi3861开发板上开发应用程序时,需关注内存的分配和使用情况。DevEco Device Tool 2.1 Beta1新增了可视化分析功能——Profiling可视化分析,通过可视化的界面展示开发板上运行的应用所占系统资源和内存资源的信息,助力开发者查看和分析开发板上各任务堆内存和栈内存的使用情况,从而及时调整各任务的内存和资源分配策略。
先做准备工作:首先创建Profiling可视化分析任务。在原有的应用程序中增加定时查询系统资源信息和内存信息的定时任务后,就可以实现可视化分析。还是以iothardware应用为例。步骤如下:
1. 进入系统盘用户目录下的C:\Users\Administrator\.deveco-device-tool\platforms\hisilicon\profiling\src,复制“app_demo_sysinfo.c“和“app_demo_sysinfo.h“这两个文件到鸿蒙应用程序iothardware的目录下。
2. 这两个文件可以定时查询系统资源信息和内存信息,需要将这两文件添加到应用程序中,并编译烧录到3861开发板中。
(1) 在iothardware目录下的编译文件BUILD.gn文件中添加和更改以下内容:
sources:添加“app_demo_sysinfo.c”源文件参与编译。
include_dirs:添加“app_demo_sysinfo.h”头文件相对路径 "//applications/sample/wifi-iot/app/iothardware",
注意: include_dirs中:需将"//base/iot_hardware/interfaces/kits/wifiiot_lite" 更改为"//base/iot_hardware/peripheral/interfaces/kits",不然后续编译无法通过,提示"iot_gpio.h"文件不存在。这个bug相信后续版本会更正过来的。
(2)在当前程序“led_example.c”中添加头文件 #include "app_demo_sysinfo.h"
(3)在入口函数LedExampleEntry中增加调用 app_demo_heap_task();
(4)按惯例,修改app/BUILD.gn,使iothardware参与编译。
(5)另外,小熊派板载指示灯是GPIO 2,只需将“applications\sample\wifi-iot\app\iothardware\led_example.c”的#define LED_TEST_GPIO改为2,同时将LED_INTERVAL_TIME_US 由3000000改为6000000,闪烁频率改为为1.2秒一次,更适合人眼观察。
3.上述几处修改完成后,保存。直接在Windows下编译,烧录。重启开发板,板载蓝色指示灯开始闪烁。打开串口,大量信息不断涌现,有时间,内存,任务等信息。
准备工作完成后,就可以畅快淋漓地体验DevEco Device Tool 2.1 Beta1可视化分析的亮点。
在主页Deveco Home点击侧边栏的“Profiling”,Profiling页面点击“Live capture”,弹出开发板的串口设置选项,无需改动选择默认值就行,继续点击“Capture”,就进入可视化分许页面。注意开发板的串口不能被占用,不然无法进行可视化分析。
Heap:实时统计应用堆内存当前的使用情况和历史峰值情况,横坐标是时间信息,精确到毫秒,每150毫秒数据更新一次。(peak usage :86172 usage : 70988)
Stack:统计应用内各任务的内存使用情况,可以通过任务内存的峰值比例(Peak%)查看具体任务的内存使用情况,以便更合理的分配每个任务的内存大小。LED灯控制的LedTask 任务内存使用比例为72.7%。点击各个任务左边的加号,就可以展示单独任务的可视化。
OS Objects:统计系统资源的使用情况,如定时器(timers)、任务(tasks)、队列(queues)等数量
All in one:统计Heap和Stack的使用情况,实时动态刷新。
同时,Profiling还支持导出当前时间段的统计数据,文件格式为”Excel”和”Json”两种格式,导出后,可以继续用其它方式查看和精确分析。