diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-05-20 10:24:29 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-05-24 05:58:41 -0600 |
| commit | 1b112bfc4c053d9b795235385120f2eb7a97001c (patch) | |
| tree | a90d5608811960f209538accb216f91e880b8774 /platform/wavelet3d/main.cpp | |
| parent | 72d41c8d5e93e300f9e65e8752ae765428c96c83 (diff) | |
platform/wavelet3d: improve performance of JTAG-over-TCP
Diffstat (limited to 'platform/wavelet3d/main.cpp')
| -rw-r--r-- | platform/wavelet3d/main.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/platform/wavelet3d/main.cpp b/platform/wavelet3d/main.cpp index 147bde4..6e33e70 100644 --- a/platform/wavelet3d/main.cpp +++ b/platform/wavelet3d/main.cpp @@ -17,7 +17,7 @@ #include "Vtop.h" -#include "remote_bitbang.h" +#include "remote_jtag.hpp" int main(int argc, char **argv) { @@ -60,17 +60,15 @@ int main(int argc, char **argv) top->dram_arready = 0; top->dram_awready = 0; - top->jtag_tck = 0; - top->jtag_tms = 0; - top->jtag_tdi = 0; + top->jtag_tck = 1; + top->jtag_tms = 1; + top->jtag_tdi = 1; cycle(); top->rst_n = 1; cycle(); - rbs_init(1234); - struct a_req { unsigned id, addr, len; @@ -121,7 +119,8 @@ int main(int argc, char **argv) fclose(flash_img); - do { + auto sys_bus_cycle = [&]() + { cycle(); //FIXME: para respetar AXI hay que top->eval()'ear luedo de levantar valid @@ -219,18 +218,23 @@ int main(int argc, char **argv) .data = top->dram_wdata, .strb = top->dram_wstrb, }); + }; - unsigned char tck = top->jtag_tck; - unsigned char tms = top->jtag_tms; - unsigned char tdi = top->jtag_tdi; - unsigned char trstn = 1; + remote_jtag jtag(1234); - rbs_tick(&tck, &tms, &tdi, &trstn, top->jtag_tdo); + do { + sys_bus_cycle(); + + if (jtag.pending()) { + unsigned char trstn = 1; - top->jtag_tck = tck; - top->jtag_tms = tms; - top->jtag_tdi = tdi; - } while (!(client_fd < 0)); + jtag.process + ( + &top->jtag_tck, &top->jtag_tms, &top->jtag_tdi, &trstn, &top->jtag_tdo, + [&]() { sys_bus_cycle(); } + ); + } + } while (jtag.alive()); #if VM_TRACE trace->close(); |
