|
@@ -1,135 +0,0 @@
|
|
|
-# `cortex-m-quickstart`
|
|
|
-
|
|
|
-> A template for building applications for ARM Cortex-M microcontrollers
|
|
|
-
|
|
|
-This project is developed and maintained by the [Cortex-M team][team].
|
|
|
-
|
|
|
-## Dependencies
|
|
|
-
|
|
|
-To build embedded programs using this template you'll need:
|
|
|
-
|
|
|
-- Rust 1.31, 1.30-beta, nightly-2018-09-13 or a newer toolchain. e.g. `rustup
|
|
|
- default beta`
|
|
|
-
|
|
|
-- The `cargo generate` subcommand. [Installation
|
|
|
- instructions](https://github.com/ashleygwilliams/cargo-generate#installation).
|
|
|
-
|
|
|
-- `rust-std` components (pre-compiled `core` crate) for the ARM Cortex-M
|
|
|
- targets. Run:
|
|
|
-
|
|
|
-``` console
|
|
|
-$ rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi thumbv7em-none-eabihf
|
|
|
-```
|
|
|
-
|
|
|
-## Using this template
|
|
|
-
|
|
|
-**NOTE**: This is the very short version that only covers building programs. For
|
|
|
-the long version, which additionally covers flashing, running and debugging
|
|
|
-programs, check [the embedded Rust book][book].
|
|
|
-
|
|
|
-[book]: https://rust-embedded.github.io/book
|
|
|
-
|
|
|
-0. Before we begin you need to identify some characteristics of the target
|
|
|
- device as these will be used to configure the project:
|
|
|
-
|
|
|
-- The ARM core. e.g. Cortex-M3.
|
|
|
-
|
|
|
-- Does the ARM core include an FPU? Cortex-M4**F** and Cortex-M7**F** cores do.
|
|
|
-
|
|
|
-- How much Flash memory and RAM does the target device has? e.g. 256 KiB of
|
|
|
- Flash and 32 KiB of RAM.
|
|
|
-
|
|
|
-- Where are Flash memory and RAM mapped in the address space? e.g. RAM is
|
|
|
- commonly located at address `0x2000_0000`.
|
|
|
-
|
|
|
-You can find this information in the data sheet or the reference manual of your
|
|
|
-device.
|
|
|
-
|
|
|
-In this example we'll be using the STM32F3DISCOVERY. This board contains an
|
|
|
-STM32F303VCT6 microcontroller. This microcontroller has:
|
|
|
-
|
|
|
-- A Cortex-M4F core that includes a single precision FPU
|
|
|
-
|
|
|
-- 256 KiB of Flash located at address 0x0800_0000.
|
|
|
-
|
|
|
-- 40 KiB of RAM located at address 0x2000_0000. (There's another RAM region but
|
|
|
- for simplicity we'll ignore it).
|
|
|
-
|
|
|
-1. Instantiate the template.
|
|
|
-
|
|
|
-``` console
|
|
|
-$ cargo generate --git https://github.com/rust-embedded/cortex-m-quickstart
|
|
|
- Project Name: app
|
|
|
- Creating project called `app`...
|
|
|
- Done! New project created /tmp/app
|
|
|
-
|
|
|
-$ cd app
|
|
|
-```
|
|
|
-
|
|
|
-2. Set a default compilation target. There are four options as mentioned at the
|
|
|
- bottom of `.cargo/config`. For the STM32F303VCT6, which has a Cortex-M4F
|
|
|
- core, we'll pick the `thumbv7em-none-eabihf` target.
|
|
|
-
|
|
|
-``` console
|
|
|
-$ tail -n6 .cargo/config
|
|
|
-```
|
|
|
-
|
|
|
-``` toml
|
|
|
-[build]
|
|
|
-# Pick ONE of these compilation targets
|
|
|
-# target = "thumbv6m-none-eabi" # Cortex-M0 and Cortex-M0+
|
|
|
-# target = "thumbv7m-none-eabi" # Cortex-M3
|
|
|
-# target = "thumbv7em-none-eabi" # Cortex-M4 and Cortex-M7 (no FPU)
|
|
|
-target = "thumbv7em-none-eabihf" # Cortex-M4F and Cortex-M7F (with FPU)
|
|
|
-```
|
|
|
-
|
|
|
-3. Enter the memory region information into the `memory.x` file.
|
|
|
-
|
|
|
-``` console
|
|
|
-$ cat memory.x
|
|
|
-/* Linker script for the STM32F303VCT6 */
|
|
|
-MEMORY
|
|
|
-{
|
|
|
- /* NOTE 1 K = 1 KiBi = 1024 bytes */
|
|
|
- FLASH : ORIGIN = 0x08000000, LENGTH = 256K
|
|
|
- RAM : ORIGIN = 0x20000000, LENGTH = 40K
|
|
|
-}
|
|
|
-```
|
|
|
-
|
|
|
-4. Build the template application or one of the examples.
|
|
|
-
|
|
|
-``` console
|
|
|
-$ cargo build
|
|
|
-```
|
|
|
-
|
|
|
-## VS Code
|
|
|
-
|
|
|
-This template includes launch configurations for debugging CortexM programs with Visual Studio Code located in the `.vscode/` directory.
|
|
|
-See [.vscode/README.md](./.vscode/README.md) for more information.
|
|
|
-If you're not using VS Code, you can safely delete the directory from the generated project.
|
|
|
-
|
|
|
-# License
|
|
|
-
|
|
|
-This template is licensed under either of
|
|
|
-
|
|
|
-- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or
|
|
|
- http://www.apache.org/licenses/LICENSE-2.0)
|
|
|
-
|
|
|
-- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|
|
|
-
|
|
|
-at your option.
|
|
|
-
|
|
|
-## Contribution
|
|
|
-
|
|
|
-Unless you explicitly state otherwise, any contribution intentionally submitted
|
|
|
-for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
|
|
|
-dual licensed as above, without any additional terms or conditions.
|
|
|
-
|
|
|
-## Code of Conduct
|
|
|
-
|
|
|
-Contribution to this crate is organized under the terms of the [Rust Code of
|
|
|
-Conduct][CoC], the maintainer of this crate, the [Cortex-M team][team], promises
|
|
|
-to intervene to uphold that code of conduct.
|
|
|
-
|
|
|
-[CoC]: https://www.rust-lang.org/policies/code-of-conduct
|
|
|
-[team]: https://github.com/rust-embedded/wg#the-cortex-m-team
|