├── .cargo └── config.toml ├── .envrc ├── .gitignore ├── .gitmodules ├── Cargo.lock ├── Cargo.toml ├── Embed.toml ├── LICENSE ├── README.md ├── SETUP.md ├── flake.lock ├── flake.nix ├── openocd.cfg ├── rust-toolchain.toml └── stm32f730v8t6.yaml /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [target.thumbv7em-none-eabihf] 2 | # uncomment this to make `cargo run` execute programs on QEMU 3 | # runner = "qemu-system-arm -cpu cortex-m3 -machine lm3s6965evb -nographic -semihosting-config enable=on,target=native -kernel" 4 | 5 | [target.'cfg(all(target_arch = "arm", target_os = "none"))'] 6 | # uncomment ONE of these three option to make `cargo run` start a GDB session 7 | # which option to pick depends on your system 8 | # runner = "arm-none-eabi-gdb -q -x openocd.gdb" 9 | # runner = "gdb-multiarch -q -x openocd.gdb" 10 | # runner = "gdb -q -x openocd.gdb" 11 | runner = "probe-run --chip=stm32f730V8Tx" 12 | 13 | rustflags = [ 14 | # This is needed if your flash or ram addresses are not aligned to 0x10000 in memory.x 15 | # See https://github.com/rust-embedded/cortex-m-quickstart/pull/95 16 | "-C", "link-arg=--nmagic", 17 | 18 | # LLD (shipped with the Rust toolchain) is used as the default linker 19 | "-C", "link-arg=-Tlink.x", 20 | 21 | # if you run into problems with LLD switch to the GNU linker by commenting out 22 | # this line 23 | # "-C", "linker=arm-none-eabi-ld", 24 | 25 | # if you need to link to pre-compiled C librarie provided by a C toolchain 26 | # use GCC as the linker by commenting out both lines above and then 27 | # uncommenting the three lines below 28 | # "-C", "linker=arm-none-eabi-gcc", 29 | # "-C", "link-arg=-Wl,-Tlink.x", 30 | # "-C", "link-arg=-nostartfiles", 31 | ] 32 | 33 | [build] 34 | target = "thumbv7em-none-eabihf" 35 | -------------------------------------------------------------------------------- /.envrc: -------------------------------------------------------------------------------- 1 | if ! has nix_direnv_version || ! nix_direnv_version 2.3.0; then 2 | source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/2.3.0/direnvrc" "sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8=" 3 | fi 4 | use flake 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .DS_Store 3 | .direnv 4 | .vscode 5 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "board-support"] 2 | path = board-support 3 | url = ../board-support.git 4 | [submodule "bootloader"] 5 | path = bootloader 6 | url = ../bootloader.git 7 | [submodule "os"] 8 | path = os 9 | url = ../os.git 10 | [submodule "citrus-cas"] 11 | path = citrus-cas 12 | url = ../citrus-cas.git 13 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "aligned" 7 | version = "0.3.5" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "3a785a543aea40f5e4e2e93bb2655d31bc21bb391fff65697150973e383f16bb" 10 | dependencies = [ 11 | "as-slice 0.1.5", 12 | ] 13 | 14 | [[package]] 15 | name = "as-slice" 16 | version = "0.1.5" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "45403b49e3954a4b8428a0ac21a4b7afadccf92bfd96273f1a58cd4812496ae0" 19 | dependencies = [ 20 | "generic-array 0.12.4", 21 | "generic-array 0.13.3", 22 | "generic-array 0.14.7", 23 | "stable_deref_trait", 24 | ] 25 | 26 | [[package]] 27 | name = "as-slice" 28 | version = "0.2.1" 29 | source = "registry+https://github.com/rust-lang/crates.io-index" 30 | checksum = "516b6b4f0e40d50dcda9365d53964ec74560ad4284da2e7fc97122cd83174516" 31 | dependencies = [ 32 | "stable_deref_trait", 33 | ] 34 | 35 | [[package]] 36 | name = "atomic-polyfill" 37 | version = "0.1.11" 38 | source = "registry+https://github.com/rust-lang/crates.io-index" 39 | checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" 40 | dependencies = [ 41 | "critical-section", 42 | ] 43 | 44 | [[package]] 45 | name = "autocfg" 46 | version = "1.1.0" 47 | source = "registry+https://github.com/rust-lang/crates.io-index" 48 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 49 | 50 | [[package]] 51 | name = "az" 52 | version = "1.2.1" 53 | source = "registry+https://github.com/rust-lang/crates.io-index" 54 | checksum = "7b7e4c2464d97fe331d41de9d5db0def0a96f4d823b8b32a2efd503578988973" 55 | 56 | [[package]] 57 | name = "bare-metal" 58 | version = "0.2.5" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3" 61 | dependencies = [ 62 | "rustc_version 0.2.3", 63 | ] 64 | 65 | [[package]] 66 | name = "bare-metal" 67 | version = "1.0.0" 68 | source = "registry+https://github.com/rust-lang/crates.io-index" 69 | checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603" 70 | 71 | [[package]] 72 | name = "bitfield" 73 | version = "0.13.2" 74 | source = "registry+https://github.com/rust-lang/crates.io-index" 75 | checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719" 76 | 77 | [[package]] 78 | name = "bitflags" 79 | version = "1.3.2" 80 | source = "registry+https://github.com/rust-lang/crates.io-index" 81 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 82 | 83 | [[package]] 84 | name = "bxcan" 85 | version = "0.6.2" 86 | source = "registry+https://github.com/rust-lang/crates.io-index" 87 | checksum = "4b13b4b2ea9ab2ba924063ebb86ad895cb79f4a79bf90f27949eb20c335b30f9" 88 | dependencies = [ 89 | "bitflags", 90 | "nb 1.1.0", 91 | "vcell", 92 | ] 93 | 94 | [[package]] 95 | name = "byteorder" 96 | version = "1.4.3" 97 | source = "registry+https://github.com/rust-lang/crates.io-index" 98 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 99 | 100 | [[package]] 101 | name = "cast" 102 | version = "0.3.0" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" 105 | 106 | [[package]] 107 | name = "cortex-m" 108 | version = "0.6.7" 109 | source = "registry+https://github.com/rust-lang/crates.io-index" 110 | checksum = "9075300b07c6a56263b9b582c214d0ff037b00d45ec9fde1cc711490c56f1bb9" 111 | dependencies = [ 112 | "aligned", 113 | "bare-metal 0.2.5", 114 | "bitfield", 115 | "cortex-m 0.7.7", 116 | "volatile-register", 117 | ] 118 | 119 | [[package]] 120 | name = "cortex-m" 121 | version = "0.7.7" 122 | source = "registry+https://github.com/rust-lang/crates.io-index" 123 | checksum = "8ec610d8f49840a5b376c69663b6369e71f4b34484b9b2eb29fb918d92516cb9" 124 | dependencies = [ 125 | "bare-metal 0.2.5", 126 | "bitfield", 127 | "embedded-hal", 128 | "volatile-register", 129 | ] 130 | 131 | [[package]] 132 | name = "cortex-m-rt" 133 | version = "0.7.3" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | checksum = "ee84e813d593101b1723e13ec38b6ab6abbdbaaa4546553f5395ed274079ddb1" 136 | dependencies = [ 137 | "cortex-m-rt-macros", 138 | ] 139 | 140 | [[package]] 141 | name = "cortex-m-rt-macros" 142 | version = "0.7.0" 143 | source = "registry+https://github.com/rust-lang/crates.io-index" 144 | checksum = "f0f6f3e36f203cfedbc78b357fb28730aa2c6dc1ab060ee5c2405e843988d3c7" 145 | dependencies = [ 146 | "proc-macro2", 147 | "quote", 148 | "syn", 149 | ] 150 | 151 | [[package]] 152 | name = "cortex-m-semihosting" 153 | version = "0.5.0" 154 | source = "registry+https://github.com/rust-lang/crates.io-index" 155 | checksum = "c23234600452033cc77e4b761e740e02d2c4168e11dbf36ab14a0f58973592b0" 156 | dependencies = [ 157 | "cortex-m 0.7.7", 158 | ] 159 | 160 | [[package]] 161 | name = "critical-section" 162 | version = "1.1.1" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" 165 | 166 | [[package]] 167 | name = "display-interface" 168 | version = "0.4.1" 169 | source = "registry+https://github.com/rust-lang/crates.io-index" 170 | checksum = "7517c040926d7b02b111884aa089177db80878533127f7c1b480d852c5fb4112" 171 | 172 | [[package]] 173 | name = "embedded-graphics" 174 | version = "0.7.1" 175 | source = "registry+https://github.com/rust-lang/crates.io-index" 176 | checksum = "750082c65094fbcc4baf9ba31583ce9a8bb7f52cadfb96f6164b1bc7f922f32b" 177 | dependencies = [ 178 | "az", 179 | "byteorder", 180 | "embedded-graphics-core", 181 | "float-cmp", 182 | "micromath 1.1.1", 183 | ] 184 | 185 | [[package]] 186 | name = "embedded-graphics-core" 187 | version = "0.3.3" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | checksum = "b8b1239db5f3eeb7e33e35bd10bd014e7b2537b17e071f726a09351431337cfa" 190 | dependencies = [ 191 | "az", 192 | "byteorder", 193 | ] 194 | 195 | [[package]] 196 | name = "embedded-hal" 197 | version = "0.2.7" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff" 200 | dependencies = [ 201 | "nb 0.1.3", 202 | "void", 203 | ] 204 | 205 | [[package]] 206 | name = "embedded-text" 207 | version = "0.5.0" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | checksum = "ce4010b774f36bf6bf1497500dc8299c99c3775c83719dd1734b8b66b13f205c" 210 | dependencies = [ 211 | "az", 212 | "embedded-graphics", 213 | "object-chain", 214 | ] 215 | 216 | [[package]] 217 | name = "float-cmp" 218 | version = "0.8.0" 219 | source = "registry+https://github.com/rust-lang/crates.io-index" 220 | checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4" 221 | dependencies = [ 222 | "num-traits", 223 | ] 224 | 225 | [[package]] 226 | name = "fugit" 227 | version = "0.3.6" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "7ab17bb279def6720d058cb6c052249938e7f99260ab534879281a95367a87e5" 230 | dependencies = [ 231 | "gcd", 232 | ] 233 | 234 | [[package]] 235 | name = "fugit-timer" 236 | version = "0.1.3" 237 | source = "registry+https://github.com/rust-lang/crates.io-index" 238 | checksum = "d9607bfc4c388f9d629704f56ede4a007546cad417b3bcd6fc7c87dc7edce04a" 239 | dependencies = [ 240 | "fugit", 241 | "nb 1.1.0", 242 | ] 243 | 244 | [[package]] 245 | name = "gcd" 246 | version = "2.3.0" 247 | source = "registry+https://github.com/rust-lang/crates.io-index" 248 | checksum = "1d758ba1b47b00caf47f24925c0074ecb20d6dfcffe7f6d53395c0465674841a" 249 | 250 | [[package]] 251 | name = "generic-array" 252 | version = "0.12.4" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" 255 | dependencies = [ 256 | "typenum", 257 | ] 258 | 259 | [[package]] 260 | name = "generic-array" 261 | version = "0.13.3" 262 | source = "registry+https://github.com/rust-lang/crates.io-index" 263 | checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309" 264 | dependencies = [ 265 | "typenum", 266 | ] 267 | 268 | [[package]] 269 | name = "generic-array" 270 | version = "0.14.7" 271 | source = "registry+https://github.com/rust-lang/crates.io-index" 272 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 273 | dependencies = [ 274 | "typenum", 275 | "version_check", 276 | ] 277 | 278 | [[package]] 279 | name = "hash32" 280 | version = "0.2.1" 281 | source = "registry+https://github.com/rust-lang/crates.io-index" 282 | checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" 283 | dependencies = [ 284 | "byteorder", 285 | ] 286 | 287 | [[package]] 288 | name = "heapless" 289 | version = "0.7.16" 290 | source = "registry+https://github.com/rust-lang/crates.io-index" 291 | checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" 292 | dependencies = [ 293 | "atomic-polyfill", 294 | "hash32", 295 | "rustc_version 0.4.0", 296 | "spin", 297 | "stable_deref_trait", 298 | ] 299 | 300 | [[package]] 301 | name = "lock_api" 302 | version = "0.4.9" 303 | source = "registry+https://github.com/rust-lang/crates.io-index" 304 | checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" 305 | dependencies = [ 306 | "autocfg", 307 | "scopeguard", 308 | ] 309 | 310 | [[package]] 311 | name = "micromath" 312 | version = "1.1.1" 313 | source = "registry+https://github.com/rust-lang/crates.io-index" 314 | checksum = "bc4010833aea396656c2f91ee704d51a6f1329ec2ab56ffd00bfd56f7481ea94" 315 | 316 | [[package]] 317 | name = "micromath" 318 | version = "2.0.0" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | checksum = "39617bc909d64b068dcffd0e3e31679195b5576d0c83fadc52690268cc2b2b55" 321 | 322 | [[package]] 323 | name = "mipidsi" 324 | version = "0.2.1" 325 | source = "git+https://github.com/almindor/mipidsi?rev=0d66e68#0d66e6899f0a758aa85785399755c4fe883a5ffb" 326 | dependencies = [ 327 | "display-interface", 328 | "embedded-graphics-core", 329 | "embedded-hal", 330 | "heapless", 331 | "nb 1.1.0", 332 | ] 333 | 334 | [[package]] 335 | name = "nb" 336 | version = "0.1.3" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f" 339 | dependencies = [ 340 | "nb 1.1.0", 341 | ] 342 | 343 | [[package]] 344 | name = "nb" 345 | version = "1.1.0" 346 | source = "registry+https://github.com/rust-lang/crates.io-index" 347 | checksum = "8d5439c4ad607c3c23abf66de8c8bf57ba8adcd1f129e699851a6e43935d339d" 348 | 349 | [[package]] 350 | name = "num-derive" 351 | version = "0.3.3" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 354 | dependencies = [ 355 | "proc-macro2", 356 | "quote", 357 | "syn", 358 | ] 359 | 360 | [[package]] 361 | name = "num-traits" 362 | version = "0.2.15" 363 | source = "registry+https://github.com/rust-lang/crates.io-index" 364 | checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" 365 | dependencies = [ 366 | "autocfg", 367 | ] 368 | 369 | [[package]] 370 | name = "nw-board-support" 371 | version = "0.0.1" 372 | dependencies = [ 373 | "cortex-m 0.7.7", 374 | "embedded-graphics", 375 | "embedded-hal", 376 | "embedded-text", 377 | "fugit", 378 | "heapless", 379 | "mipidsi", 380 | "num-derive", 381 | "num-traits", 382 | "stm32-usbd", 383 | "stm32f7xx-hal", 384 | "usb-device", 385 | ] 386 | 387 | [[package]] 388 | name = "nw-bootloader" 389 | version = "0.0.1" 390 | dependencies = [ 391 | "cortex-m 0.7.7", 392 | "cortex-m-rt", 393 | "cortex-m-semihosting", 394 | "embedded-hal", 395 | "heapless", 396 | "nw-board-support", 397 | "rtt-target", 398 | "usb-device", 399 | "usbd-dfu", 400 | ] 401 | 402 | [[package]] 403 | name = "object-chain" 404 | version = "0.1.3" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | checksum = "41af26158b0f5530f7b79955006c2727cd23d0d8e7c3109dc316db0a919784dd" 407 | 408 | [[package]] 409 | name = "proc-macro2" 410 | version = "1.0.56" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" 413 | dependencies = [ 414 | "unicode-ident", 415 | ] 416 | 417 | [[package]] 418 | name = "quote" 419 | version = "1.0.27" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | checksum = "8f4f29d145265ec1c483c7c654450edde0bfe043d3938d6972630663356d9500" 422 | dependencies = [ 423 | "proc-macro2", 424 | ] 425 | 426 | [[package]] 427 | name = "rand_core" 428 | version = "0.6.4" 429 | source = "registry+https://github.com/rust-lang/crates.io-index" 430 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 431 | 432 | [[package]] 433 | name = "rtt-target" 434 | version = "0.3.1" 435 | source = "registry+https://github.com/rust-lang/crates.io-index" 436 | checksum = "065d6058bb1204f51a562a67209e1817cf714759d5cf845aa45c75fa7b0b9d9b" 437 | dependencies = [ 438 | "cortex-m 0.7.7", 439 | "ufmt-write", 440 | ] 441 | 442 | [[package]] 443 | name = "rustc_version" 444 | version = "0.2.3" 445 | source = "registry+https://github.com/rust-lang/crates.io-index" 446 | checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 447 | dependencies = [ 448 | "semver 0.9.0", 449 | ] 450 | 451 | [[package]] 452 | name = "rustc_version" 453 | version = "0.4.0" 454 | source = "registry+https://github.com/rust-lang/crates.io-index" 455 | checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" 456 | dependencies = [ 457 | "semver 1.0.17", 458 | ] 459 | 460 | [[package]] 461 | name = "rustworks" 462 | version = "0.0.1" 463 | dependencies = [ 464 | "cortex-m 0.7.7", 465 | "cortex-m-rt", 466 | "cortex-m-semihosting", 467 | "embedded-hal", 468 | "nw-board-support", 469 | "rtt-target", 470 | ] 471 | 472 | [[package]] 473 | name = "scopeguard" 474 | version = "1.1.0" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 477 | 478 | [[package]] 479 | name = "semver" 480 | version = "0.9.0" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 483 | dependencies = [ 484 | "semver-parser", 485 | ] 486 | 487 | [[package]] 488 | name = "semver" 489 | version = "1.0.17" 490 | source = "registry+https://github.com/rust-lang/crates.io-index" 491 | checksum = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed" 492 | 493 | [[package]] 494 | name = "semver-parser" 495 | version = "0.7.0" 496 | source = "registry+https://github.com/rust-lang/crates.io-index" 497 | checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 498 | 499 | [[package]] 500 | name = "spin" 501 | version = "0.9.8" 502 | source = "registry+https://github.com/rust-lang/crates.io-index" 503 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 504 | dependencies = [ 505 | "lock_api", 506 | ] 507 | 508 | [[package]] 509 | name = "stable_deref_trait" 510 | version = "1.2.0" 511 | source = "registry+https://github.com/rust-lang/crates.io-index" 512 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 513 | 514 | [[package]] 515 | name = "stm32-fmc" 516 | version = "0.2.4" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "cf16ee9bd5de754482883cf3eac9a49eb862baf1420f55ce408e001705e9ae74" 519 | dependencies = [ 520 | "embedded-hal", 521 | ] 522 | 523 | [[package]] 524 | name = "stm32-usbd" 525 | version = "0.6.0" 526 | source = "registry+https://github.com/rust-lang/crates.io-index" 527 | checksum = "c6c94998f166d66b210a164648a0b7866428d8f1e0740bf8a4c5edd89d4750c1" 528 | dependencies = [ 529 | "cortex-m 0.7.7", 530 | "usb-device", 531 | "vcell", 532 | ] 533 | 534 | [[package]] 535 | name = "stm32f7" 536 | version = "0.14.0" 537 | source = "registry+https://github.com/rust-lang/crates.io-index" 538 | checksum = "b7c0afd45eee4e6d73c2146862ae899912a18ece42e392d095c4a449db99e543" 539 | dependencies = [ 540 | "bare-metal 1.0.0", 541 | "cortex-m 0.7.7", 542 | "cortex-m-rt", 543 | "vcell", 544 | ] 545 | 546 | [[package]] 547 | name = "stm32f7xx-hal" 548 | version = "0.7.0" 549 | source = "git+https://github.com/stm32-rs/stm32f7xx-hal?rev=62a1c8a#62a1c8af6296ab60187e78058133c8f21c38888d" 550 | dependencies = [ 551 | "as-slice 0.2.1", 552 | "bare-metal 1.0.0", 553 | "bitflags", 554 | "bxcan", 555 | "cast", 556 | "cortex-m 0.7.7", 557 | "cortex-m-rt", 558 | "display-interface", 559 | "embedded-hal", 560 | "fugit", 561 | "fugit-timer", 562 | "micromath 2.0.0", 563 | "nb 1.1.0", 564 | "rand_core", 565 | "stm32-fmc", 566 | "stm32f7", 567 | "synopsys-usb-otg", 568 | "time", 569 | "void", 570 | ] 571 | 572 | [[package]] 573 | name = "syn" 574 | version = "1.0.109" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 577 | dependencies = [ 578 | "proc-macro2", 579 | "quote", 580 | "unicode-ident", 581 | ] 582 | 583 | [[package]] 584 | name = "synopsys-usb-otg" 585 | version = "0.2.4" 586 | source = "registry+https://github.com/rust-lang/crates.io-index" 587 | checksum = "d1216cb0fe29f65bfffe03c364640202eed1291d85d2f62bbadbe670106786e5" 588 | dependencies = [ 589 | "cortex-m 0.6.7", 590 | "usb-device", 591 | "vcell", 592 | ] 593 | 594 | [[package]] 595 | name = "time" 596 | version = "0.3.21" 597 | source = "registry+https://github.com/rust-lang/crates.io-index" 598 | checksum = "8f3403384eaacbca9923fa06940178ac13e4edb725486d70e8e15881d0c836cc" 599 | dependencies = [ 600 | "time-core", 601 | ] 602 | 603 | [[package]] 604 | name = "time-core" 605 | version = "0.1.1" 606 | source = "registry+https://github.com/rust-lang/crates.io-index" 607 | checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" 608 | 609 | [[package]] 610 | name = "typenum" 611 | version = "1.16.0" 612 | source = "registry+https://github.com/rust-lang/crates.io-index" 613 | checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" 614 | 615 | [[package]] 616 | name = "ufmt-write" 617 | version = "0.1.0" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | checksum = "e87a2ed6b42ec5e28cc3b94c09982969e9227600b2e3dcbc1db927a84c06bd69" 620 | 621 | [[package]] 622 | name = "unicode-ident" 623 | version = "1.0.8" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" 626 | 627 | [[package]] 628 | name = "usb-device" 629 | version = "0.2.9" 630 | source = "registry+https://github.com/rust-lang/crates.io-index" 631 | checksum = "1f6cc3adc849b5292b4075fc0d5fdcf2f24866e88e336dd27a8943090a520508" 632 | 633 | [[package]] 634 | name = "usbd-dfu" 635 | version = "0.2.0" 636 | source = "registry+https://github.com/rust-lang/crates.io-index" 637 | checksum = "4ec4d1eebd92f4805553a45947d87b0cf9ba53960040a2fa5ed2abcad2ae62e5" 638 | dependencies = [ 639 | "usb-device", 640 | ] 641 | 642 | [[package]] 643 | name = "vcell" 644 | version = "0.1.3" 645 | source = "registry+https://github.com/rust-lang/crates.io-index" 646 | checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002" 647 | 648 | [[package]] 649 | name = "version_check" 650 | version = "0.9.4" 651 | source = "registry+https://github.com/rust-lang/crates.io-index" 652 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 653 | 654 | [[package]] 655 | name = "void" 656 | version = "1.0.2" 657 | source = "registry+https://github.com/rust-lang/crates.io-index" 658 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 659 | 660 | [[package]] 661 | name = "volatile-register" 662 | version = "0.2.1" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | checksum = "9ee8f19f9d74293faf70901bc20ad067dc1ad390d2cbf1e3f75f721ffee908b6" 665 | dependencies = [ 666 | "vcell", 667 | ] 668 | 669 | [[patch.unused]] 670 | name = "citrus-cas" 671 | version = "0.0.1" 672 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["board-support", "bootloader", "os"] 3 | 4 | [profile.dev.package."*"] 5 | opt-level = "s" 6 | 7 | [profile.dev] 8 | opt-level = "z" 9 | debug = 1 10 | debug-assertions = false 11 | overflow-checks = false 12 | lto = true 13 | panic = 'abort' 14 | incremental = false 15 | codegen-units = 1 16 | rpath = false 17 | 18 | [profile.release.package."*"] 19 | opt-level = "s" 20 | 21 | [profile.release] 22 | codegen-units = 1 23 | debug = true 24 | panic = "abort" 25 | opt-level = "z" 26 | lto = true 27 | 28 | [patch.'https://github.com/nw-rs/board-support.git'] 29 | nw-board-support = { path = "./board-support" } 30 | 31 | [patch.'https://github.com/nw-rs/citrus-cas.git'] 32 | citrus-cas = { path = "./citrus-cas" } 33 | 34 | [patch.'https://github.com/nw-rs/bootloader.git'] 35 | nw-bootloader = { path = "./bootloader" } 36 | 37 | -------------------------------------------------------------------------------- /Embed.toml: -------------------------------------------------------------------------------- 1 | [default.probe] 2 | protocol = "Swd" 3 | speed = 2000 4 | 5 | [default.flashing] 6 | enabled = true 7 | 8 | [default.reset] 9 | enabled = true 10 | halt_afterwards = true 11 | 12 | [default.general] 13 | chip = "stm32f730V8Tx" 14 | chip_descriptions = ["stm32f730v8t6.yaml"] 15 | 16 | [default.rtt] 17 | enabled = false 18 | timeout = 2 19 | show_timestamps = true 20 | 21 | [default.gdb] 22 | enabled = true 23 | gdb_connection_string = "localhost:1338" 24 | 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 nw-rs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |