nucleo-l053r8-benches/crates/algorithms/algorithms-c/README.md

26 lines
1.1 KiB
Markdown
Executable file

# Algorithms-c
This subproject contains all C Code for the benchmarking. It is built with
[ceedling](https://www.throwtheswitch.org/ceedling), a more modern build tool
for C projects that also integrates well with the Unity framework.
## Compiler
To compile for STM32, you need to crosscompile
```
# apt install binutils-arm-none-eabi gcc-arm-none-eabi
```
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
"link" the object files (this should be `ar` for a static library like this).
```bash
# compile for STM32
CC=arm-none-eabi-gcc AR=arm-none-eabi-ar ceedling release
# compile for this computer
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.