用gcc生成的map文件分析嵌入式微控制器的代码占用
fpvgcc的Python项目详细描述
简介
fpvgcc是一个python脚本/包,用于帮助分析 嵌入式微控制器使用gcc生成的映射文件。
此模块使用由生成的.map文件中包含的信息 gcc(当使用-Wl,-Map,out.map调用时),可以方便地提供 代码的各个级别上静态内存使用的可读摘要 等级制度。此包不生成尚未包含的信息 在.map文件中。
所提供的输出可用于深入了解 包括代码,并帮助确定静态内存优化的优先级 低内存平台。一些提供的功能还可能提供 尽管生成了语法分析,但对工作流的可用性进行了改进 程序集列表。
警告
此包不尝试执行任何类型的动态分析。 报告的所有内存使用量仅指static内存使用量。这个 指实际函数和全局变量的大小 在C代码中实例化。
调用堆栈上的任何内容,例如函数局部变量,not都是 占了上风。类似地,堆中任何在 使用malloc或类似的运行时将不考虑。
因此,此模块的实用性可能仅限于代码 为内存高度受限的嵌入式微控制器编写,其中 尽可能避免动态内存分配。
已知问题
此脚本首先基于映射文件的格式编写 由msp430-elf-gcc, v4.9.1生成。随着时间的推移,它被修改为 接受由更高版本生成的映射文件中的元素,并基于gcc 其他平台的工具链。
不过,请记住,文件解析是通过观察 真实映射文件的内容,而不是基于文件格式规范。 即使它是为支持而编写的工具链,也有很多部分 实际未使用的文件。因此,产生的输出 并不总是准确的。各种边界条件导致微小误差 规模报告。
我们知道以下更严重的问题。它们应该固定在 重点,但目前我已选择围绕它们展开工作:
- Having two C filenames with the same name (or generating the same obj name) in your tree will cause parsing to break on some platforms / toolchains.
项目信息
文档的最新版本,包括安装、使用和 api/developer注释可以在 ReadTheDocs。
源的最新版本可以在 GitHub。请使用github的功能 报告错误、请求功能或提交拉/合并请求。
fpvgcc的主要作者是chintalagiri shashank。作者可以 如有必要,请通过 author’s github profile。查看作者文件 合作者和/或贡献作者的完整列表(如果有的话)。
fpvgcc根据 GPLv3 license。 许可证文本的副本与源文件一起提供。