mirror of
https://github.com/ferrous-systems/embedded-trainings-2020.git
synced 2025-01-23 22:38:09 +00:00
add tooltips; move cargo-bloat there
This commit is contained in:
parent
07a3386119
commit
edc43995c9
4 changed files with 33 additions and 21 deletions
|
@ -58,6 +58,7 @@
|
||||||
- [Getting it Configured](./getting-device-configured.md)
|
- [Getting it Configured](./getting-device-configured.md)
|
||||||
- [Next Steps](./advanced-next-steps.md)
|
- [Next Steps](./advanced-next-steps.md)
|
||||||
- [References and Resources](./references-resources.md)
|
- [References and Resources](./references-resources.md)
|
||||||
|
- [Tooltips](./tooltips.md)
|
||||||
- [Troubleshooting](./troubleshooting.md)
|
- [Troubleshooting](./troubleshooting.md)
|
||||||
- [`cargo-size` is not working](./troubleshoot-cargo-size.md)
|
- [`cargo-size` is not working](./troubleshoot-cargo-size.md)
|
||||||
- [`cargo-flash` is not working](./troubleshoot-cargo-flash.md)
|
- [`cargo-flash` is not working](./troubleshoot-cargo-flash.md)
|
||||||
|
|
|
@ -32,19 +32,3 @@ The first three sections are contiguously located in Flash memory -- Flash memor
|
||||||
* The `.rodata` section contains constants like strings literals.
|
* The `.rodata` section contains constants like strings literals.
|
||||||
|
|
||||||
The next three sections, `.data`, `.bss` and `.uninit`, are located in RAM -- RAM memory spans the address range `0x2000_0000` - `0x2004_0000` (256 KB). These sections contain statically allocated variables (`static` variables).
|
The next three sections, `.data`, `.bss` and `.uninit`, are located in RAM -- RAM memory spans the address range `0x2000_0000` - `0x2004_0000` (256 KB). These sections contain statically allocated variables (`static` variables).
|
||||||
|
|
||||||
Another other useful tool to analyze the binary size of a program is `cargo-bloat`:
|
|
||||||
|
|
||||||
``` console
|
|
||||||
$ cargo bloat --bin hello
|
|
||||||
File .text Size Crate Name
|
|
||||||
0.7% 13.5% 1.3KiB std <char as core::fmt::Debug>::fmt
|
|
||||||
0.5% 9.6% 928B hello hello::__cortex_m_rt_main
|
|
||||||
0.4% 8.4% 804B std core::str::slice_error_fail
|
|
||||||
0.4% 8.0% 768B std core::fmt::Formatter::pad
|
|
||||||
0.3% 6.4% 614B std core::fmt::num::<impl core::fmt::Debug for usize>::fmt
|
|
||||||
(..)
|
|
||||||
5.1% 100.0% 9.4KiB .text section size, the file size is 184.5KiB
|
|
||||||
```
|
|
||||||
|
|
||||||
This breakdowns the size of the `.text` section by function. This breakdown can be used to identify the largest functions in the program; those could then be modified to make them smaller.
|
|
||||||
|
|
|
@ -133,7 +133,7 @@ $ cargo install cargo-binutils
|
||||||
|
|
||||||
### Cargo subcommands
|
### Cargo subcommands
|
||||||
|
|
||||||
Install version v0.10.2 of the [`cargo-flash`](https://crates.io/crates/cargo-flash) and [`cargo-embed`](https://crates.io/crates/cargo-embed) subcommands, as well as the [`cargo-binutils`](https://crates.io/crates/cargo-binutils) set of subcommands and the [`cargo-bloat`](https://crates.io/crates/cargo-bloat) subcommand using the following Cargo commands:
|
Install version v0.10.2 of the [`cargo-flash`](https://crates.io/crates/cargo-flash) and [`cargo-embed`](https://crates.io/crates/cargo-embed) subcommands, as well as the [`cargo-binutils`](https://crates.io/crates/cargo-binutils) set of subcommands using the following Cargo commands:
|
||||||
|
|
||||||
``` console
|
``` console
|
||||||
$ cargo install cargo-flash --version 0.10.2 -f
|
$ cargo install cargo-flash --version 0.10.2 -f
|
||||||
|
@ -148,10 +148,6 @@ $ cargo install cargo-binutils
|
||||||
(..)
|
(..)
|
||||||
Installed package `cargo-binutils v0.3.3` (..)
|
Installed package `cargo-binutils v0.3.3` (..)
|
||||||
|
|
||||||
$ cargo install cargo-bloat
|
|
||||||
(..)
|
|
||||||
Installed package `cargo-bloat v0.9.3` (..)
|
|
||||||
|
|
||||||
$ cargo install probe-run
|
$ cargo install probe-run
|
||||||
(..)
|
(..)
|
||||||
Installed package `probe-run v0.1.8` (..)
|
Installed package `probe-run v0.1.8` (..)
|
||||||
|
|
31
embedded-workshop-book/src/tooltips.md
Normal file
31
embedded-workshop-book/src/tooltips.md
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# Tooltips
|
||||||
|
|
||||||
|
Besides the ones covered in this workshop, there are many more tools that make embedded development easier.
|
||||||
|
Here, we'd like to introduce you to some of these tools and encourage you to play around with them and adopt them if you find them helpful!
|
||||||
|
|
||||||
|
## `cargo-bloat`
|
||||||
|
|
||||||
|
`cargo-bloat` is a useful tool to analyze the binary size of a program. You can install it through cargo:
|
||||||
|
|
||||||
|
``` console
|
||||||
|
$ cargo install cargo-bloat
|
||||||
|
(..)
|
||||||
|
Installed package `cargo-bloat v0.10.0` (..)
|
||||||
|
```
|
||||||
|
|
||||||
|
Let's inspect our beginner course's `hello` program with it:
|
||||||
|
|
||||||
|
``` console
|
||||||
|
$ cd beginner/apps
|
||||||
|
$ cargo bloat --bin hello
|
||||||
|
File .text Size Crate Name
|
||||||
|
0.7% 13.5% 1.3KiB std <char as core::fmt::Debug>::fmt
|
||||||
|
0.5% 9.6% 928B hello hello::__cortex_m_rt_main
|
||||||
|
0.4% 8.4% 804B std core::str::slice_error_fail
|
||||||
|
0.4% 8.0% 768B std core::fmt::Formatter::pad
|
||||||
|
0.3% 6.4% 614B std core::fmt::num::<impl core::fmt::Debug for usize>::fmt
|
||||||
|
(..)
|
||||||
|
5.1% 100.0% 9.4KiB .text section size, the file size is 184.5KiB
|
||||||
|
```
|
||||||
|
|
||||||
|
This breakdowns the size of the `.text` section by function. This breakdown can be used to identify the largest functions in the program; those could then be modified to make them smaller.
|
Loading…
Reference in a new issue