Skip to main content
https://img.shields.io/pypi/v/fpvgcc.svg?logo=pypi https://img.shields.io/pypi/pyversions/fpvgcc.svg?logo=pypi https://img.shields.io/travis/ebs-universe/fpv-gcc.svg?logo=travis https://img.shields.io/coveralls/github/ebs-universe/fpv-gcc.svg?logo=coveralls https://img.shields.io/requires/github/ebs-universe/fpv-gcc.svg https://img.shields.io/pypi/l/fpvgcc.svg

Deprecation Notice

This (v1.1.3) will be the final release of the 1.x series of fpvgcc. The tool has evolved to the extent possible within the naive framework it was originally built on, and a number of open issues cannot be resolved without refactoring big chunks of the code. fpvgcc v1.1.2 is essentially functional and will remain available in its present form.

Though I have been unable to find time to maintain and build up the tool after the original releases, I hope it has been useful to the few people who’ve used it.

A number of other tools are now available which do a similar job. While I have minor qualms about each of those tools, such qualms are mostly subjective and aesthetic objections. I am forced to admit that fpvgcc would never have been written if some of those tools had existed at the time of its writing.

I am considering starting work on a 2.x series of fpvgcc, which will likely be a page one rewrite. The following are the main planned changes:

  • Reduce the number of assumptions made when parsing map files. For example, allow multiple object files with the same name.

  • Use polars or something suitably performant to store the parsed map information.

  • Add a minimal fastapi interface to be able to provide a GUI using a webview or similar.

  • Remove python 2 support. Minimum python version required will probably be py37 or py38.

I expect it will be some time before 2.x will be usable. If and when development starts, it will be available in the v2 branch of this repository. When v2.x reaches feature parity with v1.1.2, it will be merged in to main and python packages for fpvgcc 2.x will be published to pypi.

Please feel free to write to me at shashank at chintal dot in if any of the following apply to you:

  • you have been using fpvgcc or are maintaining a public or private fork and have any concerns regarding the deprecation or plans for 2.x

  • you wish to take over the 1.x codebase and keep it functional and available in the future

  • you have any suggestions for features to include in 2.x

  • you wish to contribute to the development of 2.x

Introduction

fpvgcc is a python script/package to help analyse code footprint on embedded microcontrollers using GCC generated Map files.

This module uses information contained within .map files generated by gcc (when invoked with -Wl,-Map,out.map), to provide easily readable summaries of static memory usage at various levels of the code hierarchy. This package generates no information that isn’t already contained within the .map file.

The provided outputs can be used to gain insight into the relative sizes of included code, and aid in prioritizing static memory optimization for very low memory platforms. Some provided functionality may also deliver minor usability improvements to the workflow involved in parsing though generated assembly listings.

Known Issues

This script was first written based on the format of mapfiles generated by msp430-elf-gcc, v4.9.1. Over time, it was modifed to accept elements found in mapfiles generated by later versions and gcc-based toolchains for other platforms.

Still, remember that the file parsing was implemented by observing the content of real mapfiles, and not based on a file format specification. Even with toolchains it was written to support, there are large sections of the file that are not actually used. Due to this, the outputs generated are not always accurate. Various boundary conditions result in minor errors in size reporting.

The following more serious issues are known. They should be fixed at some point, but for the moment I’ve chosen to work around them :

  • 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.

Project Information

The latest version of the documentation, including installation, usage, and API/developer notes can be found at ReadTheDocs.

The latest version of the sources can be found at GitHub. Please use GitHub’s features to report bugs, request features, or submit pull/merge requests.

The principle author for fpvgcc is Chintalagiri Shashank. The author can be contacted if necessary via the information on the author’s github profile . See the AUTHORS file for a full list of collaborators and/or contributing authors, if any.

fpvgcc is distributed under the terms of the GPLv3 license . A copy of the text of the license is included along with the sources.

Metadata

Release files for fpvgcc 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fpvgcc 1.1.2
File Size Uploaded Provenance Actions
fpvgcc-1.1.2.tar.gz 211.5 kB Without provenance Details for fpvgcc-1.1.2.tar.gz

Release files / fpvgcc-1.1.2.tar.gz

Download URL fpvgcc-1.1.2.tar.gz
Size 211.5 kB
Tags Source
SHA-256 checksum
How to use checksums
942c1a5f0d21fa8202a5fadb053f0464de1daf5d2edd2b107b2c399e267d3c5a
BLAKE2b-256 checksum
How to use checksums
e503bbe89be88b39606895d567109ba98e0be4bffea36007b3028e131af5b614
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Security for fpvgcc 1.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page