Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
No results found
Select Git revision
  • master
1 result
Show changes

Commits on Source 5

6 files
+ 468
26
Compare changes
  • Side-by-side
  • Inline

Files

Original line number Original line Diff line number Diff line
@@ -16,8 +16,8 @@
            "preLaunchTask": "cargo build",
            "preLaunchTask": "cargo build",
            "executable": "./target/thumbv7em-none-eabihf/debug/app",
            "executable": "./target/thumbv7em-none-eabihf/debug/app",
            "configFiles": [
            "configFiles": [
                "interface/stlink.cfg",
                //"interface/stlink.cfg",
                // "interface/stlink-v2-1.cfg", // deprecated setup script
                "interface/stlink-v2-1.cfg", // deprecated setup script
                "target/stm32f4x.cfg"
                "target/stm32f4x.cfg"
            ],
            ],
            "postLaunchCommands": [
            "postLaunchCommands": [
@@ -39,8 +39,8 @@
            "preLaunchTask": "cargo build --examples",
            "preLaunchTask": "cargo build --examples",
            "executable": "./target/thumbv7em-none-eabihf/debug/examples/${fileBasenameNoExtension}",
            "executable": "./target/thumbv7em-none-eabihf/debug/examples/${fileBasenameNoExtension}",
            "configFiles": [
            "configFiles": [
                "interface/stlink.cfg",
                //"interface/stlink.cfg",
                // "interface/stlink-v2-1.cfg", // deprecated setup script
                "interface/stlink-v2-1.cfg", // deprecated setup script
                "target/stm32f4x.cfg"
                "target/stm32f4x.cfg"
            ],
            ],
            "postLaunchCommands": [
            "postLaunchCommands": [
@@ -75,8 +75,8 @@
            "preLaunchTask": "cargo build --examples",
            "preLaunchTask": "cargo build --examples",
            "executable": "./target/thumbv7em-none-eabihf/debug/examples/${fileBasenameNoExtension}",
            "executable": "./target/thumbv7em-none-eabihf/debug/examples/${fileBasenameNoExtension}",
            "configFiles": [
            "configFiles": [
                "interface/stlink.cfg",
                //"interface/stlink.cfg",
                // "interface/stlink-v2-1.cfg", // deprecated setup script
                "interface/stlink-v2-1.cfg", // deprecated setup script
                "target/stm32f4x.cfg"
                "target/stm32f4x.cfg"
            ],
            ],
            "postLaunchCommands": [
            "postLaunchCommands": [
@@ -100,8 +100,8 @@
            "preLaunchTask": "cargo build --examples --release",
            "preLaunchTask": "cargo build --examples --release",
            "executable": "./target/thumbv7em-none-eabihf/release/examples/${fileBasenameNoExtension}",
            "executable": "./target/thumbv7em-none-eabihf/release/examples/${fileBasenameNoExtension}",
            "configFiles": [
            "configFiles": [
                "interface/stlink.cfg",
                //"interface/stlink.cfg",
                // "interface/stlink-v2-1.cfg", // deprecated setup script
                "interface/stlink-v2-1.cfg", // deprecated setup script
                "target/stm32f4x.cfg"
                "target/stm32f4x.cfg"
            ],
            ],
            "postLaunchCommands": [
            "postLaunchCommands": [
@@ -125,8 +125,8 @@
            "preLaunchTask": "cargo build --examples --release",
            "preLaunchTask": "cargo build --examples --release",
            "executable": "./target/thumbv7em-none-eabihf/release/examples/${fileBasenameNoExtension}",
            "executable": "./target/thumbv7em-none-eabihf/release/examples/${fileBasenameNoExtension}",
            "configFiles": [
            "configFiles": [
                "interface/stlink.cfg",
                //"interface/stlink.cfg",
                // "interface/stlink-v2-1.cfg", // deprecated setup script
                "interface/stlink-v2-1.cfg", // deprecated setup script
                "target/stm32f4x.cfg"
                "target/stm32f4x.cfg"
            ],
            ],
            "postLaunchCommands": [
            "postLaunchCommands": [

Cargo.lock

0 → 100644
+418 −0
Original line number Original line Diff line number Diff line
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "aligned"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb1ce8b3382016136ab1d31a1b5ce807144f8b7eb2d5f16b2108f0f07edceb94"
dependencies = [
 "as-slice",
]

[[package]]
name = "app"
version = "0.1.0"
dependencies = [
 "aligned",
 "cortex-m",
 "cortex-m-rt",
 "cortex-m-rtfm",
 "cortex-m-semihosting",
 "nb",
 "panic-halt",
 "panic-itm",
 "panic-semihosting",
 "stm32f4 0.9.0",
 "stm32f4xx-hal",
 "ufmt",
]

[[package]]
name = "as-slice"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be6b7e95ac49d753f19cab5a825dea99a1149a04e4e3230b33ae16e120954c04"
dependencies = [
 "generic-array 0.12.3",
 "generic-array 0.13.2",
 "stable_deref_trait",
]

[[package]]
name = "autocfg"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"

[[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 = "byteorder"
version = "1.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"

[[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.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2954942fbbdd49996704e6f048ce57567c3e1a4e2dc59b41ae9fde06a01fc763"
dependencies = [
 "aligned",
 "bare-metal",
 "volatile-register",
]

[[package]]
name = "cortex-m-rt"
version = "0.6.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00d518da72bba39496024b62607c1d8e37bcece44b2536664f1132a73a499a28"
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-rtfm"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eaf0b9fd3f042cb3793d15daf3cea201b2f25c99b0b5b936a551bb6909c3ae5b"
dependencies = [
 "cortex-m",
 "cortex-m-rt",
 "cortex-m-rtfm-macros",
 "heapless",
 "rtfm-core",
]

[[package]]
name = "cortex-m-rtfm-macros"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c62092f6ff344e9b0adb748f0302ed69889ba2fae1fce446e3788d4726ea73bb"
dependencies = [
 "proc-macro2",
 "quote",
 "rtfm-syntax",
 "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.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee4908a155094da7723c2d60d617b820061e3b4efcc3d9e293d206a5a76c170b"
dependencies = [
 "nb",
 "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 = "hash32"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc"
dependencies = [
 "byteorder",
]

[[package]]
name = "heapless"
version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10b591a0032f114b7a77d4fbfab452660c553055515b7d7ece355db080d19087"
dependencies = [
 "as-slice",
 "generic-array 0.13.2",
 "hash32",
]

[[package]]
name = "indexmap"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292"
dependencies = [
 "autocfg",
]

[[package]]
name = "nb"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1411551beb3c11dedfb0a90a0fa256b47d28b9ec2cdff34c25a2fa59e45dbdc"

[[package]]
name = "panic-halt"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812"

[[package]]
name = "panic-itm"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98830d17a95587207e41edaa3009b143d326ce134b0e3538ac98246a67d66cc3"
dependencies = [
 "cortex-m",
]

[[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-macro-hack"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5"
dependencies = [
 "proc-macro2",
 "quote",
 "syn",
]

[[package]]
name = "proc-macro2"
version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3acb317c6ff86a4e579dfa00fc5e6cca91ecbb4e7eb2df0468805b674eb88548"
dependencies = [
 "unicode-xid",
]

[[package]]
name = "quote"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
dependencies = [
 "proc-macro2",
]

[[package]]
name = "r0"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f"

[[package]]
name = "rtfm-core"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ec893edb2aa5b70320b94896ffea22a7ebb1cf3f942bb67cd5b60a865a63493"

[[package]]
name = "rtfm-syntax"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4455e23c34df3d66454e7e218a4d76a7f83321d04a806be614463341cec4116e"
dependencies = [
 "indexmap",
 "proc-macro2",
 "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 = "stable_deref_trait"
version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8"

[[package]]
name = "stm32f4"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec5833f4399bfeca7c33a3797d2cfc4db14e871794cc4796de80d2a44864cc2a"
dependencies = [
 "bare-metal",
 "cortex-m",
 "cortex-m-rt",
 "vcell",
]

[[package]]
name = "stm32f4"
version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88640ad08c62e0651a1320187f38c3655d025ed580a10f0e4d85a2cc4829069f"
dependencies = [
 "bare-metal",
 "cortex-m",
 "cortex-m-rt",
 "vcell",
]

[[package]]
name = "stm32f4xx-hal"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c8b5b1feabb6f6f4ae8ddab194f6b79965f4d9be66d5717f58468c38d3bd90c4"
dependencies = [
 "bare-metal",
 "cast",
 "cortex-m",
 "cortex-m-rt",
 "embedded-hal",
 "nb",
 "stm32f4 0.8.0",
 "void",
]

[[package]]
name = "syn"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af6f3550d8dff9ef7dc34d384ac6f107e5d31c8f57d9f28e0081503f547ac8f5"
dependencies = [
 "proc-macro2",
 "quote",
 "unicode-xid",
]

[[package]]
name = "typenum"
version = "1.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"

[[package]]
name = "ufmt"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e7ecea7ef79d3f8f878eee614afdf5256475c63ad76139d4da6125617c784a0"
dependencies = [
 "proc-macro-hack",
 "ufmt-macros",
 "ufmt-write",
]

[[package]]
name = "ufmt-macros"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed813e34a2bfa9dc58ee2ed8c8314d25e6d70c911486d64b8085cb695cfac069"
dependencies = [
 "proc-macro-hack",
 "proc-macro2",
 "quote",
 "syn",
]

[[package]]
name = "ufmt-write"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e87a2ed6b42ec5e28cc3b94c09982969e9227600b2e3dcbc1db927a84c06bd69"

[[package]]
name = "unicode-xid"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"

[[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"

[[package]]
name = "volatile-register"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286"
dependencies = [
 "vcell",
]
+36 −14
Original line number Original line Diff line number Diff line
@@ -26,25 +26,40 @@ extern crate panic_semihosting;
use cortex_m_rt::entry;
use cortex_m_rt::entry;


// a constant (cannot be changed at run-time)
// a constant (cannot be changed at run-time)
const X_INIT: u32 = 10;
//const X_INIT: u32 = 10;
//const X_INIT: u32 = core::u32::MAX;
const X_INIT: u32 = core::u32::MAX;


// global mutable variables (changed using unsafe code)
// global mutable variables (changed using unsafe code)
static mut X: u32 = X_INIT;
static mut X: u32 = X_INIT;
static mut Y: u32 = 0;
static mut Y: u32 = 0;


fn read_x()->u32{
    unsafe{X}
}
fn read_y()->u32{
    unsafe{Y}
}

fn write_y(y:u32){
    unsafe{Y=y};
}

fn write_x(x:u32){
    unsafe{X=x};
}


#[entry]
#[entry]
fn main() -> ! {
fn main() -> ! {
    // local mutable variable (changed in safe code)
    // local mutable variable (changed in safe code)
    let mut x = unsafe { X };
    let mut x =  read_x();

    loop {
    loop {
        x += 1; // <- place breakpoint here (3)
        x = x.wrapping_add(1); // <- place breakpoint here (3)
        unsafe {
        
            X += 1;
        write_x(read_x().wrapping_add(1));
            Y = X;
        write_y(read_x());
            assert!(x == X && X == Y);
        assert!(x == read_x() && read_x() == read_y()+1);
        }
        
    }
    }
}
}


@@ -61,17 +76,22 @@ fn main() -> ! {
//    Look under Variables/Local what do you find.
//    Look under Variables/Local what do you find.
//
//
//    ** your answer here **
//    ** your answer here **
//    local
//      x: 4685359
//
//
//    In the Expressions (WATCH -vscode) view add X and Y
//    In the Expressions (WATCH -vscode) view add X and Y
//    what do you find
//    what do you find
//
//
//    ** your answer here **
//    ** your answer here **
//
//    X: 4685359 
//    Y: <optimized out>     

//    Step through one complete iteration of the loop
//    Step through one complete iteration of the loop
//    and see how the (Local) Variables are updated
//    and see how the (Local) Variables are updated
//    can you foresee what will eventually happen?
//    can you foresee what will eventually happen?
//
//
// 	  ** place your answer here **
// 	  ** place your answer here **
//    Its inceremented by one each iteration and it will eventually wrap.
//
//
//    Commit your answers (bare0_1)
//    Commit your answers (bare0_1)
//
//
@@ -80,6 +100,8 @@ fn main() -> ! {
//    (Hint, look under OUTPUT/Adopter Output to see the `openocd` output.)
//    (Hint, look under OUTPUT/Adopter Output to see the `openocd` output.)
//
//
//    ** your answer here **
//    ** your answer here **
//    First it says that the local x gets optimized out then it panics
//    "panicked at 'attempt to add with overflow', examples/bare0.rs:42:9"
//
//
//    Commit your answers (bare0_2)
//    Commit your answers (bare0_2)
//
//
@@ -88,10 +110,10 @@ fn main() -> ! {
//    Change (both) += operations to use wrapping_add
//    Change (both) += operations to use wrapping_add
//    load and run the program, what happens
//    load and run the program, what happens
//    ** your answer here **
//    ** your answer here **
//
//    x wraps around and becomes 0 and X doesnt change
//    Now continue execution, what happens
//    Now continue execution, what happens
//    ** your answer here **
//    ** your answer here **
//
//    x continues to get bigger X is still the same
//    Commit your answers (bare0_3)
//    Commit your answers (bare0_3)
//
//
//    (If the program did not succeed back to the breakpoint
//    (If the program did not succeed back to the breakpoint
@@ -100,7 +122,7 @@ fn main() -> ! {
// 4. Change the assertion to `assert!(x == X && X == Y + 1)`, what happens?
// 4. Change the assertion to `assert!(x == X && X == Y + 1)`, what happens?
//
//
//    ** place your answer here **
//    ** place your answer here **
//
//     the program panics "panicked at 'assertion failed: x == X && X == Y + 1', examples/bare0.rs:45:13"
//    Commit your answers (bare0_4)
//    Commit your answers (bare0_4)
//
//
// 5. Remove the assertion and implement "safe" functions for
// 5. Remove the assertion and implement "safe" functions for
+2 −2
Original line number Original line Diff line number Diff line
source [find interface/stlink.cfg]
#source [find interface/stlink.cfg]
# deprecated
# deprecated
# source [find interface/stlink-v2-1.cfg] 
source [find interface/stlink-v2-1.cfg] 
transport select hla_swd
transport select hla_swd


# increase working area to 64KB
# increase working area to 64KB