From 710ca71ba346acb7478119c58e869416154055ca Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Nov 2021 01:14:25 +0100 Subject: [PATCH 1/3] added utility files --- .cargo/config.toml | 36 ++++++++++++++++++++++++++++++++++++ jlink.gdb | 10 ++++++++++ memory.x | 10 ++++++++++ 3 files changed, 56 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 jlink.gdb create mode 100644 memory.x diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..dd54ddd --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,36 @@ +[target.'cfg(all(target_arch = "arm", target_os = "none"))'] +# 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 -q -x jlink.gdb" +# runner = "gdb-multiarch -q -x jlink.gdb" +# runner = "gdb -q -x openocd.gdb" + +rustflags = [ + # This is needed if your flash or ram addresses are not aligned to 0x10000 in memory.x + # See https://github.com/rust-embedded/cortex-m-quickstart/pull/95 + "-C", "link-arg=--nmagic", + + # LLD (shipped with the Rust toolchain) is used as the default linker + "-C", "link-arg=-Tlink.x", + + # if you run into problems with LLD switch to the GNU linker by commenting out + # this line + # "-C", "linker=arm-none-eabi-ld", + + # if you need to link to pre-compiled C libraries provided by a C toolchain + # use GCC as the linker by commenting out both lines above and then + # uncommenting the three lines below + # "-C", "linker=arm-none-eabi-gcc", + # "-C", "link-arg=-Wl,-Tlink.x", + # "-C", "link-arg=-nostartfiles", +] + +[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) +# target = "thumbv8m.base-none-eabi" # Cortex-M23 +# target = "thumbv8m.main-none-eabi" # Cortex-M33 (no FPU) +# target = "thumbv8m.main-none-eabihf" # Cortex-M33 (with FPU) \ No newline at end of file diff --git a/jlink.gdb b/jlink.gdb new file mode 100644 index 0000000..20ff2d5 --- /dev/null +++ b/jlink.gdb @@ -0,0 +1,10 @@ +target remote localhost:2331 + +monitor reset + +# *try* to stop at the user entry point (it might be gone due to inlining) +break main + +load + +continue diff --git a/memory.x b/memory.x new file mode 100644 index 0000000..1ca0e97 --- /dev/null +++ b/memory.x @@ -0,0 +1,10 @@ +MEMORY +{ + FLASH : ORIGIN = 0x00000000, LENGTH = 0x20000 /* 128K */ + RAM : ORIGIN = 0x10000000, LENGTH = 0x08000 /* 32K */ +} + +/* This is where the call stack will be allocated. */ +/* The stack is of the full descending type. */ +/* NOTE Do NOT modify `_stack_start` unless you know what you are doing */ +_stack_start = ORIGIN(RAM) + LENGTH(RAM); From ee9c8c607bd6010e5a0e54c6ae1d6c4cceca69ef Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Nov 2021 01:26:58 +0100 Subject: [PATCH 2/3] use x-compile in ci now --- .github/workflows/ci.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8362357..5a9dad0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,10 +12,13 @@ jobs: with: profile: minimal toolchain: stable + target: thumbv6m-none-eabi override: true - uses: actions-rs/cargo@v1 with: + use-cross: true command: check + args: --target thumbv6m-none-eabi fmt: name: Rustfmt @@ -42,12 +45,14 @@ jobs: with: profile: minimal toolchain: stable + target: thumbv6m-none-eabi override: true - run: rustup component add clippy - uses: actions-rs/cargo@v1 with: + use-cross: true command: clippy - args: -- -D warnings + args: --target thumbv6m-none-eabi -- -D warnings ci: if: ${{ success() }} From c9052285bbd6b2d39b812dc5e47d916775f55881 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 8 Nov 2021 01:32:39 +0100 Subject: [PATCH 3/3] ignoring Cargo.lock now --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index f2e972d..fd634d0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,8 @@ # will have compiled files and executables /target/ +# https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html +Cargo.lock + # These are backup files generated by rustfmt **/*.rs.bk