diff --git a/dts/am335x-boneblack-openskies.dts b/dts/am335x-boneblack-openskies.dts index b2a9a18..d784047 100644 --- a/dts/am335x-boneblack-openskies.dts +++ b/dts/am335x-boneblack-openskies.dts @@ -4,49 +4,17 @@ #include -/ { - aliases { - sht3x = &sht3x; - ssd1306 = &ssd1306; - pms5003 = &pms5003; - s8 = &s8; - }; -}; - &i2c1 { status = "okay"; clock-frequency = <400000>; - #address-cells = <0x01>; - #size-cells = <0x00>; - sht3x: sht3x@44 { - compatible = "sensirion,sht3x"; - reg = <0x44>; - status = "okay"; - }; - ssd1306: ssd1306@3c { - compatible = "solomon,ssd1306fb-i2c"; - reg = <0x3c>; - solomon,height = <48>; - solomon,width = <64>; - status = "okay"; - }; }; &uart1 { status = "okay"; - pms5003: pms5003 { - compatible = "plantower,pms5003"; - vcc-supply = <0xffffffff>; - status = "okay"; - }; }; &uart2 { status = "okay"; - s8: s8 { - compatible = "senseair,sunrise-006-0-007"; - status = "okay"; - }; }; diff --git a/rust/fe310-test/.cargo/config b/rust/fe310-test/.cargo/config new file mode 100644 index 0000000..9a15fd0 --- /dev/null +++ b/rust/fe310-test/.cargo/config @@ -0,0 +1,8 @@ +[target.riscv32imac-unknown-none-elf] +runner = "riscv64-unknown-elf-gdb -q -x gdb_init" +rustflags = [ + "-C", "link-arg=-Thifive1-link.x", +] + +[build] +target = "riscv32imac-unknown-none-elf" diff --git a/rust/fe310-test/Cargo.lock b/rust/fe310-test/Cargo.lock new file mode 100644 index 0000000..d3dd8f7 --- /dev/null +++ b/rust/fe310-test/Cargo.lock @@ -0,0 +1,216 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "bare-metal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "bit_field" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed8765909f9009617974ab6b7d332625b320b33c326b1e9321382ef1999b5d56" + +[[package]] +name = "e310x" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109a18d80af4c0d7c121e1c3896c9ac3cfcb1f7f334cef594fb4d5668da91a5f" +dependencies = [ + "bare-metal", + "riscv", + "riscv-rt", + "vcell", +] + +[[package]] +name = "e310x-hal" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d6685b83d2119511e64641a9611e643dc0bcc5a0bcbed2b5a9f993d1b6a5bb" +dependencies = [ + "e310x", + "embedded-hal", + "nb 0.1.3", + "riscv", +] + +[[package]] +name = "embedded-hal" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa998ce59ec9765d15216393af37a58961ddcefb14c753b4816ba2191d865fcb" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "fe310-test" +version = "0.1.0" +dependencies = [ + "e310x-hal", + "embedded-hal", + "panic-halt", + "riscv", + "riscv-rt", +] + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.0.0", +] + +[[package]] +name = "nb" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae" + +[[package]] +name = "panic-halt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812" + +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r0" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" + +[[package]] +name = "rand" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" +dependencies = [ + "rand_core 0.3.1", +] + +[[package]] +name = "rand_core" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +dependencies = [ + "rand_core 0.4.2", +] + +[[package]] +name = "rand_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" + +[[package]] +name = "riscv" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb785ce81e0bd87b8d1d357266eeb03f081d9d5871a31e7f95b7e6fd67002eb" +dependencies = [ + "bare-metal", + "bit_field", +] + +[[package]] +name = "riscv-rt" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5b540024086582df97c2e52b0f586977b9a14f95d7f6055438b355e9842b319" +dependencies = [ + "r0", + "riscv", + "riscv-rt-macros", +] + +[[package]] +name = "riscv-rt-macros" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3525f8341898dec060782087b7a15969e1cfe52818afacc47709265c19a23d53" +dependencies = [ + "proc-macro2", + "quote", + "rand", + "syn", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + +[[package]] +name = "vcell" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876e32dcadfe563a4289e994f7cb391197f362b6315dc45e8ba4aa6f564a4b3c" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" diff --git a/rust/fe310-test/Cargo.toml b/rust/fe310-test/Cargo.toml new file mode 100644 index 0000000..cfa0713 --- /dev/null +++ b/rust/fe310-test/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "fe310-test" +version = "0.1.0" +authors = ["Artemis Tosini "] +edition = "2018" + + +[dependencies] +embedded-hal = "0.2.3" +e310x-hal = { version = "0.8.3", features = ["g002"] } +panic-halt = "0.2.0" +riscv = "0.5.3" +riscv-rt = "0.6.0" + +[profile.release] +codegen-units = 1 +debug = true +lto = true diff --git a/rust/fe310-test/src/main.rs b/rust/fe310-test/src/main.rs new file mode 100644 index 0000000..7ba1210 --- /dev/null +++ b/rust/fe310-test/src/main.rs @@ -0,0 +1,5 @@ +#![no_std] +#![no_main] + +use panic_halt as _; +use riscv_rt::entry; diff --git a/rust/stm32f407-test/.cargo/config b/rust/stm32f407-test/.cargo/config new file mode 100644 index 0000000..fc4e3b7 --- /dev/null +++ b/rust/stm32f407-test/.cargo/config @@ -0,0 +1,9 @@ +[target.'cfg(all(target_arch = "arm", target_os = "none"))'] +runner = "gdb -q -x openocd.gdb" + +rustflags = [ + "-C", "link-arg=-Tlink.x", +] + +[build] +target = "thumbv7em-none-eabihf" diff --git a/rust/stm32f407-test/.gitignore b/rust/stm32f407-test/.gitignore new file mode 100644 index 0000000..561775e --- /dev/null +++ b/rust/stm32f407-test/.gitignore @@ -0,0 +1 @@ +itm.txt diff --git a/rust/stm32f407-test/Cargo.lock b/rust/stm32f407-test/Cargo.lock new file mode 100644 index 0000000..d2b91bb --- /dev/null +++ b/rust/stm32f407-test/Cargo.lock @@ -0,0 +1,303 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "aligned" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c19796bd8d477f1a9d4ac2465b464a8b1359474f06a96bb3cda650b4fca309bf" +dependencies = [ + "as-slice", +] + +[[package]] +name = "as-slice" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb4d1c23475b74e3672afa8c2be22040b8b7783ad9b461021144ed10a46bb0e6" +dependencies = [ + "generic-array 0.12.3", + "generic-array 0.13.2", + "generic-array 0.14.4", + "stable_deref_trait", +] + +[[package]] +name = "bare-metal" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "bitfield" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" + +[[package]] +name = "cast" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0" +dependencies = [ + "rustc_version", +] + +[[package]] +name = "cortex-m" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2be99930c99669a74d986f7fd2162085498b322e6daae8ef63a97cc9ac1dc73c" +dependencies = [ + "aligned", + "bare-metal", + "bitfield", + "volatile-register", +] + +[[package]] +name = "cortex-m-rt" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "980c9d0233a909f355ed297ef122f257942de5e0a2cb1c39f60684b65bcb90fb" +dependencies = [ + "cortex-m-rt-macros", + "r0", +] + +[[package]] +name = "cortex-m-rt-macros" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4717562afbba06e760d34451919f5c3bf3ac15c7bb897e8b04862a7428378647" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "cortex-m-semihosting" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "113ef0ecffee2b62b58f9380f4469099b30e9f9cbee2804771b4203ba1762cfa" +dependencies = [ + "cortex-m", +] + +[[package]] +name = "embedded-hal" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa998ce59ec9765d15216393af37a58961ddcefb14c753b4816ba2191d865fcb" +dependencies = [ + "nb 0.1.3", + "void", +] + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ed1e761351b56f54eb9dcd0cfaca9fd0daecf93918e1cfc01c8a3d26ee7adcd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "nb" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" +dependencies = [ + "nb 1.0.0", +] + +[[package]] +name = "nb" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae" + +[[package]] +name = "panic-semihosting" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03864ac862876c16a308f5286f4aa217f1a69ac45df87ad3cd2847f818a642c" +dependencies = [ + "cortex-m", + "cortex-m-semihosting", +] + +[[package]] +name = "proc-macro2" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ef7cd2518ead700af67bf9d1a658d90b6037d77110fd9c0445429d0ba1c6c9" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r0" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stm32f4" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11460b4de3a84f072e2cf6e76306c64d27f405a0e83bace0a726f555ddf4bf33" +dependencies = [ + "bare-metal", + "cortex-m", + "cortex-m-rt", + "vcell", +] + +[[package]] +name = "stm32f407-test" +version = "0.1.0" +dependencies = [ + "cortex-m", + "cortex-m-rt", + "cortex-m-semihosting", + "embedded-hal", + "nb 0.1.3", + "panic-semihosting", + "stm32f4xx-hal", +] + +[[package]] +name = "stm32f4xx-hal" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3a2f044469d1e3aff2cd02bee8b2724f3d5d91f3175e5d1ec99770320d16192" +dependencies = [ + "bare-metal", + "cast", + "cortex-m", + "cortex-m-rt", + "embedded-hal", + "nb 0.1.3", + "rand_core", + "stm32f4", + "void", +] + +[[package]] +name = "syn" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c51d92969d209b54a98397e1b91c8ae82d8c87a7bb87df0b29aa2ad81454228" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "typenum" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "vcell" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "876e32dcadfe563a4289e994f7cb391197f362b6315dc45e8ba4aa6f564a4b3c" + +[[package]] +name = "version_check" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" + +[[package]] +name = "void" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" + +[[package]] +name = "volatile-register" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286" +dependencies = [ + "vcell", +] diff --git a/rust/stm32f407-test/Cargo.toml b/rust/stm32f407-test/Cargo.toml new file mode 100644 index 0000000..57d2957 --- /dev/null +++ b/rust/stm32f407-test/Cargo.toml @@ -0,0 +1,28 @@ +[package] +name = "stm32f407-test" +version = "0.1.0" +authors = ["Artemis Tosini "] +edition = "2018" + + +[dependencies] +embedded-hal = "0.2" +nb = "0.1.2" +cortex-m = "0.6" +cortex-m-rt = "0.6" +cortex-m-semihosting = "0.3" +panic-semihosting = "0.5" + +[dependencies.stm32f4xx-hal] +version = "0.8" +features = ["rt", "stm32f407"] + +[[bin]] +name = "stm32f407-test" +test = false +bench = false + +[profile.release] +codegen-units = 1 +debug = true +lto = true diff --git a/rust/stm32f407-test/build.rs b/rust/stm32f407-test/build.rs new file mode 100644 index 0000000..555cdf6 --- /dev/null +++ b/rust/stm32f407-test/build.rs @@ -0,0 +1,21 @@ +use std::env; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +fn main() { + // Put `memory.x` in our output directory and ensure it's + // on the linker search path. + let out = &PathBuf::from(env::var_os("OUT_DIR").unwrap()); + File::create(out.join("memory.x")) + .unwrap() + .write_all(include_bytes!("memory.x")) + .unwrap(); + println!("cargo:rustc-link-search={}", out.display()); + + // By default, Cargo will re-run a build script whenever + // any file in the project changes. By specifying `memory.x` + // here, we ensure the build script is only re-run when + // `memory.x` is changed. + println!("cargo:rerun-if-changed=memory.x"); +} diff --git a/rust/stm32f407-test/memory.x b/rust/stm32f407-test/memory.x new file mode 100644 index 0000000..1cd383d --- /dev/null +++ b/rust/stm32f407-test/memory.x @@ -0,0 +1,9 @@ +MEMORY +{ + /* NOTE K = KiBi = 1024 bytes */ + FLASH : ORIGIN = 0x08000000, LENGTH = 1M + RAM : ORIGIN = 0x20000000, LENGTH = 128K + CCRAM : ORIGIN = 0x10000000, LENGTH = 64K +} + +_stack_start = ORIGIN(RAM) + LENGTH(RAM); diff --git a/rust/stm32f407-test/openocd.cfg b/rust/stm32f407-test/openocd.cfg new file mode 100644 index 0000000..41359fa --- /dev/null +++ b/rust/stm32f407-test/openocd.cfg @@ -0,0 +1,9 @@ +source [find interface/stlink-v2-1.cfg] +transport select hla_swd + +# increase working area to 64KB +set WORKAREASIZE 0x10000 + +source [find target/stm32f4x.cfg] + +reset_config srst_only diff --git a/rust/stm32f407-test/openocd.gdb b/rust/stm32f407-test/openocd.gdb new file mode 100644 index 0000000..ea5f5aa --- /dev/null +++ b/rust/stm32f407-test/openocd.gdb @@ -0,0 +1,36 @@ +target extended-remote :3333 + +# print demangled symbols +set print asm-demangle on + +# set backtrace limit to not have infinite backtrace loops +set backtrace limit 32 + +# detect unhandled exceptions, hard faults and panics +# break DefaultHandler +# break HardFault +# break rust_begin_unwind + +# *try* to stop at the user entry point (it might be gone due to inlining) +break main + +# send captured ITM to the file itm.txt +# (the programmer's SWO pin on the STM32F4DISCOVERY is hard-wired to PB3. Make sure not to use it for a different purpose!) +# 168000000 is the core clock frequency +monitor tpiu config internal itm.txt uart off 168000000 + + +# OR: make the microcontroller SWO (PB3) pin output compatible with UART (8N1) +# 8000000 is the frequency of the SWO pin +# monitor tpiu config external uart off 8000000 2000000 + +# # enable ITM port 1 +monitor itm port 1 on + +# Semihosting +monitor arm semihosting enable + +load + +# start the process but immediately halt the processor +stepi diff --git a/rust/stm32f407-test/src/main.rs b/rust/stm32f407-test/src/main.rs new file mode 100644 index 0000000..b31edba --- /dev/null +++ b/rust/stm32f407-test/src/main.rs @@ -0,0 +1,13 @@ +#![no_std] +#![no_main] + +use panic_halt as _; + + +use cortex_m_rt::entry; + +#[entry] +fn main() -> ! { + + loop { } +} diff --git a/rust/stm32f407-test/stlink.gdb b/rust/stm32f407-test/stlink.gdb new file mode 100644 index 0000000..4705039 --- /dev/null +++ b/rust/stm32f407-test/stlink.gdb @@ -0,0 +1,36 @@ +target extended-remote :4343 + +# print demangled symbols +set print asm-demangle on + +# set backtrace limit to not have infinite backtrace loops +set backtrace limit 32 + +# detect unhandled exceptions, hard faults and panics +# break DefaultHandler +# break HardFault +# break rust_begin_unwind + +# *try* to stop at the user entry point (it might be gone due to inlining) +break main + +# send captured ITM to the file itm.txt +# (the programmer's SWO pin on the STM32F4DISCOVERY is hard-wired to PB3. Make sure not to use it for a different purpose!) +# 168000000 is the core clock frequency +monitor tpiu config internal itm.txt uart off 168000000 + + +# OR: make the microcontroller SWO (PB3) pin output compatible with UART (8N1) +# 8000000 is the frequency of the SWO pin +# monitor tpiu config external uart off 8000000 2000000 + +# # enable ITM port 1 +monitor itm port 1 on + +# Semihosting +monitor arm semihosting enable + +load + +# start the process but immediately halt the processor +stepi