From a0d230c5ddf6c61dbe256bc81d40b1d9caa49b64 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Tue, 3 Feb 2026 06:40:33 +0100 Subject: [PATCH] changes memeory map to be everything within the first 2GB --- fw/hello-world/prebuilt/hello.elf | Bin 66276 -> 63716 bytes src/vp/system.cpp | 12 ++++++------ src/vp/system.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fw/hello-world/prebuilt/hello.elf b/fw/hello-world/prebuilt/hello.elf index 416242266bdf2f932188900192ae481d1a8ac09a..624cca0c999dfe1ea8c67199f63c482d85b0cc25 100755 GIT binary patch literal 63716 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 YI>7a!CiTa=prPHpBV&H45lXfD2beGvi~s-t diff --git a/src/vp/system.cpp b/src/vp/system.cpp index d4e7782..3f142ad 100644 --- a/src/vp/system.cpp +++ b/src/vp/system.cpp @@ -39,12 +39,12 @@ system::system(sc_core::sc_module_name nm) core_complex.mtime_i(mtime_s); core_complex.clint_irq_i(clint_int_s); - ahb_router.bind_target(mem_dram.target, 0, 0x00000000, mem_dram.getSize()); - ahb_router.bind_target(mem_ram.target, 1, 0xE0000000, mem_ram.getSize()); - ahb_router.bind_target(apbBridge.target[0], 2, 0xF0000000, 16_MB); - ahb_router.bind_target(eth0.socket, 3, 0xF1000000, 4_KiB); - ahb_router.bind_target(eth1.socket, 4, 0xF1001000, 4_KiB); - ahb_router.bind_target(qspi.xip_sck, 5, 0xF2000000, 16_MB); + ahb_router.bind_target(apbBridge.target[0], 0, 0x10000000, 16_MB); + ahb_router.bind_target(eth0.socket, 1, 0x11000000, 4_KiB); + ahb_router.bind_target(eth1.socket, 2, 0x11001000, 4_KiB); + ahb_router.bind_target(qspi.xip_sck, 3, 0x20000000, 16_MB); + ahb_router.bind_target(mem_ram.target, 4, 0x30000000, mem_ram.getSize()); + ahb_router.bind_target(mem_dram.target, 5, 0x40000000, mem_dram.getSize()); size_t i = 0; for(const auto& e : PipelinedMemoryBusToApbBridge_map) { apbBridge.initiator.at(i)(e.target); diff --git a/src/vp/system.h b/src/vp/system.h index 871a32c..4a1373c 100644 --- a/src/vp/system.h +++ b/src/vp/system.h @@ -65,8 +65,8 @@ private: vpvper::minres::ethmac_tl eth0{"eth0"}; vpvper::minres::ethmac_tl eth1{"eth1"}; - scc::memory<128_kB, scc::LT> mem_ram{"mem_ram"}; - scc::memory<2_GB, scc::LT> mem_dram{"mem_dram"}; + scc::memory<256_kB, scc::LT> mem_ram{"mem_ram"}; + scc::memory<1_GB, scc::LT> mem_dram{"mem_dram"}; scc::memory<8_kB, scc::LT> boot_rom{"boot_rom"}; sc_core::sc_signal mtime_clk{"mtime_clk"};