diff --git a/lib/CPUs/MIPS/tools/Makefile b/lib/CPUs/MIPS/tools/Makefile
index 1c8ef53..852df6b 100644
--- a/lib/CPUs/MIPS/tools/Makefile
+++ b/lib/CPUs/MIPS/tools/Makefile
@@ -10,13 +10,11 @@ ramgen: ./src/ramgen.c
$(CC) $(CFLAGS) ./src/ramgen.c -lm -o ./ramgen
flashgen: ./src/flashgen.c
- $(CC) $(CFLAGS) ./src/flashgen.c -lm -o ./flashgen_el
- $(CC) $(CFLAGS) -DTARGET_IS_BIG_ENDIAN ./src/flashgen.c -lm -o ./flashgen_eb
+ $(CC) $(CFLAGS) ./src/flashgen.c -lm -o ./flashgen
install:
cp romgen $(PREFIX)/bin
cp ramgen $(PREFIX)/bin
- cp flashgen_el $(PREFIX)/bin
- cp flashgen_eb $(PREFIX)/bin
+ cp flashgen $(PREFIX)/bin
clean:
rm -rf romgen* ramgen* flashgen*
diff --git a/lib/CPUs/MIPS/tools/src/flashgen.c b/lib/CPUs/MIPS/tools/src/flashgen.c
index cc775a7..a6b5470 100644
--- a/lib/CPUs/MIPS/tools/src/flashgen.c
+++ b/lib/CPUs/MIPS/tools/src/flashgen.c
@@ -17,6 +17,9 @@
#define SDRAM_BASE 0x40000000
#define FLASH_OFFSET 0x00000000
+#define MAGIC_EB 0x4A464931 // "JFI1" in big-endian;
+#define MAGIC_EL 0x3149464A // "JFI1" in little-endian;
+
UINT32 conv_endian32(UINT32 src)
{
UINT32 dst;
@@ -29,28 +32,10 @@ UINT32 conv_endian32(UINT32 src)
return dst;
};
-UINT32 to_big_endian32(UINT32 src)
-{
-#ifndef NATIVE_IS_BIG_ENDIAN
- return conv_endian32(src);
-#else
- return src;
-#endif
-}
-
-UINT32 from_big_endian32(UINT32 src)
-{
-#ifndef NATIVE_IS_BIG_ENDIAN
- return conv_endian32(src);
-#else
- return src;
-#endif
-}
-
// --------------------------------------------------------------
typedef struct _sflash_img_hdr_t
{
- UINT8 magic[4];
+ UINT32 magic;
UINT32 target_addr;
UINT32 img_offset;
UINT32 img_size;
@@ -84,6 +69,7 @@ int main(int argc, char *argv[])
char name_flash[1024];
char name_prj[1024];
char *pBuf;
+ UINT32 *pBuf32;
flash_img_hdr_t img_hdr = {0};
FILE *pFile;
@@ -93,7 +79,7 @@ int main(int argc, char *argv[])
if (argc < 2)
{
- fprintf(stderr, "Usage: flashgen \n");
+ fprintf(stderr, "Usage: flashgen [-{EL|EB}]\n");
return 1;
}
@@ -128,21 +114,22 @@ int main(int argc, char *argv[])
return 1;
}
- img_hdr.magic[0] = 'J';
- img_hdr.magic[1] = 'F';
- img_hdr.magic[2] = 'I';
- img_hdr.magic[3] = '1';
-#ifdef TARGET_IS_BIG_ENDIAN
- img_hdr.target_addr = to_big_endian32(SDRAM_BASE);
- img_hdr.img_size = to_big_endian32(filesize);
- img_hdr.img_offset = to_big_endian32(FLASH_OFFSET + sizeof(flash_img_hdr_t));
- img_hdr.hdr_next = to_big_endian32(FLASH_OFFSET);
-#else
+ img_hdr.magic = MAGIC_EL;
img_hdr.target_addr = SDRAM_BASE;
img_hdr.img_size = filesize;
img_hdr.img_offset = FLASH_OFFSET + sizeof(flash_img_hdr_t);
img_hdr.hdr_next = FLASH_OFFSET;
-#endif
+
+ if (argc == 3)
+ {
+ if ((argv[2][0] == '-') && (toupper(argv[2][1]) == 'E') && (toupper(argv[2][2]) == 'B'))
+ {
+ img_hdr.magic = MAGIC_EB;
+ pBuf32 = (UINT32*)pBuf;
+ for (i=0; i < filesize/4; i ++)
+ pBuf32[i] = conv_endian32(pBuf32[i]);
+ }
+ }
fwrite(&img_hdr, sizeof(flash_img_hdr_t), 1, pFile);
fwrite(pBuf, 1, filesize, pFile);
diff --git a/lib/CPUs/MIPS/tools/src/romgen.c b/lib/CPUs/MIPS/tools/src/romgen.c
index 60c00c3..f674a6a 100644
--- a/lib/CPUs/MIPS/tools/src/romgen.c
+++ b/lib/CPUs/MIPS/tools/src/romgen.c
@@ -399,7 +399,7 @@ int main(int argc, char *argv[])
if (argc < 2)
{
- fprintf(stderr, "Usage: romgen [{EL|EB}]\n");
+ fprintf(stderr, "Usage: romgen [-{EL|EB}]\n");
return 1;
}
@@ -409,11 +409,10 @@ int main(int argc, char *argv[])
g_endianess_EB = 0;
if (argc == 4)
{
- if ((toupper(argv[3][0]) == 'E') && (toupper(argv[3][1]) == 'B'))
+ if ((argv[3][0] == '-') && (toupper(argv[3][1]) == 'E') && (toupper(argv[3][2]) == 'B'))
g_endianess_EB = 1;
}
-
basename(pFilenameIn, name_prj);
sprintf(name_rom, "%s.vhd", name_prj);
sprintf(name_rom_v4ld, "%s_ld.vhd", name_prj);