jtagonizer

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 41830b1ba03bee21a6753a340e6e8e448d3a8b06
parent 390f574f27d029d00f7f500941cd7ae30780b62a
Author: Brian Swetland <swetland@frotz.net>
Date:   Fri, 10 Oct 2014 12:57:47 -0700

fpga: make warmboot optional, fix failure to swizzle bitfile

Diffstat:
Mfpga.c | 28+++++++++++++++++++---------
Mzynq.c | 6++++--
2 files changed, 23 insertions(+), 11 deletions(-)

diff --git a/fpga.c b/fpga.c @@ -195,7 +195,15 @@ static int fpga_warm_boot(JTAG *jtag) { #endif } -int fpga_send_bitfile(JTAG *jtag, void *data, u32 sz) { +int fpga_prepare_bitfile(u8 *data, u32 sz) { + u32 n; + for (n = 0; n < sz; n++) { + data[n] = bitrev(data[n]); + } + return 0; +} + +int fpga_send_bitfile(JTAG *jtag, void *data, u32 sz, int warmboot) { u32 n; if (jtag_enumerate(jtag) < 0) return -1; @@ -209,17 +217,19 @@ int fpga_send_bitfile(JTAG *jtag, void *data, u32 sz) { fprintf(stderr, "status: %08x S%d\n", n, STAT_STATE(n)); if (data == NULL) return 0; - fpga_warm_boot(jtag); + if (warmboot) { + fpga_warm_boot(jtag); - //TODO: detect ready via status register - usleep(100000); + //TODO: detect ready via status register + usleep(100000); - n = 0; - if (fpga_rd_status(jtag, &n)) { - fprintf(stderr, "error: failed to read status\n"); - return -1; + n = 0; + if (fpga_rd_status(jtag, &n)) { + fprintf(stderr, "error: failed to read status\n"); + return -1; + } + fprintf(stderr, "status: %08x S%d\n", n, STAT_STATE(n)); } - fprintf(stderr, "status: %08x S%d\n", n, STAT_STATE(n)); fprintf(stderr, "fpga: downloading...\n"); jtag_goto(jtag, JTAG_RESET); diff --git a/zynq.c b/zynq.c @@ -56,7 +56,8 @@ int usage(void) { return -1; } -int fpga_send_bitfile(JTAG *jtag, void *data, u32 sz); +int fpga_send_bitfile(JTAG *jtag, void *data, u32 sz, int warmboot); +int fpga_prepare_bitfile(u8 *data, u32 sz); int main(int argc, char **argv) { JTAG *jtag; @@ -80,7 +81,8 @@ int main(int argc, char **argv) { fprintf(stderr, "error: could not load '%s'\n", argv[2]); return -1; } - return fpga_send_bitfile(jtag, data, sz); + fpga_prepare_bitfile(data, sz); + return fpga_send_bitfile(jtag, data, sz, 0); } if ((dap = dap_init(jtag, 0x4ba00477)) == NULL) return -1;