From: Nishanth Menon Date: Sat, 11 Dec 2010 23:18:45 +0000 (-0600) Subject: X-Loader: Add SignGP support X-Git-Tag: v1.5.0~52 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=095963f872da6f28e8b850a50ac3b1ddf7329684;p=pandora-x-loader.git X-Loader: Add SignGP support Integrate signGP from http://beagleboard.googlecode.com/files/signGP.c This will allow: make ift to generate the ift file Signed-off-by: Nishanth Menon --- diff --git a/Makefile b/Makefile index 7a58ea0..3c08ec9 100644 --- a/Makefile +++ b/Makefile @@ -84,6 +84,11 @@ ALL = x-load.bin System.map all: $(ALL) +ift: $(ALL) x-load.bin.ift + +x-load.bin.ift: signGP System.map x-load.bin + TEXT_BASE=`grep -w _start System.map|cut -d ' ' -f1` + ./signGP x-load.bin $(TEXT_BASE) x-load.bin: x-load $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@ @@ -106,6 +111,9 @@ System.map: x-load oneboot: x-load.bin scripts/mkoneboot.sh +signGP: scripts/signGP.c + gcc -O3 -o signGP $< + ######################################################################### else all install x-load x-load.srec oneboot depend dep: @@ -177,7 +185,7 @@ clobber: clean | xargs rm -f rm -f $(OBJS) *.bak tags TAGS rm -fr *.*~ - rm -f x-load x-load.map $(ALL) + rm -f x-load x-load.map $(ALL) x-load.bin.ift signGP rm -f include/asm/proc include/asm/arch mrproper \ diff --git a/scripts/signGP.c b/scripts/signGP.c new file mode 100644 index 0000000..0e8ed07 --- /dev/null +++ b/scripts/signGP.c @@ -0,0 +1,73 @@ +// +// signGP.c +// Read the x-load.bin file and write out the x-load.bin.ift file. +// The signed image is the original pre-pended with the size of the image +// and the load address. If not entered on command line, file name is +// assumed to be x-load.bin in current directory and load address is +// 0x40200800. + +#include +#include +#include +#include +#include +#include + + +main(int argc, char *argv[]) +{ + int i; + char ifname[FILENAME_MAX], ofname[FILENAME_MAX], ch; + FILE *ifile, *ofile; + unsigned long loadaddr, len; + struct stat sinfo; + + + // Default to x-load.bin and 0x40200800. + strcpy(ifname, "x-load.bin"); + loadaddr = 0x40200800; + + if ((argc == 2) || (argc == 3)) + strcpy(ifname, argv[1]); + + if (argc == 3) + loadaddr = strtol(argv[2], NULL, 16); + + // Form the output file name. + strcpy(ofname, ifname); + strcat(ofname, ".ift"); + + // Open the input file. + ifile = fopen(ifname, "rb"); + if (ifile == NULL) { + printf("Cannot open %s\n", ifname); + exit(0); + } + + // Get file length. + stat(ifname, &sinfo); + len = sinfo.st_size; + + // Open the output file and write it. + ofile = fopen(ofname, "wb"); + if (ofile == NULL) { + printf("Cannot open %s\n", ofname); + fclose(ifile); + exit(0); + } + + // Pad 1 sector of zeroes. + //ch = 0x00; + //for (i=0; i<0x200; i++) + // fwrite(&ch, 1, 1, ofile); + + fwrite(&len, 1, 4, ofile); + fwrite(&loadaddr, 1, 4, ofile); + for (i=0; i