8 Commits

Author SHA1 Message Date
Jorge Aparicio
2bb6e419af v0.1.6 2017-05-26 15:19:24 -05:00
Jorge Aparicio
0154a9efc7 Merge pull request #7 from japaric/runner
set default runner to arm-none-eabi-gdb
2017-05-26 15:17:04 -05:00
Jorge Aparicio
c6fafaedc2 set default runner to arm-none-eabi-gdb
with this `xargo run` will build the program *and* immediately start a GDB
session.
2017-05-26 15:12:21 -05:00
Jorge Aparicio
82e36ffe13 v0.1.5 2017-05-16 10:25:30 -05:00
Jorge Aparicio
d035016e65 Merge pull request #6 from japaric/incr-comp
warn against using CARGO_INCREMENTAL
2017-05-15 22:01:09 -05:00
Jorge Aparicio
362c715b19 warn against using CARGO_INCREMENTAL 2017-05-15 22:00:36 -05:00
Jorge Aparicio
8aa495ac66 v0.1.4 2017-05-13 15:18:50 -05:00
Jorge Aparicio
62453e1e94 add dependencies section to documentation
add 'used stable toolchain' sub-section to the troubleshooting section
2017-05-13 15:17:14 -05:00
4 changed files with 100 additions and 8 deletions

View File

@@ -1,4 +1,5 @@
[target.thumbv6m-none-eabi]
runner = 'arm-none-eabi-gdb'
rustflags = [
"-C", "link-arg=-Tlink.x",
"-C", "linker=arm-none-eabi-ld",
@@ -6,6 +7,7 @@ rustflags = [
]
[target.thumbv7m-none-eabi]
runner = 'arm-none-eabi-gdb'
rustflags = [
"-C", "link-arg=-Tlink.x",
"-C", "linker=arm-none-eabi-ld",
@@ -13,6 +15,7 @@ rustflags = [
]
[target.thumbv7em-none-eabi]
runner = 'arm-none-eabi-gdb'
rustflags = [
"-C", "link-arg=-Tlink.x",
"-C", "linker=arm-none-eabi-ld",
@@ -20,6 +23,7 @@ rustflags = [
]
[target.thumbv7em-none-eabihf]
runner = 'arm-none-eabi-gdb'
rustflags = [
"-C", "link-arg=-Tlink.x",
"-C", "linker=arm-none-eabi-ld",

View File

@@ -5,7 +5,31 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
## v0.1.3 - 2017-05-12
## [v0.1.6] - 2017-05-26
### Added
- Set the default runner in .cargo/config to `arm-none-eabi-gdb`. Now `xargo
run` will build the program and start a debug session.
## [v0.1.5] - 2017-05-16
### Added
- A warning about using CARGO_INCREMENTAL to the how to use and the
troubleshooting sections.
## [v0.1.4] - 2017-05-13
### Added
- A dependencies section to the documentation
### Changed
- Extend troubleshooting section
## [v0.1.3] - 2017-05-13
### Added
@@ -15,13 +39,13 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Bumped the cortex-m crate version to v0.2.6
## v0.1.2 - 2017-05-07
## [v0.1.2] - 2017-05-07
### Fixed
- .gdbinit: jump to reset handler after loading the program.
## v0.1.1 - 2017-04-27
## [v0.1.1] - 2017-04-27
### Changed
@@ -33,7 +57,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Initial release
[Unreleased]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.3...HEAD
[Unreleased]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.6...HEAD
[v0.1.6]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.5...v0.1.6
[v0.1.5]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.4...v0.1.5
[v0.1.4]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.3...v0.1.4
[v0.1.3]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.2...v0.1.3
[v0.1.2]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.1...v0.1.2
[v0.1.1]: https://github.com/japaric/cortex-m-quickstart/compare/v0.1.0...v0.1.1

View File

@@ -6,7 +6,7 @@ keywords = ["arm", "cortex-m", "template"]
license = "MIT OR Apache-2.0"
name = "cortex-m-quickstart"
repository = "https://github.com/japaric/cortex-m-quickstart"
version = "0.1.3"
version = "0.1.6"
[dependencies]
cortex-m = "0.2.6"

View File

@@ -1,5 +1,15 @@
//! A template for building applications for ARM Cortex-M microcontrollers
//!
//! # Dependencies
//!
//! - Nightly Rust toolchain: `rustup default nightly`
//! - ARM linker: `sudo apt-get install binutils-arm-none-eabi`
//! - Cargo `clone` subcommand: `cargo install cargo-clone`
//! - GDB: `sudo apt-get install gdb-arm-none-eabi`
//! - OpenOCD: `sudo apt-get install OpenOCD`
//! - Xargo: `cargo install xargo`
//! - [Optional] Cargo `add` subcommand: `cargo install cargo-edit`
//!
//! # Usage
//!
//! - Clone this crate
@@ -64,12 +74,16 @@
//! $ rm -r src/* && cp examples/hello.rs src/main.rs
//! ```
//!
//! - Disable incremental compilation. It doesn't work for embedded development.
//! You'll hit nonsensical linker errors if you use it.
//!
//! ``` text
//! $ unset CARGO_INCREMENTAL
//! ```
//!
//! - Build the application
//!
//! ``` text
//! # if not installed
//! $ cargo install xargo
//!
//! # NOTE this command requires `arm-none-eabi-ld` to be in $PATH
//! $ xargo build --release
//!
@@ -107,6 +121,16 @@
//! $ arm-none-eabi-gdb target/..
//! ```
//!
//! **NOTE** As of nightly-2017-05-14 or so and cortex-m-quickstart v0.1.6 you
//! can simply run `cargo run` or `cargo run --example $ex` to build and flash
//! the program, and immediately start a debug session. IOW, it lets you omit
//! `arm-none-eabi-gdb` command.
//!
//! ```
//! $ cargo run --example hello
//! > # drop you into GDB session
//! ```
//!
//! # Examples
//!
//! Check the [examples module](./examples/index.html)
@@ -201,6 +225,43 @@
//!
//! Solution: Use `xargo build`.
//!
//! ## Used the stable toolchain
//!
//! Error message:
//!
//! ``` text
//! $ xargo build
//! error: failed to run `rustc` to learn about target-specific information
//!
//! To learn more, run the command again with --verbose.
//! ```
//!
//! Solution: Switch to the nightly toolchain with `rustup default nightly`.
//!
//! ## Used `CARGO_INCREMENTAL=1`
//!
//! Error message:
//!
//! ```
//! $ xargo build
//! error: linking with `arm-none-eabi-ld` failed: exit code: 1
//! |
//! = note: "arm-none-eabi-ld" (..)
//! = note: arm-none-eabi-ld:
//! You must specify the exception handlers.
//! Create a non `pub` static variable with type
//! `cortex_m::exception::Handlers` and place it in the
//! '.rodata.exceptions' section. (cf. #[link_section]). Apply the
//! `#[used]` attribute to the variable to make it reach the linker.
//! arm-none-eabi-ld:
//! Invalid '.rodata.exceptions' section.
//! Make sure to place a static with type `cortex_m::exception::Handlers`
//! in that section (cf. #[link_section]) ONLY ONCE.
//! ```
//!
//! Solution: `$ unset CARGO_INCREMENAL`. And to be on the safe side, call
//! `cargo clean` and thrash the Xargo sysroot: `$ rm -rf ~/.xargo`
//!
//! ## Used `gdb` instead of `arm-none-eabi-gdb`
//!
//! Error message: