Merge pull request #26 from japaric/bye-xargo

remove all mentions of Xargo
This commit is contained in:
Jorge Aparicio
2018-04-09 00:09:33 +02:00
committed by GitHub
5 changed files with 37 additions and 72 deletions

View File

@@ -6,7 +6,7 @@ keywords = ["arm", "cortex-m", "template"]
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"
name = "cortex-m-quickstart" name = "cortex-m-quickstart"
repository = "https://github.com/japaric/cortex-m-quickstart" repository = "https://github.com/japaric/cortex-m-quickstart"
version = "0.2.5" version = "0.2.6"
[dependencies] [dependencies]
cortex-m = "0.4.0" cortex-m = "0.4.0"
@@ -16,7 +16,7 @@ cortex-m-semihosting = "0.2.0"
#alloc-cortex-m = "0.3.2" #alloc-cortex-m = "0.3.2"
[dependencies.cortex-m-rt] [dependencies.cortex-m-rt]
version = "0.3.12" version = "0.3.15"
# Comment for the panic example. # Comment for the panic example.
features = ["abort-on-panic"] features = ["abort-on-panic"]
@@ -25,12 +25,6 @@ features = ["abort-on-panic"]
# features = ["rt"] # features = ["rt"]
# version = "0.8.0" # version = "0.8.0"
# disable both incremental compilation and parallel codegen to reduce the chances of running into
# rust-lang/rust#47074
[profile.dev]
codegen-units = 1
incremental = false
[profile.release] [profile.release]
debug = true debug = true
lto = true lto = true

View File

@@ -1,9 +0,0 @@
[dependencies.core]
stage = 0
# [dependencies.alloc] # Uncomment for the alloc example.
# stage = 0
[dependencies.compiler_builtins]
features = ["mem"]
stage = 1

View File

@@ -1,20 +1,5 @@
//! How to use the heap and a dynamic memory allocator //! How to use the heap and a dynamic memory allocator
//! //!
//! To compile this example you'll need to build the alloc crate as part
//! of the Xargo sysroot. To do that change the Xargo.toml file to look like
//! this:
//!
//! ``` text
//! [dependencies.core]
//! stage = 0
//!
//! [dependencies.alloc] # NEW
//! stage = 0
//!
//! [dependencies.compiler_builtins]
//! stage = 1
//! ```
//!
//! This example depends on the alloc-cortex-m crate so you'll have to add it //! This example depends on the alloc-cortex-m crate so you'll have to add it
//! to your Cargo.toml: //! to your Cargo.toml:
//! //!

View File

@@ -1,20 +1,5 @@
//! How to use the heap and a dynamic memory allocator //! How to use the heap and a dynamic memory allocator
//! //!
//! To compile this example you'll need to build the alloc crate as part
//! of the Xargo sysroot. To do that change the Xargo.toml file to look like
//! this:
//!
//! ``` text
//! [dependencies.core]
//! stage = 0
//!
//! [dependencies.alloc] # NEW
//! stage = 0
//!
//! [dependencies.compiler_builtins]
//! stage = 1
//! ```
//!
//! This example depends on the alloc-cortex-m crate so you'll have to add it //! This example depends on the alloc-cortex-m crate so you'll have to add it
//! to your Cargo.toml: //! to your Cargo.toml:
//! //!

View File

