From 582904f497496ac899cf8697b103372d84279b0a Mon Sep 17 00:00:00 2001 From: Alejandro Soto Date: Tue, 21 May 2024 21:10:30 -0600 Subject: platform/wavelet3d: allow writes to "flash" over jtag --- platform/wavelet3d/main.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'platform') diff --git a/platform/wavelet3d/main.cpp b/platform/wavelet3d/main.cpp index 6e33e70..2771551 100644 --- a/platform/wavelet3d/main.cpp +++ b/platform/wavelet3d/main.cpp @@ -131,12 +131,13 @@ int main(int argc, char **argv) top->dram_rid = ar.id; top->dram_rlast = ar.len == 0; + top->dram_rresp = 0b00; top->dram_rvalid = 1; auto index = ar.addr >> 2; if (index >= DRAM_SIZE) [[unlikely]] { fprintf(stderr, "Bad DRAM read address: %08x\n", ar.addr); - top->dram_rdata = 0; + top->dram_rresp = 0b11; } else top->dram_rdata = dram[index]; @@ -154,12 +155,16 @@ int main(int argc, char **argv) auto &w = w_queue.front(); auto &aw = aw_queue.front(); + top->dram_bresp = 0b00; + auto index = aw.addr >> 2; - if (index >= DRAM_SIZE) [[unlikely]] + if (index >= DRAM_SIZE) [[unlikely]] { fprintf(stderr, "Bad DRAM write address: %08x\n", aw.addr); - else if (index < FLASH_BOUNDARY) [[unlikely]] - fprintf(stderr, "Attempt to write to flash: %08x\n", aw.addr); - else { + top->dram_bresp = 0b11; + } else { + if (index < FLASH_BOUNDARY) [[unlikely]] + fprintf(stderr, "Attempt to write to flash: %08x\n", aw.addr); + constexpr unsigned STRB_MASKS[16] = { [0b0000] = 0x00000000, [0b0001] = 0x000000ff, -- cgit v1.2.3