我写了一个 Keil .map 文件内存分析工具(支持 FLASH/RAM 可视化)

0 阅读2分钟

🚀 KeilMemTool

ARM Keil .map 内存分析工具

解析 .map 文件并可视化 Flash / RAM 使用率 适用于 STM32、GD32、NXP、Nordic 等 Cortex-M MCU

项目地址(Gitee)


✨ 功能特性

  • 🔍 自动解析 Keil .map 文件
  • 📊 Flash / RAM 使用率统计
  • 🧠 支持多 RAM Region
  • 🎨 Unicode 进度条显示
  • ⚡ 命令行快速输出
  • 🧩 支持 ARMCC / ARMCLANG
  • 🛠 支持自定义内存区域

🖥 运行效果

┌────────────────────────────────────────────────────────────┐
│                    Keil Memory Report                     │
└────────────────────────────────────────────────────────────┘

FLASH
[ ▉▉▉▉______________________________________________ ]  8.5%
86 KB / 1024 KB

RAM
[ ▉▉▉▉______________________________________________ ]  8.4%
5 KB / 64 KB

RAM1
[ ▉▉▉▉▉▉▉▉▉▉▉▉▉______________________________ ] 56.2%
72 KB / 128 KB

📦 支持的内存区域

类型说明
FLASH程序存储区
RAM主 SRAM
RAM1扩展 SRAM
IRAM1内部 SRAM
IRAM2第二 SRAM
DTCMData TCM
ITCMInstruction TCM
CCMRAMCore Coupled RAM
AXI SRAMSTM32H7 AXI 内存
SDRAM外扩 SDRAM

📁 工程结构

KeilMemTool
│
├── include/
│   ├── MapParser.hpp
│   └── MemoryRegion.hpp
│
├── src/
│   ├── MapParser.cpp
│   ├── MemoryRegion.cpp
│   └── main.cpp
│
└── README.md

⚙️ 编译环境

环境版本
OSWindows 10 / 11
编译器MSVC / GCC
标准C++17
IDEVisual Studio / VSCode

🚀 快速开始

1️⃣ 开启 Map 文件输出

在 Keil 中:

Options for Target
    └── Linker
          └── ☑ Map File

编译后生成:

project.map

2️⃣ 编译工具

GCC

g++ src/*.cpp -Iinclude -std=c++17 -o KeilMemTool.exe

MSVC

cl /EHsc src/*.cpp /I include

3️⃣ 运行

KeilMemTool.exe project.map

📊 输出说明


🔥 FLASH

程序代码、常量、RO 数据。

FLASH  8.5%  (86 KB / 1024 KB)

🧠 RAM

全局变量、堆、栈。

RAM  8.4%  (5 KB / 64 KB)

⚡ RAM1

额外 SRAM 区域。

RAM1  56.2%  (72 KB / 128 KB)

常用于:

  • STM32H7 AXI SRAM
  • STM32F4 CCMRAM
  • DTCM
  • 外扩 SDRAM

🧩 支持 MCU

STM32 ・ GD32 ・ HC32 ・ NXP ・ Nordic ・ TI ・ Renesas ・ 芯驰


📈 后续计划

  • GUI 图形界面
  • 历史内存变化趋势
  • HTML 报告导出
  • VSCode 插件
  • Keil 插件
  • CI 自动统计
  • JSON 导出
  • 内存占用 Top 排名

❤️ 致谢

感谢使用 KeilMemTool。

如果这个项目对你有帮助,欢迎 ⭐ Star。


📄 License

MIT License


Made with ❤️ for Embedded Developers