소스 검색

firmware: Add an empty cargo project.

Mathias Gottschlag 4 년 전
부모
커밋
61bc84944d
8개의 변경된 파일538개의 추가작업 그리고 0개의 파일을 삭제
  1. 9
    0
      firmware/.cargo/config
  2. 407
    0
      firmware/Cargo.lock
  3. 12
    0
      firmware/Cargo.toml
  4. 15
    0
      firmware/build.rs
  5. 7
    0
      firmware/memory.x
  6. 6
    0
      firmware/openocd.cfg
  7. 25
    0
      firmware/openocd.gdb
  8. 57
    0
      firmware/src/main.rs

+ 9
- 0
firmware/.cargo/config 파일 보기

@@ -0,0 +1,9 @@
1
+[target.thumbv7em-none-eabihf]
2
+runner = "arm-none-eabi-gdb -x openocd.gdb"
3
+rustflags = [
4
+  "-C", "link-arg=-Tlink.x",
5
+]
6
+
7
+[build]
8
+target = "thumbv7em-none-eabihf"
9
+

+ 407
- 0
firmware/Cargo.lock 파일 보기

@@ -0,0 +1,407 @@
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",
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.4",
23
+ "stable_deref_trait",
24
+]
25
+
26
+[[package]]
27
+name = "autocfg"
28
+version = "1.0.1"
29
+source = "registry+https://github.com/rust-lang/crates.io-index"
30
+checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
31
+
32
+[[package]]
33
+name = "bare-metal"
34
+version = "0.2.5"
35
+source = "registry+https://github.com/rust-lang/crates.io-index"
36
+checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3"
37
+dependencies = [
38
+ "rustc_version",
39
+]
40
+
41
+[[package]]
42
+name = "bitfield"
43
+version = "0.13.2"
44
+source = "registry+https://github.com/rust-lang/crates.io-index"
45
+checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719"
46
+
47
+[[package]]
48
+name = "byteorder"
49
+version = "1.4.3"
50
+source = "registry+https://github.com/rust-lang/crates.io-index"
51
+checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
52
+
53
+[[package]]
54
+name = "cortex-m"
55
+version = "0.6.7"
56
+source = "registry+https://github.com/rust-lang/crates.io-index"
57
+checksum = "9075300b07c6a56263b9b582c214d0ff037b00d45ec9fde1cc711490c56f1bb9"
58
+dependencies = [
59
+ "aligned",
60
+ "bare-metal",
61
+ "bitfield",
62
+ "cortex-m 0.7.3",
63
+ "volatile-register",
64
+]
65
+
66
+[[package]]
67
+name = "cortex-m"
68
+version = "0.7.3"
69
+source = "registry+https://github.com/rust-lang/crates.io-index"
70
+checksum = "2ac919ef424449ec8c08d515590ce15d9262c0ca5f0da5b0c901e971a3b783b3"
71
+dependencies = [
72
+ "bare-metal",
73
+ "bitfield",
74
+ "embedded-hal",
75
+ "volatile-register",
76
+]
77
+
78
+[[package]]
79
+name = "cortex-m-rt"
80
+version = "0.6.15"
81
+source = "registry+https://github.com/rust-lang/crates.io-index"
82
+checksum = "454f278bf469e2de0a4d22ea019d169d8944f86957c8207a39e3f66c32be2fc6"
83
+dependencies = [
84
+ "cortex-m-rt-macros",
85
+ "r0",
86
+]
87
+
88
+[[package]]
89
+name = "cortex-m-rt-macros"
90
+version = "0.6.15"
91
+source = "registry+https://github.com/rust-lang/crates.io-index"
92
+checksum = "c8e3aa52243e26f5922fa522b0814019e0c98fc567e2756d715dce7ad7a81f49"
93
+dependencies = [
94
+ "proc-macro2",
95
+ "quote",
96
+ "syn",
97
+]
98
+
99
+[[package]]
100
+name = "cortex-m-rtic"
101
+version = "0.5.7"
102
+source = "registry+https://github.com/rust-lang/crates.io-index"
103
+checksum = "9845c4c7f7af19e216a2d00345f7f1507b8907b85cd551e403d68baeec342bb3"
104
+dependencies = [
105
+ "cortex-m 0.6.7",
106
+ "cortex-m-rt",
107
+ "cortex-m-rtic-macros",
108
+ "heapless",
109
+ "rtic-core",
110
+ "version_check",
111
+]
112
+
113
+[[package]]
114
+name = "cortex-m-rtic-macros"
115
+version = "0.5.3"
116
+source = "registry+https://github.com/rust-lang/crates.io-index"
117
+checksum = "cc874eda99515b15e67f03562726a530388f454431096d30131051b52b840559"
118
+dependencies = [
119
+ "proc-macro2",
120
+ "quote",
121
+ "rtic-syntax",
122
+ "syn",
123
+]
124
+
125
+[[package]]
126
+name = "cortex-m-semihosting"
127
+version = "0.3.7"
128
+source = "registry+https://github.com/rust-lang/crates.io-index"
129
+checksum = "6bffa6c1454368a6aa4811ae60964c38e6996d397ff8095a8b9211b1c1f749bc"
130
+dependencies = [
131
+ "cortex-m 0.7.3",
132
+]
133
+
134
+[[package]]
135
+name = "embedded-dma"
136
+version = "0.1.2"
137
+source = "registry+https://github.com/rust-lang/crates.io-index"
138
+checksum = "46c8c02e4347a0267ca60813c952017f4c5948c232474c6010a381a337f1bda4"
139
+dependencies = [
140
+ "stable_deref_trait",
141
+]
142
+
143
+[[package]]
144
+name = "embedded-hal"
145
+version = "0.2.5"
146
+source = "registry+https://github.com/rust-lang/crates.io-index"
147
+checksum = "db184d3fa27bc7a2344250394c0264144dfe0bc81a4401801dcb964b8dd172ad"
148
+dependencies = [
149
+ "nb 0.1.3",
150
+ "void",
151
+]
152
+
153
+[[package]]
154
+name = "generic-array"
155
+version = "0.12.4"
156
+source = "registry+https://github.com/rust-lang/crates.io-index"
157
+checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"
158
+dependencies = [
159
+ "typenum",
160
+]
161
+
162
+[[package]]
163
+name = "generic-array"
164
+version = "0.13.3"
165
+source = "registry+https://github.com/rust-lang/crates.io-index"
166
+checksum = "f797e67af32588215eaaab8327027ee8e71b9dd0b2b26996aedf20c030fce309"
167
+dependencies = [
168
+ "typenum",
169
+]
170
+
171
+[[package]]
172
+name = "generic-array"
173
+version = "0.14.4"
174
+source = "registry+https://github.com/rust-lang/crates.io-index"
175
+checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
176
+dependencies = [
177
+ "typenum",
178
+ "version_check",
179
+]
180
+
181
+[[package]]
182
+name = "hash32"
183
+version = "0.1.1"
184
+source = "registry+https://github.com/rust-lang/crates.io-index"
185
+checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc"
186
+dependencies = [
187
+ "byteorder",
188
+]
189
+
190
+[[package]]
191
+name = "hashbrown"
192
+version = "0.11.2"
193
+source = "registry+https://github.com/rust-lang/crates.io-index"
194
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
195
+
196
+[[package]]
197
+name = "heapless"
198
+version = "0.6.1"
199
+source = "registry+https://github.com/rust-lang/crates.io-index"
200
+checksum = "634bd4d29cbf24424d0a4bfcbf80c6960129dc24424752a7d1d1390607023422"
201
+dependencies = [
202
+ "as-slice",
203
+ "generic-array 0.14.4",
204
+ "hash32",
205
+ "stable_deref_trait",
206
+]
207
+
208
+[[package]]
209
+name = "indexmap"
210
+version = "1.7.0"
211
+source = "registry+https://github.com/rust-lang/crates.io-index"
212
+checksum = "bc633605454125dec4b66843673f01c7df2b89479b32e0ed634e43a91cff62a5"
213
+dependencies = [
214
+ "autocfg",
215
+ "hashbrown",
216
+]
217
+
218
+[[package]]
219
+name = "multiesc-firmware"
220
+version = "0.1.0"
221
+dependencies = [
222
+ "cortex-m-rt",
223
+ "cortex-m-rtic",
224
+ "cortex-m-semihosting",
225
+ "panic-semihosting",
226
+ "stm32g4xx-hal",
227
+]
228
+
229
+[[package]]
230
+name = "nb"
231
+version = "0.1.3"
232
+source = "registry+https://github.com/rust-lang/crates.io-index"
233
+checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f"
234
+dependencies = [
235
+ "nb 1.0.0",
236
+]
237
+
238
+[[package]]
239
+name = "nb"
240
+version = "1.0.0"
241
+source = "registry+https://github.com/rust-lang/crates.io-index"
242
+checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae"
243
+
244
+[[package]]
245
+name = "panic-semihosting"
246
+version = "0.5.6"
247
+source = "registry+https://github.com/rust-lang/crates.io-index"
248
+checksum = "c3d55dedd501dfd02514646e0af4d7016ce36bc12ae177ef52056989966a1eec"
249
+dependencies = [
250
+ "cortex-m 0.7.3",
251
+ "cortex-m-semihosting",
252
+]
253
+
254
+[[package]]
255
+name = "paste"
256
+version = "1.0.5"
257
+source = "registry+https://github.com/rust-lang/crates.io-index"
258
+checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58"
259
+
260
+[[package]]
261
+name = "proc-macro2"
262
+version = "1.0.28"
263
+source = "registry+https://github.com/rust-lang/crates.io-index"
264
+checksum = "5c7ed8b8c7b886ea3ed7dde405212185f423ab44682667c8c6dd14aa1d9f6612"
265
+dependencies = [
266
+ "unicode-xid",
267
+]
268
+
269
+[[package]]
270
+name = "quote"
271
+version = "1.0.9"
272
+source = "registry+https://github.com/rust-lang/crates.io-index"
273
+checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
274
+dependencies = [
275
+ "proc-macro2",
276
+]
277
+
278
+[[package]]
279
+name = "r0"
280
+version = "0.2.2"
281
+source = "registry+https://github.com/rust-lang/crates.io-index"
282
+checksum = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f"
283
+
284
+[[package]]
285
+name = "rtic-core"
286
+version = "0.3.1"
287
+source = "registry+https://github.com/rust-lang/crates.io-index"
288
+checksum = "8bd58a6949de8ff797a346a28d9f13f7b8f54fa61bb5e3cb0985a4efb497a5ef"
289
+
290
+[[package]]
291
+name = "rtic-syntax"
292
+version = "0.4.0"
293
+source = "registry+https://github.com/rust-lang/crates.io-index"
294
+checksum = "8152fcaa845720d61e6cc570548b89144c2c307f18a480bbd97e55e9f6eeff04"
295
+dependencies = [
296
+ "indexmap",
297
+ "proc-macro2",
298
+ "syn",
299
+]
300
+
301
+[[package]]
302
+name = "rustc_version"
303
+version = "0.2.3"
304
+source = "registry+https://github.com/rust-lang/crates.io-index"
305
+checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
306
+dependencies = [
307
+ "semver",
308
+]
309
+
310
+[[package]]
311
+name = "semver"
312
+version = "0.9.0"
313
+source = "registry+https://github.com/rust-lang/crates.io-index"
314
+checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
315
+dependencies = [
316
+ "semver-parser",
317
+]
318
+
319
+[[package]]
320
+name = "semver-parser"
321
+version = "0.7.0"
322
+source = "registry+https://github.com/rust-lang/crates.io-index"
323
+checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
324
+
325
+[[package]]
326
+name = "stable_deref_trait"
327
+version = "1.2.0"
328
+source = "registry+https://github.com/rust-lang/crates.io-index"
329
+checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
330
+
331
+[[package]]
332
+name = "stm32g4"
333
+version = "0.13.0"
334
+source = "registry+https://github.com/rust-lang/crates.io-index"
335
+checksum = "0154d1360931c867cf50186eb5b35c2838b57670ecb8fc8d6522a8662815cf5d"
336
+dependencies = [
337
+ "bare-metal",
338
+ "cortex-m 0.7.3",
339
+ "cortex-m-rt",
340
+ "vcell",
341
+]
342
+
343
+[[package]]
344
+name = "stm32g4xx-hal"
345
+version = "0.0.0"
346
+source = "git+https://github.com/stm32-rs/stm32g4xx-hal.git#e52418e7c5215852edf06d1c8f77e5091f28df36"
347
+dependencies = [
348
+ "bare-metal",
349
+ "cortex-m 0.7.3",
350
+ "embedded-dma",
351
+ "embedded-hal",
352
+ "nb 0.1.3",
353
+ "paste",
354
+ "stable_deref_trait",
355
+ "stm32g4",
356
+ "void",
357
+]
358
+
359
+[[package]]
360
+name = "syn"
361
+version = "1.0.74"
362
+source = "registry+https://github.com/rust-lang/crates.io-index"
363
+checksum = "1873d832550d4588c3dbc20f01361ab00bfe741048f71e3fecf145a7cc18b29c"
364
+dependencies = [
365
+ "proc-macro2",
366
+ "quote",
367
+ "unicode-xid",
368
+]
369
+
370
+[[package]]
371
+name = "typenum"
372
+version = "1.13.0"
373
+source = "registry+https://github.com/rust-lang/crates.io-index"
374
+checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
375
+
376
+[[package]]
377
+name = "unicode-xid"
378
+version = "0.2.2"
379
+source = "registry+https://github.com/rust-lang/crates.io-index"
380
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
381
+
382
+[[package]]
383
+name = "vcell"
384
+version = "0.1.3"
385
+source = "registry+https://github.com/rust-lang/crates.io-index"
386
+checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002"
387
+
388
+[[package]]
389
+name = "version_check"
390
+version = "0.9.3"
391
+source = "registry+https://github.com/rust-lang/crates.io-index"
392
+checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
393
+
394
+[[package]]
395
+name = "void"
396
+version = "1.0.2"
397
+source = "registry+https://github.com/rust-lang/crates.io-index"
398
+checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
399
+
400
+[[package]]
401
+name = "volatile-register"
402
+version = "0.2.0"
403
+source = "registry+https://github.com/rust-lang/crates.io-index"
404
+checksum = "0d67cb4616d99b940db1d6bd28844ff97108b498a6ca850e5b6191a532063286"
405
+dependencies = [
406
+ "vcell",
407
+]

