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

Subversion Repositories eco32

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 33 to Rev 34
    Reverse comparison

Rev 33 → Rev 34

/eco32/trunk/tools/bin2exo/Makefile
0,0 → 1,19
#
# Makefile for binary to S-record converter
#
 
BUILD = ../../build
 
.PHONY: all install clean
 
all: bin2exo
 
install: bin2exo
mkdir -p $(BUILD)/bin
cp bin2exo $(BUILD)/bin
 
bin2exo: bin2exo.c
gcc -m32 -g -Wall -o bin2exo bin2exo.c
 
clean:
rm -f *~ bin2exo
/eco32/trunk/tools/bin2exo/bin2exo.c
0,0 → 1,82
/*
* bin2exo.c -- convert binary data to Motorola S-records
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
 
 
void error(char *fmt, ...) {
va_list ap;
 
va_start(ap, fmt);
printf("Error: ");
vprintf(fmt, ap);
printf("\n");
va_end(ap);
exit(1);
}
 
 
int main(int argc, char *argv[]) {
char *endptr;
unsigned int loadAddr;
FILE *infile;
FILE *outfile;
int numBytes, i;
int c;
unsigned char lineData[16];
unsigned int chksum;
 
if (argc != 4) {
printf("Usage: %s <load addr, hex> <input file> <output file>\n",
argv[0]);
exit(1);
}
loadAddr = strtoul(argv[1], &endptr, 16);
if (*endptr != '\0') {
error("illegal load address %s", argv[1]);
}
infile = fopen(argv[2], "rb");
if (infile == NULL) {
error("cannot open input file %s", argv[2]);
}
outfile = fopen(argv[3], "wt");
if (outfile == NULL) {
error("cannot open output file %s", argv[3]);
}
while (1) {
chksum = 0;
for (numBytes = 0; numBytes < 16; numBytes++) {
c = fgetc(infile);
if (c == EOF) {
break;
}
lineData[numBytes] = c;
chksum += c;
}
if (numBytes == 0) {
break;
}
fprintf(outfile, "S2%02X%06X", numBytes + 4, loadAddr);
for (i = 0; i < numBytes; i++) {
fprintf(outfile, "%02X", lineData[i]);
}
chksum += numBytes + 4;
chksum += ((loadAddr >> 0) & 0xFF) +
((loadAddr >> 8) & 0xFF) +
((loadAddr >> 16) & 0xFF);
fprintf(outfile, "%02X\n", 0xFF - (chksum & 0xFF));
loadAddr += numBytes;
if (c == EOF) {
break;
}
}
fprintf(outfile, "S804000000FB\n");
fclose(infile);
fclose(outfile);
return 0;
}
/eco32/trunk/tools/bit2exo/Makefile
0,0 → 1,19
#
# Makefile for bitfile to S-record converter
#
 
BUILD = ../../build
 
.PHONY: all install clean
 
all: bit2exo
 
install: bit2exo
mkdir -p $(BUILD)/bin
cp bit2exo $(BUILD)/bin
 
bit2exo: bit2exo.c
gcc -m32 -g -Wall -o bit2exo bit2exo.c
 
clean:
rm -f *~ bit2exo
/eco32/trunk/tools/bit2exo/bit2exo.c
0,0 → 1,186
/*
* bit2exo.c -- convert Xilinx bitfile data to Motorola S-records
*/
 
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
 
 
unsigned char bitHeader[13] = {
0x00, 0x09, 0x0F, 0xF0,
0x0F, 0xF0, 0x0F, 0xF0,
0x0F, 0xF0, 0x00, 0x00,
0x01
};
 
 
void error(char *fmt, ...) {
va_list ap;
 
va_start(ap, fmt);
printf("Error: ");
vprintf(fmt, ap);
printf("\n");
va_end(ap);
exit(1);
}
 
 
unsigned int getCount2(FILE *infile) {
unsigned char b1, b2;
 
b1 = fgetc(infile);
b2 = fgetc(infile);
return ((unsigned int) b1 << 8) | (unsigned int) b2;
}
 
 
unsigned int getCount4(FILE *infile) {
unsigned char b1, b2, b3, b4;
 
b1 = fgetc(infile);
b2 = fgetc(infile);
b3 = fgetc(infile);
b4 = fgetc(infile);
return ((unsigned int) b1 << 24) | ((unsigned int) b2 << 16) |
((unsigned int) b3 << 8) | ((unsigned int) b4 << 0);
}
 
 
void show(char *name, FILE *infile, int count) {
int c;
 
printf("%s", name);
while (count--) {
c = fgetc(infile);
if (c >= 0x20 && c <= 0x7E) {
printf("%c", c);
}
}
printf("\n");
}
 
 
unsigned char mirror(unsigned char n) {
unsigned char m;
int i;
 
m = 0;
for (i = 0; i < 8; i++) {
m <<= 1;
if (n & 1) {
m |= 1;
}
n >>= 1;
}
return m;
}
 
 
int main(int argc, char *argv[]) {
char *endptr;
unsigned int loadAddr;
FILE *infile;
FILE *outfile;
int numBytes, i;
int c;
unsigned char lineData[16];
unsigned int chksum;
int totalBytes;
 
if (argc != 4) {
printf("Usage: %s <load addr, hex> <input file> <output file>\n",
argv[0]);
printf(" ROM quadrant 0: load addr = 0x000000\n");
printf(" ROM quadrant 1: load addr = 0x080000\n");
printf(" ROM quadrant 2: load addr = 0x100000\n");
printf(" ROM quadrant 3: load addr = 0x180000\n");
exit(1);
}
loadAddr = strtoul(argv[1], &endptr, 16);
if (*endptr != '\0') {
error("illegal load address %s", argv[1]);
}
infile = fopen(argv[2], "rb");
if (infile == NULL) {
error("cannot open input file %s", argv[2]);
}
outfile = fopen(argv[3], "wt");
if (outfile == NULL) {
error("cannot open output file %s", argv[3]);
}
/* 13 bytes header */
for (i = 0; i < 13; i++) {
if (fgetc(infile) != bitHeader[i]) {
error("input file header is not a '.bit' header");
}
}
/* section 'a' */
if (fgetc(infile) != 'a') {
error("section 'a' not found");
}
i = getCount2(infile);
show("design name:\t\t", infile, i);
/* section 'b' */
if (fgetc(infile) != 'b') {
error("section 'b' not found");
}
i = getCount2(infile);
show("part name:\t\t", infile, i);
/* section 'c' */
if (fgetc(infile) != 'c') {
error("section 'c' not found");
}
i = getCount2(infile);
show("creation date:\t\t", infile, i);
/* section 'd' */
if (fgetc(infile) != 'd') {
error("section 'd' not found");
}
i = getCount2(infile);
show("creation time:\t\t", infile, i);
/* section 'e' */
if (fgetc(infile) != 'e') {
error("section 'e' not found");
}
i = getCount4(infile);
printf("bit stream size:\t0x%08X\n", i);
totalBytes = 0;
while (1) {
chksum = 0;
for (numBytes = 0; numBytes < 16; numBytes++) {
c = fgetc(infile);
if (c == EOF) {
break;
}
c = mirror(c & 0xFF);
lineData[numBytes] = c;
chksum += c;
}
if (numBytes == 0) {
break;
}
totalBytes += numBytes;
fprintf(outfile, "S2%02X%06X", numBytes + 4, loadAddr);
for (i = 0; i < numBytes; i++) {
fprintf(outfile, "%02X", lineData[i]);
}
chksum += numBytes + 4;
chksum += ((loadAddr >> 0) & 0xFF) +
((loadAddr >> 8) & 0xFF) +
((loadAddr >> 16) & 0xFF);
fprintf(outfile, "%02X\n", 0xFF - (chksum & 0xFF));
loadAddr += numBytes;
if (c == EOF) {
break;
}
}
fprintf(outfile, "S804000000FB\n");
fclose(infile);
fclose(outfile);
printf("bytes converted:\t0x%08X\n", totalBytes);
return 0;
}
/eco32/trunk/tools/Makefile
0,0 → 1,25
#
# Makefile for building the tools
#
 
