#include <string.h>
#include <stdio.h>
#include <stdlib.h>

unsigned char buffer[8388608];

char footer1[] = "01010411";
char footer2[] = "01010411Supercom";

unsigned char test[65536];

#define BOOT "armboot.bin"
#define IMAGE "zImage"
#define OUTPUT "star.bin"
#define HELP "put %s and %s in the same folder as this executable\n"

int main()
{
	FILE *f;
	unsigned int sz = 0;
	unsigned int st = 0;
	f = fopen(BOOT, "rb");
	if (!f) {
		perror(BOOT);
		printf(HELP, BOOT, IMAGE);
		return -1;
	}
	fread(buffer, 1, 128*1024, f);
	fclose(f);
	f = fopen(IMAGE, "rb");
	if (!f) {
		perror(IMAGE);
		printf(HELP, BOOT, IMAGE);
		return -1;
	}
	sz = fread(buffer+128*1024, 1, 8000000, f);

	sz += 128*1024;

	printf("%s size %d bytes\n", IMAGE, sz);
	st = (sz/512);
	if (st*512<sz) st += 1;
	st *=512;	
	fclose(f);

	memcpy(buffer+0x1fff0, footer1, sizeof(footer1));
	memcpy(buffer+0x7dfff0, footer2, sizeof(footer2));
	memcpy(buffer+0x7ffff0, footer2, sizeof(footer2));

	f = fopen(OUTPUT, "wb");
	fwrite(buffer, 1, sizeof(buffer), f);
	fclose(f);
	printf("done, written to %s\n", OUTPUT);
	return 0;
}

