1.8 KiB
1.8 KiB
title, date, draft, description, tags
| title | date | draft | description | tags | ||
|---|---|---|---|---|---|---|
| compiling | 2025-02-20 | false | How to compile the project |
|
Preconditions:
- Rust:
rustupinstalled. - ESP32 Toolchain:
espupinstalled. - Build Utilities:
ldproxyandespflashinstalled. - Node.js:
npminstalled (for the web interface).
Cloning the Repository
Clone the repository including submodules:
git clone --recursive https://git.mannheim.ccc.de/C3MA/PlantCtrl.git
cd PlantCtrl/Software/MainBoard/rust
Toolchain Setup
- Install Rust: If not already done, visit rustup.rs.
- Install ldproxy:
cargo install ldproxy - Install espup:
cargo install espup - Install ESP toolchain:
espup install - Install espflash:
cargo install espflash
Building the Web Interface
The configuration website is built using TypeScript and Webpack, then embedded into the Rust binary.
cd src_webpack/
npm install
npx webpack
cd ..
Compiling the Firmware
Build the project using Cargo:
cargo build --release
The resulting binary will be located in target/riscv32imac-unknown-none-elf/release/plant-ctrl2.
Using Build Scripts
To simplify the process, several bash scripts are provided in the Software/MainBoard/rust directory:
image_build.sh: Automatically builds the web interface, compiles the Rust firmware in release mode, and creates a flashableimage.bin.all.sh: Performs all steps fromimage_build.shand additionally flashes the firmware to a connected device and starts the serial monitor.wokwi_build.sh: Builds a debug version of the firmware and creates a full 16MB flash image for use with the Wokwi simulator.