diff --git a/.cargo/config b/.cargo/config index b9bbec9..04b71ea 100644 --- a/.cargo/config +++ b/.cargo/config @@ -3,9 +3,11 @@ # runner = "qemu-system-arm -cpu cortex-m3 -machine lm3s6965evb -nographic -semihosting-config enable=on,target=native -kernel" [target.'cfg(all(target_arch = "arm", target_os = "none"))'] -# uncomment this to make `cargo run` start a GDB session -# NOTE: you may need to change `arm-none-eabi-gdb` +# uncomment ONE of these three option to make `cargo run` start a GDB session +# which option to pick depends on your system # runner = "arm-none-eabi-gdb -x openocd.gdb" +# runner = "gdb-multiarch -x openocd.gdb" +# runner = "gdb -x openocd.gdb" rustflags = [ # LLD (shipped with the Rust toolchain) is used as the default linker diff --git a/Cargo.toml b/Cargo.toml index ebc43d1..4aebd78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,9 +1,6 @@ -# TODO remove -cargo-features = ["edition"] - [package] -edition = "2018" authors = ["{{authors}}"] +edition = "2018" name = "{{project-name}}" version = "0.1.0" @@ -14,7 +11,7 @@ cortex-m-semihosting = "0.3.1" panic-halt = "0.1.3" # Uncomment for the panic example. -# panic-itm = "0.3.0" +# panic-itm = "0.4.0" # Uncomment for the allocator example. # alloc-cortex-m = "0.3.5" diff --git a/README.md b/README.md index 14c6437..bd49bc3 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,11 @@ This project is developed and maintained by the [Cortex-M team][team]. To build embedded programs using this template you'll need: -- Rust 1.30-beta or nightly. `rustup default beta` +- Rust 1.30, 1.30-beta, nightly-2018-09-13 or a newer toolchain. e.g. `rustup + default beta` -- The `cargo generate` subcommand: `cargo install cargo-generate` +- 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: @@ -22,9 +24,10 @@ $ rustup target add thumbv6m-none-eabi thumbv7m-none-eabi thumbv7em-none-eabi th ## Using this template **NOTE**: This is the very short version that only covers building programs. For -the long version check [the embedded Rust book][book]. +the long version, which additionally covers flashing, running and debugging +programs, check [the embedded Rust book][book]. -[book]: https://rust-embedded.github.io/book/blinky/blinky.html +[book]: http://book.rust-embedded.org 0. Before we begin you need to identify some characteristics of the target device as these will be used to configure the project: @@ -33,7 +36,8 @@ the long version check [the embedded Rust book][book]. - 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. 40 KB of RAM +- 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`. @@ -46,9 +50,9 @@ STM32F303VCT6 microcontroller. This microcontroller has: - A Cortex-M4F core that includes a single precision FPU -- 256 KB of Flash located at address 0x0800_0000. +- 256 KiB of Flash located at address 0x0800_0000. -- 40 KB of RAM located at address 0x2000_0000. (There's another RAM region but +- 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. @@ -66,7 +70,6 @@ $ cd app 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 ```