用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文件分块,获取长度字节   java嵌入式Tomcat不执行jsf页面   java我的数据库中有2个实体,但hibernate返回其中6个。   java如何基于逗号拆分字符串   java取消已经运行的CompletableFutures的预期模式是什么   java如何在informix中从另一个数据库复制表ddl和数据   为什么图片是黑色的?   java根据字符串数组中的单词筛选列表   Java8的集合。平行流有效吗?   Kotlin中的java静态内部类   java如何在GUI中生成一列字符串   javafx如何正确使用高对比度主题?   带空格的javascript Httpurlconnection参数   java如何设置GridBagLayout的约束   java如何在一个线程可能尚未初始化时关闭另一个线程   java将简单时间格式转换为特殊时间格式(hhmmt)   安卓/java阵列重复过滤器的问题   java在队列的链接实现下,入队和出队是如何工作的   java更新sql外键约束