记录一下Keil好用的内存分析插件: keil-memory-bar & keil-build-viewer
介绍
在开发ARM嵌入式设备的时候,例如开发BOOTLOADER功能,有时候需要分析FLASH的占用情况,但是Keil编译仅能生产Map文件,需要人收手动分析,而不能像CCS一样打开“Memory Allocation View”,直观的掌握各个分区的内存占用细节。
CCS的Memory Allocation Window如下:
还好找到国内@MoodDream大神编写的一个Keil插件,Keil Memory Bar
Keil Memory Bar使用效果如下:
以及侯巽杰 (Dino)大佬的Keil Build Viewer
Keil Build Viewer使用效果如下:
以上两个插件均可以自动分析Map文件,并以进度条的形式输出占用率,能提供较为直观的内存使用情况,区别在于Keil Memory Bar是轻量化的,只能看整体的存储,而Keil Build Viewer会显示每个文件的占用大小,便于内存管理。
使用方法
插件的使用方法在gitee仓库的readme里写的比较详细,欢迎大家支持原作者
拷贝MemBar.exe或者keil-build-viewer.exe到Keil安装目录下,例如D:\Keil_v5\ARM\BIN
点击魔术棒
点击User选项卡
设置After Build/Rebuild执行命令,工具路径设置成实际的路径,建议路径最好不要带空格
D:\Keil_v5\ARM\BIN\keil-build-viewer.exe
或者
D:\Keil_v5\ARM\BIN\MemBar.exe “$L@L.map”
关于Keil Memory Bar,这里只提及一点小改动,第5步的神奇妙妙代码需要根据个人的map文件位置进行修改,“$L@L.map”这个命令的意思是:
- $L:生成的Outputs文件夹下
- @L:与工程名一致
即:./ Outputs/ project_name.map文件。
但比如我的工程是在./ Listings/ project_name.map目录下,因此该命令是不生效的。
需要修改为:
D:\Keil_v5\ARM\BIN\MemBar.exe “$P\Listings@L.map”
原理:$P表示工程目录,即工程目录下的\Listings文件夹中与工程名一致的map文件。
这是由于我没有找到表示Lisitings文件夹的宏,因此只能退而求其次手动定义路径。
完成配置后执行编译,就能输出一个简单的内存占用条,但是不能像CCS一样进一步分析内部具体变量的占用情况,这点还是有待进一步开发。
如果有小伙伴有更好的方式观察内存,欢迎在评论区留言,互相学习
更多推荐



所有评论(0)