Solution
This is a recap of what we have done so far.
Cargo.toml
[package]
name = "start"
version = "0.2.0"
[dependencies]
panic-halt = "~0.2"
microbit="~0.7"
cortex-m-rt="~0.6"
Rust
#![no_std] #![no_main] extern crate cortex_m_rt; extern crate microbit; extern crate panic_halt; use cortex_m_rt::entry; #[entry] fn main() -> ! { let _y; let x = 42; _y = x; loop {} }
.cargo/config
# Configure builds for our target, the micro:bit's architecture
[target.thumbv6m-none-eabi]
# Execute binary using gdb when calling cargo run
runner = "arm-none-eabi-gdb"
# Tweak to the linking process required by the cortex-m-rt crate
rustflags = [
"-C", "link-arg=-Tlink.x",
# The LLD linker is selected by default
#"-C", "linker=arm-none-eabi-ld",
]
# Automatically select this target when cargo building this project
[build]
target = "thumbv6m-none-eabi"
.gdbinit
# Connects GDB to OpenOCD server port
target remote :3333
# (optional) Unmangle function names when debugging
set print asm-demangle on
# Load your program, breaks at entry
load
# (optional) Add breakpoint at function
break main
# Continue with execution
continue