我是靠谱客的博主 迷路棒球,这篇文章主要介绍Ai-WB2系列 二次开发如何定位分析代码里面的静态内存和动态内存情况一、软硬件准备二、编译工程三、静态内存的获取四、动态内存的获取五. 联系我们,现在分享给大家,希望可以做个参考。

前言

  • 一、软硬件准备
  • 二、编译工程
  • 三、静态内存的获取
  • 四、动态内存的获取
  • 五. 联系我们

一、软硬件准备

eclipse软件,bl_iot_sdk,Ai-WB2系列模组或者开发板,静态内存分析软件bouffalo_parse_tool-win32,
下载链接:https://docs.ai-thinker.com/_media/bouffalo_parse_tool-win32.zip
分析软件下载

二、编译工程

首先打开eclipse工程,导入bl_iot_sdk,这次我们使用的工程aws_iot_core来读取下代码所使用的静态内存大小,选择好对应的工程后,点击Apply and close关闭该窗口,然后右键点击SDK,选中build project选项进行编译
在这里插入图片描述
编译完成后显示如下界面在这里插入图片描述

三、静态内存的获取

编译完成后打开SDK目录,找到编译工程的build_out文件夹,选择aws_iot_core.map文件,如下图
在这里插入图片描述
打开Bouffalo Lab Parse Tool软件,选择Menory Map(.a)选项,将刚刚的aws_iot_core.map文件拖放进去
在这里插入图片描述
文件放进去后会读取map文件的信息,可以看到该工程的使用静态内存为52376字节,通过计算器换算得出使用了51KB左右,如下图
在这里插入图片描述

四、动态内存的获取

在helloworld工程中,main.c文件下做修改,为了方便观察动态内存的使用,本次演示未开启任务和开启任务后的动态内存,具体的代码改动如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void helloworld(void *pvParameters) { for (;;) { log_step(ci_table_step_init); log_step(ci_table_step_log); log_step(ci_table_step_end); vTaskDelay(1000 / portTICK_RATE_MS); } vTaskDelete(NULL); } void main(void) { int remain_ram = 0, remain_min_heap = 0; remain_ram = xPortGetFreeHeapSize(); remain_min_heap = xPortGetMinimumEverFreeHeapSize(); printf("remain_ram1:%drn remain_in_heap:%drn", remain_ram, remain_min_heap); xTaskCreate(helloworld, (char *)"main_entry", 1024, NULL, 15, NULL); remain_ram = xPortGetFreeHeapSize(); remain_min_heap = xPortGetMinimumEverFreeHeapSize(); printf("remain_ram1:%drn remain_in_heap:%drn", remain_ram, remain_min_heap); }

按照如上改动后通过烧录软件进行烧录,读取到上电打印日志如下图:
在这里插入图片描述
(1) 创建任务之前内存剩余情况
(2) 创建任务之后内存剩余情况

五. 联系我们

以上就是本期分享的内容,目的在于让大家快速适应新品方案的开发,更多资料可从我们官网上获取。

官方官网:https://www.ai-thinker.com
开发资料:https://docs.ai-thinker.com/
官方论坛:http://bbs.ai-thinker.com
技术支持:support@aithinker.com

最后

以上就是迷路棒球最近收集整理的关于Ai-WB2系列 二次开发如何定位分析代码里面的静态内存和动态内存情况一、软硬件准备二、编译工程三、静态内存的获取四、动态内存的获取五. 联系我们的全部内容,更多相关Ai-WB2系列内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(107)

评论列表共有 0 条评论

立即
投稿
返回
顶部