+ 12
- 0
firmware/Cargo.toml 파일 보기

@@ -0,0 +1,12 @@
1
+[package]
2
+name = "multiesc-firmware"
3
+version = "0.1.0"
4
+authors = ["Mathias Gottschlag <mgottschlag@gmail.com>"]
5
+edition = "2018"
6
+
7
+[dependencies]
8
+cortex-m-rt = "0.6.14"
9
+cortex-m-rtic = "0.5.7"
10
+cortex-m-semihosting = "0.3.7"
11
+panic-semihosting = "0.5.6"
12
+stm32g4xx-hal = { git = "https://github.com/stm32-rs/stm32g4xx-hal.git", features = ["stm32g474", "rt"] }

+ 15
- 0
firmware/build.rs 파일 보기

@@ -0,0 +1,15 @@
1
+use std::env;
2
+use std::fs;
3
+use std::io::Write;
4
+use std::path::PathBuf;
5
+
6
+fn main() {
7
+    // Put the linker script somewhere the linker can find it
8
+    let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap());
9
+    fs::File::create(out_dir.join("memory.x"))
10
+        .unwrap()
11
+        .write_all(include_bytes!("memory.x"))
12
+        .unwrap();
13
+    println!("cargo:rustc-link-search={}", out_dir.display());
14
+    println!("cargo:rerun-if-changed=memory.x");
15
+}

