From 4ad50ec94fe0faf543b28d829b9bb20b1e9b138a Mon Sep 17 00:00:00 2001 From: D4VID Date: Tue, 3 Jun 2025 18:59:12 +0200 Subject: [PATCH] Fix memory layout --- lwcpu/src/lib.rs | 2 +- test/build.rs | 14 ++++++++++++++ test/memory.x | 6 +++--- 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 test/build.rs diff --git a/lwcpu/src/lib.rs b/lwcpu/src/lib.rs index 62fbdcb..d7a9d21 100644 --- a/lwcpu/src/lib.rs +++ b/lwcpu/src/lib.rs @@ -2,7 +2,7 @@ use core::ptr::{read_volatile, write_volatile}; -const BASE_POINTER: u32 = 0x2000_0000; +const BASE_POINTER: u32 = 0x1000_0000; const NUMBER_DISPLAY_OFFSET: u32 = 0x00; const RANDOM_NUMBER_OFFSET: u32 = 0x04; diff --git a/test/build.rs b/test/build.rs new file mode 100644 index 0000000..c941735 --- /dev/null +++ b/test/build.rs @@ -0,0 +1,14 @@ +// build.rs +use std::env; +use std::fs; +use std::path::PathBuf; + +fn main() { + let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); + + // Put the linker script somewhere the linker can find it. + fs::write(out_dir.join("memory.x"), include_bytes!("memory.x")).unwrap(); + println!("cargo:rustc-link-search={}", out_dir.display()); + println!("cargo:rerun-if-changed=memory.x"); + println!("cargo:rerun-if-changed=build.rs"); +} diff --git a/test/memory.x b/test/memory.x index a92306f..1c24f2c 100644 --- a/test/memory.x +++ b/test/memory.x @@ -1,9 +1,9 @@ MEMORY { INST : ORIGIN = 0x00000000, LENGTH = 256K - IO : ORIGIN = 0x20000000, LENGTH = 1K - CONST : ORIGIN = 0x40000000, LENGTH = 16K - RAM : ORIGIN = 0x80000000, LENGTH = 16K + IO : ORIGIN = 0x10000000, LENGTH = 1K + CONST : ORIGIN = 0x20000000, LENGTH = 16K + RAM : ORIGIN = 0x40000000, LENGTH = 16K } REGION_ALIAS("REGION_TEXT", INST);