用gcc生成的map文件分析嵌入式微控制器的代码占用

fpvgcc的Python项目详细描述


https://img.shields.io/pypi/v/fpvgcc.svg?logo=pypihttps://img.shields.io/pypi/pyversions/fpvgcc.svg?logo=pypihttps://img.shields.io/travis/ebs-universe/fpv-gcc.svg?logo=travishttps://img.shields.io/coveralls/github/ebs-universe/fpv-gcc.svg?logo=coverallshttps://img.shields.io/requires/github/ebs-universe/fpv-gcc.svghttps://img.shields.io/pypi/l/fpvgcc.svg

简介

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。 许可证文本的副本与源文件一起提供。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java检查整数是0还是检查变量是null更好?   java Android Kotlin(初学者)使用File(),并从ACTION\u GET\u内容返回Uri   java JavaFx在“内部场景”和根场景之间切换   spring将XMLBean配置转换为java配置   java JPA HIBERNATE映射列两次(embeddedID和POJO)   c#单态模式模型在什么情况下适用?   java请求。getRemoteUser在特定时间后返回null?   spring boot中PUT api控制器的java my单元测试用例失败   java在字符串中互换地解析和替换值   java Android JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起异常   JavaSpringDataMongo:使用非简单键持久化映射   爪哇玻璃鱼连接被拒绝   java如何在用户注册时发送特定电子邮件id的自动回复?   Java列表:实例化时和之后的赋值之间的差异