+ 7
- 0
firmware/memory.x 파일 보기

@@ -0,0 +1,7 @@
1
+/* STM32G474RE */
2
+MEMORY
3
+{
4
+  FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 512K
5
+  RAM  (rwx) : ORIGIN = 0x20000000, LENGTH =  96K
6
+  SRAM2 (rw) : ORIGIN = 0x10000000, LENGTH =  32K
7
+}

+ 6
- 0
firmware/openocd.cfg 파일 보기

@@ -0,0 +1,6 @@
1
+source [find interface/stlink.cfg]
2
+source [find target/stm32g4x.cfg]
3
+targets
4
+# reset halt
5
+# halt
6
+

+ 25
- 0
firmware/openocd.gdb 파일 보기

@@ -0,0 +1,25 @@
1
+set history save on
2
+set confirm off
3
+target extended-remote :3333
4
+monitor arm semihosting enable
5
+monitor reset halt
6
+
7
+# print demangled symbols
8
+set print asm-demangle on
9
+
10
+# set backtrace limit to not have infinite backtrace loops
11
+set backtrace limit 32
12
+
13
+# detect unhandled exceptions, hard faults and panics
14
+break DefaultHandler
15
+break HardFault
16
+#break rust_begin_unwind
17
+
18
+#break main
19
+
20
+load
21
+continue
22
+# monitor verify
23
+# monitor reset
24
+# quit
25
+

