pot-head 0.2.1

A no_std Rust library for processing raw potmeter inputs in embedded systems
Documentation
# pot-head Binary Analysis Report

> **Note:** These are reference results from a specific toolchain version. Binary sizes
> are deterministic and depend only on the compiler version and optimization settings,
> not on hardware. Results should be identical across machines with the same toolchain.

**Generated:** 2026-03-13 07:14:03 UTC

**Targets:**
- Cortex-M0+ (`thumbv6m-none-eabi`) - No FPU, soft-float
- Cortex-M4F (`thumbv7em-none-eabihf`) - Hardware FPU, hard-float

**Optimization:** `opt-level = "z"` (size), LTO enabled

## Flash Footprint Summary

| Target | Features | .text | .rodata | .data | Total Flash | Notes |
|--------|----------|-------|---------|-------|-------------|-------|
| M0+ | minimal | 1.7KB | - | 0B | 1.7KB | No libm, no grab-mode |
| M0+ | default | 2.9KB | - | 0B | 2.9KB | Logarithmic curves (libm) + grab-mode |
| M0+ | full | 2.9KB | - | 0B | 2.9KB | All features enabled |
| M4F | minimal | 198B | - | 0B | 198B | No libm, no grab-mode |
| M4F | default | 616B | - | 0B | 616B | Logarithmic curves (libm) + grab-mode |
| M4F | full | 624B | - | 0B | 624B | All features enabled |

## Feature Cost Breakdown

Analysis of binary size impact per feature:

### libm (std-math feature) - Logarithmic Curves

- **M0+ soft-float**: +1216B (1.2KB)
- **M4F hard-float**: +418B (0.4KB)
- **FPU savings**: 2340B (2.3KB or 79% reduction)

The logarithmic curve feature requires libm for transcendental functions.
On M0+ (no FPU), this adds significant soft-float emulation code.
On M4F (hardware FPU), libm is much more efficient.

### heapless (moving-average feature)

- **M0+**: +0B
- **M4F**: +8B

Moving average filter uses `heapless::Vec` for sample storage.
Impact is similar across targets (not FPU-dependent).

### grab-mode feature

- **Both targets**: Negligible impact (~0B)

Grab mode (Pickup/PassThrough) has no external dependencies and minimal code.


## Top Symbols by Size

Shows the largest symbols consuming Flash space (default features).

### Cortex-M0+ (default features)

```
File  .text   Size     Crate Name
0.9%  25.8%   752B [Unknown] _start
0.6%  18.1%   528B       std compiler_builtins::float::div::__divsf3
0.6%  17.3%   504B       std compiler_builtins::float::add::__addsf3
0.5%  14.3%   416B       std compiler_builtins::float::mul::__mulsf3
0.1%   3.7%   108B       std __clzsi2
0.1%   3.6%   104B       std __aeabi_fcmpge
0.1%   2.7%    80B       std __aeabi_fcmple
0.1%   2.6%    76B       std __aeabi_f2iz
0.1%   2.5%    74B       std __aeabi_lmul
0.1%   2.3%    68B       std __aeabi_i2f
0.2%   6.8%   198B           And 7 smaller methods. Use -n N to show more.
3.3% 100.0% 2.8KiB           .text section size, the file size is 86.3KiB
```

### Cortex-M4F (default features)

```
 File  .text Size     Crate Name
30.9% 100.0% 576B [Unknown] _start
30.9% 100.0% 576B           .text section size, the file size is 1.8KiB

Warning: it seems like the `.text` section is nearly empty. Try removing `strip = true` from Cargo.toml
```


---

*Generated by `tools/binary-analyzer/generate_report.sh`*