URL
https://opencores.org/ocsvn/xulalx25soc/xulalx25soc/trunk
Subversion Repositories xulalx25soc
Compare Revisions
- This comparison shows the changes necessary to convert path
/xulalx25soc/trunk
- from Rev 39 to Rev 40
- ↔ Reverse comparison
Rev 39 → Rev 40
/sw/dumpsdram.cpp
41,6 → 41,7
#include <signal.h> |
#include <assert.h> |
|
#include "llcomms.h" |
#include "usbi.h" |
#include "port.h" |
#include "regdefs.h" |
50,23 → 51,47
int main(int argc, char **argv) { |
FILE *fp, *fpin; |
unsigned pos=0; |
int port = FPGAPORT, skp; |
const int BUFLN = 127; |
FPGA::BUSW *buf = new FPGA::BUSW[BUFLN], |
*cmp = new FPGA::BUSW[BUFLN]; |
bool use_usb = true; |
|
if (argc<=2) { |
printf("Usage: dumpsdram srcfile outfile\n"); |
skp = 1; |
for(int argn=0; argn<argc-skp; argn++) { |
if (argv[argn+skp][0] == '-') { |
if (argv[argn+skp][1] == 'u') |
use_usb = true; |
else if (argv[argn+skp][1] == 'p') { |
use_usb = false; |
if (isdigit(argv[argn+skp][2])) |
port = atoi(&argv[argn+skp][2]); |
} skp++; argn--; |
} else |
argv[argn] = argv[argn+skp]; |
} argc -= skp; |
|
if (argc!=2) { |
printf("Usage: dumpsdram [-p [port]] srcfile outfile\n"); |
exit(-1); |
} |
|
FPGAOPEN(m_fpga); |
for(int i=0; i<argc; i++) { |
printf("ARG[%d] = %s\n", i, argv[i]); |
} |
|
fpin = fopen(argv[1], "rb"); |
fpin = fopen(argv[0], "rb"); |
if (fpin == NULL) { |
fprintf(stderr, "Could not open %s\n", argv[1]); |
exit(-1); |
} |
|
if (use_usb) |
m_fpga = new FPGA(new USBI()); |
else |
m_fpga = new FPGA(new NETCOMMS(FPGAHOST, port)); |
|
|
try { |
int nr; |
pos = SDRAMBASE; |
77,6 → 102,7
nr = fread(buf, sizeof(FPGA::BUSW), nr, fpin); |
if (nr <= 0) |
break; |
|
m_fpga->writei(pos, nr, buf); |
pos += nr; |
} while((nr > 0)&&(pos < 2*SDRAMBASE)); |
86,11 → 112,14
fprintf(stderr, "BUS Err while writing at address 0x%08x\n", a.addr); |
fprintf(stderr, "... is your program too long for this memory?\n"); |
exit(-2); |
} catch(...) { |
fprintf(stderr, "Other error\n"); |
exit(-3); |
} |
|
rewind(fpin); |
|
fp = fopen(argv[2], "wb"); |
fp = fopen(argv[1], "wb"); |
if (fp == NULL) { |
fprintf(stderr, "Could not open: %s\n", argv[2]); |
exit(-1); |
118,7 → 147,7
cr = fread(cmp, sizeof(FPGA::BUSW), nr, fpin); |
for(int i=0; i<cr; i++) |
if (cmp[i] != buf[i]) |
fprintf(stderr, "MISMATCH: MEM[%08x] = %08x != %08x\n", |
printf("MISMATCH: MEM[%08x] = %08x(read) != %08x(expected)\n", |
pos-nr+i, buf[i], cmp[i]); |
if (cr != nr) { |
printf("Only read %d words from our input file\n", cr); |
132,6 → 161,9
fprintf(stderr, "BUS Err at address 0x%08x\n", a.addr); |
fprintf(stderr, "... is your program too long for this memory?\n"); |
exit(-2); |
} catch(...) { |
fprintf(stderr, "Other error\n"); |
exit(-3); |
} |
|
delete m_fpga; |