Skip to content

Commit 62dec14

Browse files
committed
test(port_arm_m): support a new target qemu_mps2_an505 (MPS2+ AN505 on QEMU) and its variations
1 parent 408cb7a commit 62dec14

File tree

3 files changed

+97
-7
lines changed

3 files changed

+97
-7
lines changed

src/constance_port_arm_m_test_driver/.cargo/config.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,18 @@ rustflags = [
1717
rustflags = [
1818
"-C", "link-arg=-Tlink.x",
1919
]
20+
21+
[target.thumbv8m.base-none-eabi]
22+
rustflags = [
23+
"-C", "link-arg=-Tlink.x",
24+
]
25+
26+
[target.thumbv8m.main-none-eabi]
27+
rustflags = [
28+
"-C", "link-arg=-Tlink.x",
29+
]
30+
31+
[target.thumbv8m.main-none-eabihf]
32+
rustflags = [
33+
"-C", "link-arg=-Tlink.x",
34+
]

src/constance_port_arm_m_test_runner/src/targets.rs

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,38 @@ pub static TARGETS: &[(&str, &dyn Target)] = &[
4747
"qemu_mps2_an385_v6m",
4848
&OverrideTargetTriple("thumbv6m-none-eabi", QemuMps2An385),
4949
),
50-
// TODO: Add an emulated target of `thumbv7em-none-eabihf`
50+
(
51+
"qemu_mps2_an505",
52+
&OverrideTargetTriple("thumbv8m.main-none-eabihf", QemuMps2An505),
53+
),
54+
(
55+
"qemu_mps2_an505_v8mml",
56+
&OverrideTargetTriple("thumbv8m.main-none-eabi", QemuMps2An505),
57+
),
58+
(
59+
"qemu_mps2_an505_v8mbl",
60+
&OverrideTargetTriple("thumbv8m.base-none-eabi", QemuMps2An505),
61+
),
62+
(
63+
"qemu_mps2_an505_v7em_hf",
64+
&OverrideTargetTriple("thumbv7em-none-eabihf", QemuMps2An505),
65+
),
66+
(
67+
"qemu_mps2_an505_v7m_hf",
68+
&OverrideTargetTriple("thumbv7m-none-eabihf", QemuMps2An505),
69+
),
70+
(
71+
"qemu_mps2_an505_v7em",
72+
&OverrideTargetTriple("thumbv7em-none-eabi", QemuMps2An505),
73+
),
74+
(
75+
"qemu_mps2_an505_v7m",
76+
&OverrideTargetTriple("thumbv7m-none-eabi", QemuMps2An505),
77+
),
78+
(
79+
"qemu_mps2_an505_v6m",
80+
&OverrideTargetTriple("thumbv6m-none-eabi", QemuMps2An505),
81+
),
5182
];
5283

5384
pub struct NucleoF401re;
@@ -125,7 +156,50 @@ impl Target for QemuMps2An385 {
125156
fn connect(
126157
&self,
127158
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DebugProbe>, Box<dyn Error + Send>>>>> {
128-
Box::pin(async { Ok(Box::new(qemu::QemuDebugProbe::new()) as Box<dyn DebugProbe>) })
159+
Box::pin(async {
160+
Ok(
161+
Box::new(qemu::QemuDebugProbe::new(&["-machine", "mps2-an385"]))
162+
as Box<dyn DebugProbe>,
163+
)
164+
})
165+
}
166+
}
167+
168+
pub struct QemuMps2An505;
169+
170+
impl Target for QemuMps2An505 {
171+
fn target_triple(&self) -> &str {
172+
"thumbv8m-none-eabihf"
173+
}
174+
175+
fn cargo_features(&self) -> &[&str] {
176+
&["output-semihosting"]
177+
}
178+
179+
fn memory_layout_script(&self) -> String {
180+
"
181+
MEMORY
182+
{
183+
/* ZBT SRAM (SSRAM1) Secure alias */
184+
FLASH : ORIGIN = 0x10000000, LENGTH = 4096k
185+
/* ZBT SRAM (SSRAM2 and SSRAM3) Secure alias */
186+
RAM : ORIGIN = 0x38000000, LENGTH = 4096K
187+
}
188+
189+
_stack_start = ORIGIN(RAM) + LENGTH(RAM);
190+
"
191+
.to_owned()
192+
}
193+
194+
fn connect(
195+
&self,
196+
) -> Pin<Box<dyn Future<Output = Result<Box<dyn DebugProbe>, Box<dyn Error + Send>>>>> {
197+
Box::pin(async {
198+
Ok(
199+
Box::new(qemu::QemuDebugProbe::new(&["-machine", "mps2-an505"]))
200+
as Box<dyn DebugProbe>,
201+
)
202+
})
129203
}
130204
}
131205

src/constance_port_arm_m_test_runner/src/targets/qemu.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ use tokio::{io::AsyncRead, process::Child};
1111
use super::{DebugProbe, DynAsyncRead};
1212
use crate::subprocess;
1313

14-
pub(super) struct QemuDebugProbe {}
14+
pub(super) struct QemuDebugProbe {
15+
qemu_args: &'static [&'static str],
16+
}
1517

1618
impl QemuDebugProbe {
17-
pub(super) fn new() -> Self {
18-
Self {}
19+
pub(super) fn new(qemu_args: &'static [&'static str]) -> Self {
20+
Self { qemu_args }
1921
}
2022
}
2123

@@ -27,9 +29,8 @@ impl DebugProbe for QemuDebugProbe {
2729
let result = subprocess::CmdBuilder::new("qemu-system-arm")
2830
.arg("-kernel")
2931
.arg(exe)
32+
.args(self.qemu_args)
3033
.args(&[
31-
"-machine",
32-
"mps2-an385",
3334
"-nographic",
3435
"-d",
3536
"guest_errors",

0 commit comments

Comments
 (0)