docs: update readme
This commit is contained in:
parent
92cdf6af78
commit
f162fe8734
2 changed files with 29 additions and 9 deletions
29
README.md
29
README.md
|
@ -13,24 +13,43 @@ the prgrams are running.
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
See [./scripts/build.sh].
|
See [build.sh](./scripts/build.sh).
|
||||||
|
|
||||||
## Building
|
## Flashing
|
||||||
|
|
||||||
See [./scripts/build.sh].
|
See [flash.sh](./scripts/flash.sh).
|
||||||
|
|
||||||
|
## Host-Benchmarks
|
||||||
|
|
||||||
|
The algorithms have benchmarks that can run on regular consumer laptops, so that
|
||||||
|
you can see the implementation difference on a bigger architecture like
|
||||||
|
`x86_64`.
|
||||||
|
|
||||||
|
See [bench_algorithms.sh](./scripts/bench_algorithms.sh).
|
||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
|
This program requires Rust to be installed. I made it with `Rust 1.88.0`, but
|
||||||
|
the theoretical MSRV is `Rust 1.85.1` (according to `cargo-msrv`).
|
||||||
|
|
||||||
In addition to some crates from crates.io, this project requires the following
|
In addition to some crates from crates.io, this project requires the following
|
||||||
to be installed to compile and link to the algorithms-c implementations.
|
to be installed to compile and link to the algorithms-c implementations.
|
||||||
|
|
||||||
```
|
```
|
||||||
# on debian bookworm
|
# on debian bookworm
|
||||||
apt install binutils-arm-none-eabi gcc-arm-none-eabi # compiler for the target architecture
|
# compiler for your architecture if you want to run the unit tests
|
||||||
apt install ruby # ceedling is the used build system for algorithms-c, and needs to be installed with gem, the ruby package manager
|
apt install gcc
|
||||||
|
# compiler for the target architecture
|
||||||
|
apt install binutils-arm-none-eabi gcc-arm-none-eabi
|
||||||
|
# ceedling is the used build system for algorithms-c, and needs to be installed with gem, the ruby package manager
|
||||||
|
apt install ruby
|
||||||
gem install ceedling
|
gem install ceedling
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To actually flash the program onto an STM32, you also need
|
||||||
|
[probe-rs](https://probe.rs/docs/getting-started/installation/). I used
|
||||||
|
`probe-rs 0.29.1`.
|
||||||
|
|
||||||
## Acknowledgements
|
## Acknowledgements
|
||||||
|
|
||||||
For implementing the SHA-2-256 Algorithm, [this](https://sha256algorithm.com/)
|
For implementing the SHA-2-256 Algorithm, [this](https://sha256algorithm.com/)
|
||||||
|
|
|
@ -14,13 +14,14 @@ To compile for STM32, you need to crosscompile
|
||||||
|
|
||||||
Then, use your tool with an `arm-none-eabi-` prefix: `arm-none-eabi-gcc`. This
|
Then, use your tool with an `arm-none-eabi-` prefix: `arm-none-eabi-gcc`. This
|
||||||
project has been configured to use the compiler specified in `$CC` to compile modules and `$AR` to
|
project has been configured to use the compiler specified in `$CC` to compile modules and `$AR` to
|
||||||
"link" the object files (this should be `ar` for a static library like this).
|
"link" the object files (this should be `ar` for a static library like this)
|
||||||
|
. You can and should also give extra compiler flags in `$CC_FLAGS`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# compile for STM32
|
# cross-compile for STM32
|
||||||
CC=arm-none-eabi-gcc AR=arm-none-eabi-ar ceedling release
|
CC=arm-none-eabi-gcc AR=arm-none-eabi-ar CC_FLAGS="-march=armv6-m" ceedling release
|
||||||
# compile for this computer
|
# compile for this computer
|
||||||
CC=gcc AR=ar ceedling release
|
CC=gcc AR=ar ceedling release
|
||||||
```
|
```
|
||||||
|
|
||||||
It is also critically important to define the `-march=ARCH` option when using `arm-none-eabi-gcc`, since the compiler will otherwise just assume a target architecture. In this case, it needs to be set to `armv6-m`, since the MPU is a `cortex-M0+`. This MPU does only support the thumb instructionset, not the ARM32 set.
|
It is critically important to define the `-march=ARCH` option when using `arm-none-eabi-gcc`, since the compiler will otherwise just assume a target architecture. In this case, it needs to be set to `armv6-m`, since the MPU is a `cortex-M0+`. This MPU does only support the thumb instruction-set, not the ARM32 set.
|
||||||
|
|
Loading…
Add table
Reference in a new issue