Avr GCC automatically marks all indirect calls for trampoline generation irregardless of the target. This can be avoided by forcing -mshort-calls or using -mrelax that removes the trampoline at link time (after the call location has been proven to be reachable). This saves 510 bytes on the current build (the trampolines section is now empty as expected). |
||
|---|---|---|
| .vscode | ||
| cmake | ||
| lib | ||
| src | ||
| tests | ||
| utils | ||
| .clang-format | ||
| .cmake-format.py | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| CMakeLists.txt | ||
| Doxyfile | ||
| README.md | ||
| version.cmake | ||
README.md
Prusa-Firmware-MMU-Private
How to prepare build env and tools
Run ./utils/bootstrap.py
bootstrap.py will now download all the "missing" dependencies into the .dependencies folder:
- clang-format-9.0.0-noext
- cmake-3.22.5
- ninja-1.10.2
- avr-gcc-7.3.0
How to build the preliminary project so far:
Now the process is the same as in the Buddy Firmware:
./utils/build.py
builds the firmware.hex in build/mmu_release
In case you'd like to build the project directly via cmake you can use an approach like this:
mkdir build
cd build
cmake .. -G Ninja -DCMAKE_TOOLCHAIN_FILE=../cmake/AvrGcc.cmake
ninja
It will produce a MMU2SR_<version>.hex file.