OpenCores
URL https://opencores.org/ocsvn/xulalx25soc/xulalx25soc/trunk

Subversion Repositories xulalx25soc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 39 to Rev 40
    Reverse comparison

Rev 39 → Rev 40

/xulalx25soc/trunk/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;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.