aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIan McIntyre <me@mciantyre.dev>2025-06-14 10:27:32 -0400
committerIan McIntyre <me@mciantyre.dev>2025-09-16 07:48:07 -0400
commite244012738c0d431ff6c791325f2d3f9a3dfdeb0 (patch)
tree5c3f648957c65ef78d47f71d3e42af134c0d04f6 /src
parent9728ac5305cfe259115858f0bc49985a0ad7cec4 (diff)
Catch target-host version mismatch
Attach the version information in a symbol that's generated by the host. Then, expect the same symbol exists in the embedded target. If the linker can't resolve this, then the host and target should be incompatible. I'm overloading the __imxrt_family symbol for this.
Diffstat (limited to 'src')
-rw-r--r--src/host.rs2
-rw-r--r--src/target.rs2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/host.rs b/src/host.rs
index 2598d50..902208a 100644
--- a/src/host.rs
+++ b/src/host.rs
@@ -624,7 +624,7 @@ impl RuntimeBuilder {
)?;
// The target runtime looks at this value to predicate some pre-init instructions.
// Could be helpful for binary identification, but it's an undocumented feature.
- writeln!(writer, "__imxrt_family = {};", self.family.id(),)?;
+ writeln!(writer, "__imxrt_rt_v0.2 = {};", self.family.id(),)?;
let link_x = include_bytes!("host/imxrt-link.x");
writer.write_all(link_x)?;
diff --git a/src/target.rs b/src/target.rs
index d0e2223..697e591 100644
--- a/src/target.rs
+++ b/src/target.rs
@@ -40,7 +40,7 @@ global_asm! {r#"
.cfi_startproc
__pre_init:
- ldr r0, =__imxrt_family @ Need to know which chip family we're initializing.
+ ldr r0, =__imxrt_rt_v0.2 @ Need to know which chip family we're initializing.
ldr r1, =1180
cmp r0, r1 @ Is this an 1180?
beq flexram_1180