@@ -2,23 +2,35 @@
//! //!
//! # Dependencies //! # Dependencies
//! //!
//! - Nightly Rust toolchain: `rustup default nightly` //! - Nightly Rust toolchain newer than `nightly-2018-04-08`: `rustup default nightly`
//! - ARM linker: `sudo apt-get install binutils-arm-none-eabi` (on Ubuntu) //! - ARM linker: `sudo apt-get install binutils-arm-none-eabi` (on Ubuntu)
//! - Cargo `clone` subcommand: `cargo install cargo-clone` //! - Cargo `clone` subcommand: `cargo install cargo-clone`
//! - GDB: `sudo apt-get install gdb-arm-none-eabi` (on Ubuntu) //! - GDB: `sudo apt-get install gdb-arm-none-eabi` (on Ubuntu)
//! - OpenOCD: `sudo apt-get install OpenOCD` (on Ubuntu) //! - OpenOCD: `sudo apt-get install OpenOCD` (on Ubuntu)
//! - Xargo: `cargo install xargo`
//! - [Optional] Cargo `add` subcommand: `cargo install cargo-edit` //! - [Optional] Cargo `add` subcommand: `cargo install cargo-edit`
//! //!
//! # Usage //! # Usage
//! //!
//! 1) Clone this crate //! 0) Figure out the cross compilation *target* to use.
//!
//! - Use `thumbv6m-none-eabi` for ARM Cortex-M0 and Cortex-M0+
//! - Use `thumbv7m-none-eabi` for ARM Cortex-M3
//! - Use `thumbv7em-none-eabi` for ARM Cortex-M4 and Cortex-M7 (*no* FPU support)
//! - Use `thumbv7em-none-eabihf` for ARM Cortex-M4**F** and Cortex-M7**F** (*with* FPU support)
//!
//! 1) Install the `rust-std` component for your target, if you haven't done so already
//!
//! ``` console
//! $ rustup target add thumbv7em-none-eabihf
//! ```
//!
//! 2) Clone this crate
//! //!
//! ``` text //! ``` text
//! $ cargo clone cortex-m-quickstart && cd $_ //! $ cargo clone cortex-m-quickstart && cd $_
//! ``` //! ```
//! //!
//! 2) Change the crate name, author and version //! 3) Change the crate name, author and version
//! //!
//! ``` text //! ``` text
//! $ edit Cargo.toml && head $_ //! $ edit Cargo.toml && head $_
@@ -28,7 +40,7 @@
//! version = "0.1.0" //! version = "0.1.0"
//! ``` //! ```
//! //!
//! 3) Specify the memory layout of the target device //! 4) Specify the memory layout of the target device
//! //!
//! **NOTE** board support crates sometimes provide this file for you (check the crate //! **NOTE** board support crates sometimes provide this file for you (check the crate
//! documentation). If you are using one that does then remove *both* the `memory.x` and `build.rs` //! documentation). If you are using one that does then remove *both* the `memory.x` and `build.rs`
@@ -44,7 +56,7 @@
//! } //! }
//! ``` //! ```
//! //!
//! 4) Optionally, set a default build target //! 5) Optionally, set a default build target
//! //!
//! ``` text //! ``` text
//! $ cat >>.cargo/config <<'EOF' //! $ cat >>.cargo/config <<'EOF'
@@ -53,30 +65,30 @@
//! EOF //! EOF
//! ``` //! ```
//! //!
//! 5) Depend on a device, HAL implementation or a board support crate. //! 6) Optionally, depend on a device, HAL implementation or a board support crate.
//! //!
//! ``` text //! ``` text
//! $ # add a device crate, OR //! $ # add a device crate, OR
//! $ cargo add stm32f30x //! $ cargo add stm32f30x
//! //!
//! $ # add a HAL implementation crate, OR //! $ # add a HAL implementation crate, OR
//! $ cargo add stm32f103xx-hal //! $ cargo add stm32f30x-hal
//! //!
//! $ # add a board support crate //! $ # add a board support crate
//! $ cargo add f3 //! $ cargo add f3
//! ``` //! ```
//! //!
//! 6) Write the application or start from one of the examples //! 7) Write the application or start from one of the examples
//! //!
//! ``` text //! ``` text
//! $ rm -r src/* && cp examples/hello.rs src/main.rs //! $ rm -r src/* && cp examples/hello.rs src/main.rs
//! ``` //! ```
//! //!
//! 7) Build the application //! 8) Build the application
//! //!
//! ``` text //! ``` text
//! $ # NOTE this command requires `arm-none-eabi-ld` to be in $PATH //! $ # NOTE this command requires `arm-none-eabi-ld` to be in $PATH
//! $ xargo build --release //! $ cargo build --release
//! //!
//! $ # sanity check //! $ # sanity check
//! $ arm-none-eabi-readelf -A target/thumbv7em-none-eabihf/release/demo //! $ arm-none-eabi-readelf -A target/thumbv7em-none-eabihf/release/demo
@@ -101,7 +113,7 @@
//! Tag_ABI_FP_16bit_format: IEEE 754 //! Tag_ABI_FP_16bit_format: IEEE 754
//! ``` //! ```
//! //!
//! 8) Flash the program //! 9) Flash the program
//! //!
//! ``` text //! ``` text
//! $ # Launch OpenOCD on a terminal //! $ # Launch OpenOCD on a terminal
@@ -113,9 +125,7 @@
//! $ arm-none-eabi-gdb target/thumbv7em-none-eabihf/release/demo //! $ arm-none-eabi-gdb target/thumbv7em-none-eabihf/release/demo
//! ``` //! ```
//! //!
//! **NOTE** As of nightly-2017-05-14 or so and cortex-m-quickstart v0.1.6 you can simply run `xargo //! Alternatively, you can use `cargo run` to build, flash and debug the program in a single step.
//! run` or `xargo run --example $example` to build the program, *and* immediately start a debug
//! session. IOW, it lets you omit the `arm-none-eabi-gdb` command.
//! //!
//! ``` text //! ``` text
//! $ cargo run --example hello //! $ cargo run --example hello
@@ -151,7 +161,7 @@
//! Error message: //! Error message:
//! //!
//! ``` text //! ``` text
//! $ xargo build //! $ cargo build
//! Compiling demo v0.1.0 (file:///home/japaric/tmp/demo) //! Compiling demo v0.1.0 (file:///home/japaric/tmp/demo)
//! error: linking with `arm-none-eabi-ld` failed: exit code: 1 //! error: linking with `arm-none-eabi-ld` failed: exit code: 1
//! | //! |
@@ -172,7 +182,7 @@
//! Error message: //! Error message:
//! //!
//! ``` text //! ``` text
//! $ xargo build //! $ cargo build
//! (..) //! (..)
//! Compiling cortex-m-semihosting v0.1.3 //! Compiling cortex-m-semihosting v0.1.3
//! error[E0463]: can't find crate for `std` //! error[E0463]: can't find crate for `std`
@@ -181,8 +191,8 @@
//! ``` //! ```
//! //!
//! Solution: Set a default build target in the `.cargo/config` file //! Solution: Set a default build target in the `.cargo/config` file
//! (see [Usage] section), or call Xargo with `--target` flag: //! (see [Usage] section), or call Cargo with `--target` flag:
//! `xargo build --target thumbv7em-none-eabi`. //! `cargo build --target thumbv7em-none-eabi`.
//! //!
//! ## Overwrote the original `.cargo/config` file //! ## Overwrote the original `.cargo/config` file
//! //!
@@ -229,7 +239,7 @@
//! `/usr/share/openocd/scripts` directory (exact location varies per //! `/usr/share/openocd/scripts` directory (exact location varies per
//! distribution / OS) for a list of scripts that can be used. //! distribution / OS) for a list of scripts that can be used.
//! //!
//! ## Used Cargo instead of Xargo //! ## Used an old nightly
//! //!
//! Error message: //! Error message:
//! //!
@@ -243,14 +253,14 @@
//! error: aborting due to previous error //! error: aborting due to previous error
//! ``` //! ```
//! //!
//! Solution: Use `xargo build`. //! Solution: Use a more recent nightly
//! //!
//! ## Used the stable toolchain //! ## Used the stable toolchain
//! //!
//! Error message: //! Error message:
//! //!
//! ``` text //! ``` text
//! $ xargo build //! $ cargo build
//! error: failed to run `rustc` to learn about target-specific information //! error: failed to run `rustc` to learn about target-specific information
//! //!
//! To learn more, run the command again with --verbose. //! To learn more, run the command again with --verbose.
@@ -288,7 +298,7 @@
//! Error message: //! Error message:
//! //!
//! ``` text //! ``` text
//! $ xargo run [--example ..] //! $ cargo run [--example ..]
//! //!
//! Reading symbols from target/thumbv7em-none-eabihf/debug/cortex-m-quickstart...done. //! Reading symbols from target/thumbv7em-none-eabihf/debug/cortex-m-quickstart...done.
//! cortex_m_rt::reset_handler () //! cortex_m_rt::reset_handler ()
@@ -300,13 +310,13 @@
//! ``` //! ```
//! //!
//! Note that when you reach this point OpenOCD will become unresponsive and you'll have to kill it //! Note that when you reach this point OpenOCD will become unresponsive and you'll have to kill it
//! and start a new OpenOCD process before you can invoke `xargo run` / start GDB. //! and start a new OpenOCD process before you can invoke `cargo run` / start GDB.
//! //!
//! Cause: You uncommented the `monitor tpiu ..` line in `.gdbinit` and are using a named pipe to //! Cause: You uncommented the `monitor tpiu ..` line in `.gdbinit` and are using a named pipe to
//! receive the ITM data (i.e. you ran `mkfifo itm.fifo`). This error occurs when `itmdump -f //! receive the ITM data (i.e. you ran `mkfifo itm.fifo`). This error occurs when `itmdump -f
//! itm.fifo` (or equivalent, e.g. `cat itm.fifo`) is not running. //! itm.fifo` (or equivalent, e.g. `cat itm.fifo`) is not running.
//! //!
//! Solution: Run `itmdump -f itm.fifo` (or equivalently `cat itm.fifo`) *before* invoking `xargo //! Solution: Run `itmdump -f itm.fifo` (or equivalently `cat itm.fifo`) *before* invoking `cargo
//! run` / starting GDB. Note that sometimes `itmdump` will exit when the GDB session ends. In that //! run` / starting GDB. Note that sometimes `itmdump` will exit when the GDB session ends. In that
//! case you'll have to run `itmdump` before you start the next GDB session. //! case you'll have to run `itmdump` before you start the next GDB session.
//! //!