BUILD = ../build
 
DIRS = bin2exo bit2exo
 
.PHONY: all install clean
 
all:
for i in $(DIRS) ; do \
$(MAKE) -C $$i all ; \
done
 
install:
for i in $(DIRS) ; do \
$(MAKE) -C $$i install ; \
done
 
clean:
for i in $(DIRS) ; do \
$(MAKE) -C $$i clean ; \
done
rm -f *~
/eco32/trunk/hwtests/Makefile
4,9 → 4,9
 
BUILD = ../build
 
DIRS = tools serial looptest ldtest memtest1 memtest2 shtest brtest \
tmrtest multest divtest remtest sregtest tlbtest irqtest xcptest \
dsptest kbdtest jalrtest
DIRS = serial looptest ldtest memtest1 memtest2 shtest brtest \
tmrtest multest divtest remtest sregtest tlbtest irqtest \
xcptest dsptest kbdtest jalrtest
 
.PHONY: all install clean
 
/eco32/trunk/Makefile
4,7 → 4,7
 
VERSION = 0.23
 
DIRS = binutils sim simtest fpga hwtests monitor disk stdalone
DIRS = binutils tools sim simtest fpga hwtests monitor disk stdalone
BUILD = `pwd`/build
 
.PHONY: all doc compiler builddir clean dist

powered by: WebSVN 2.1.0

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