From 2b488c830854871588c3742af1ddbe126b84bbdd Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 31 Jan 2010 13:12:43 +0000 Subject: [PATCH] Renamed old to new Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@703 cc03376c-175c-47c8-b038-4cd826a8556b --- lib/CPUs/MIPS/tools/Makefile | 6 ++-- lib/CPUs/MIPS/tools/src/flashgen.c | 49 +++++++++++------------------- lib/CPUs/MIPS/tools/src/romgen.c | 5 ++- 3 files changed, 22 insertions(+), 38 deletions(-) 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);