+ 57
- 0
firmware/src/main.rs 파일 보기

@@ -0,0 +1,57 @@
1
+#![no_main]
2
+#![no_std]
3
+
4
+use panic_semihosting as _;
5
+use stm32g4xx_hal::cortex_m::asm;
6
+
7
+#[rtic::app(device = stm32g4xx_hal::stm32, peripherals = true)]
8
+const APP: () = {
9
+    struct Resources {
10
+        tbd: i32,
11
+        // TODO
12
+    }
13
+
14
+    #[init]
15
+    fn init(_ctx: init::Context) -> init::LateResources {
16
+        // TODO
17
+        init::LateResources { tbd: 0 }
18
+    }
19
+
20
+    #[idle]
21
+    fn idle(_: idle::Context) -> ! {
22
+        loop {
23
+            asm::nop()
24
+        }
25
+    }
26
+};
27
+
28
+/*enum Motor {
29
+    Motor1,
30
+    Motor2,
31
+    Motor3,
32
+    Motor4,
33
+}
34
+
35
+struct Motors {}
36
+
37
+impl Motors {
38
+    fn init() {
39
+        // TODO
40
+    }
41
+
42
+    fn set_rpm(motor: Motor, rpm: Option<i32>) {
43
+        // TODO
44
+    }
45
+
46
+    fn get_rpm(motor: Motor) -> Option<i32> {
47
+        // TODO
48
+    }
49
+
50
+    fn get_avg_current(motor: Motor) -> u32 {
51
+        // TODO
52
+    }
53
+}
54
+
55
+fn main() {
56
+    println!("Hello, world!");
57
+}*/

Loading…
취소
저장