In the previous chapter we created a debug probe from a Blue Pill, and attached it to another Blue Pill board. In this chapter we will run our first Drone program on the microcontroller.
If you haven't installed Rust yet, follow the instructions from rustup.rs. Drone is currently available only for Nightly channel of Rust. You need to install it first:
$ rustup toolchain install nightly \ -c rust-src -c rustfmt -c clippy -c llvm-tools-preview \ -t thumbv7m-none-eabi
Not all nightly releases have all components available. The above command will walk backwards in time to find the most recent release with all needed components.
In embedded development often there are various project-specific tasks that are
needed to run from time to time. Therefore we encourage using an excellent Rust
$ cargo +stable install just
Just is a command runner inspired by
make. Whenever you see a project with
Justfile at the root, run
just --list to see all available
drone new command will generate a
Justfile for you. It
is advisable to put
alias j="just" to your shell config, so you could just
j instead of
The Drone OS project consists of many Rust crates. However there is a single
entry point for it - the
drone command-line utility:
$ cargo +nightly install drone
For now you should have all prerequisites and could follow to the next step - generating your first Drone crate.
drone to generate a new Drone crate for us. We have to specify the
target MCU family, which is
stm32f103 for Blue Pill, the flash memory size,
the RAM size, and the project name.
$ drone new --device stm32f103 --flash-size 128K --ram-size 20K hello-world $ cd hello-world
The first thing to do inside the project is to install dependencies:
$ just deps
You should also run this task after each Rust update.
Now we assume you have the Blue Pills connected as follows (as described in the previous chapter):
Let's flash our newly created project to the target Blue Pill. If it has to be built first, it could take a while:
$ just flash
A successful result looks like this:
And finally, check the ITM output from the device.
$ just itm
If you see an output like above, congratulations! You have successfully set up an environment for developing Drone projects.