1
0
Fork 0
forked from len0rd/rockbox

Added H300 to the fwpatcher utility

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7969 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Linus Nielsen Feltzing 2005-11-18 20:01:51 +00:00
parent d2779e5f3a
commit 88a2a8a53a
5 changed files with 40 additions and 11 deletions

View file

@ -44,7 +44,7 @@ $(TARGET): $(OBJS)
$(TARGETU): $(OBJSU)
$(CC) $(LDFLAGS) $(OBJSU) -o $@
resource.o: resource.rc bootloader-h100.bin bootloader-h120.bin rockbox.ico
resource.o: resource.rc bootloader-h100.bin bootloader-h120.bin bootloader-h300.bin rockbox.ico
$(WINDRES) -v $< $@
iriveru.o: iriver.c iriver.h

View file

@ -0,0 +1,5 @@
/* Checksums of firmwares for ihp_300 */
/* order: unpatched, patched */
/* 1.28eu */
{"0b2083d37f24899b82d21a14d2b38060", "937c0a745227281da62e41da78efcfe8"},

View file

@ -56,15 +56,21 @@ static struct sumpairs h120pairs[] = {
#include "h120sums.h"
};
/* precalculated checksums for H320/H340 */
static struct sumpairs h300pairs[] = {
#include "h300sums.h"
};
HICON rbicon;
HFONT deffont;
HWND controls[CTL_NUM];
/* begin mkboot.c excerpt */
unsigned char image[0x200000 + 0x220 + 0x200000/0x200];
unsigned char image[0x400000 + 0x220 + 0x400000/0x200];
int mkboot(TCHAR *infile, TCHAR *outfile, unsigned char *bldata, int bllen)
int mkboot(TCHAR *infile, TCHAR *outfile, unsigned char *bldata, int bllen,
int origin)
{
FILE *f;
int i;
@ -101,7 +107,7 @@ int mkboot(TCHAR *infile, TCHAR *outfile, unsigned char *bldata, int bllen)
fclose(f);
memcpy(image + 0x220 + 0x1f0000, bldata, bllen);
memcpy(image + 0x220 + origin, bldata, bllen);
f = _tfopen(outfile, TEXT("wb"));
if(!f) {
@ -110,13 +116,13 @@ int mkboot(TCHAR *infile, TCHAR *outfile, unsigned char *bldata, int bllen)
}
/* Patch the reset vector to start the boot loader */
image[0x220 + 4] = image[0x1f0000 + 0x220 + 4];
image[0x220 + 5] = image[0x1f0000 + 0x220 + 5];
image[0x220 + 6] = image[0x1f0000 + 0x220 + 6];
image[0x220 + 7] = image[0x1f0000 + 0x220 + 7];
image[0x220 + 4] = image[origin + 0x220 + 4];
image[0x220 + 5] = image[origin + 0x220 + 5];
image[0x220 + 6] = image[origin + 0x220 + 6];
image[0x220 + 7] = image[origin + 0x220 + 7];
/* This is the actual length of the binary, excluding all headers */
actual_length = 0x1f0000 + bllen;
actual_length = origin + bllen;
/* Patch the ESTFBINR header */
image[0x20c] = (actual_length >> 24) & 0xff;
@ -216,16 +222,24 @@ int PatchFirmware(int series, int table_entry)
DWORD blsize;
int i;
struct sumpairs *sums;
int origin;
/* get pointer to the correct bootloader.bin */
switch(series) {
case 100:
res = FindResource(NULL, MAKEINTRESOURCE(IDI_BOOTLOADERH100), TEXT("BIN"));
sums = &h100pairs[0];
origin = 0x1f0000;
break;
case 120:
res = FindResource(NULL, MAKEINTRESOURCE(IDI_BOOTLOADERH120), TEXT("BIN"));
sums = &h120pairs[0];
origin = 0x1f0000;
break;
case 300:
res = FindResource(NULL, MAKEINTRESOURCE(IDI_BOOTLOADERH300), TEXT("BIN"));
sums = &h300pairs[0];
origin = 0x3f0000;
break;
}
resload = LoadResource(NULL, res);
@ -246,7 +260,7 @@ int PatchFirmware(int series, int table_entry)
TEXT("Error"), MB_ICONERROR);
goto error;
}
if (!mkboot(name1, name2, bootloader, blsize)) {
if (!mkboot(name1, name2, bootloader, blsize, origin)) {
MessageBox(NULL, TEXT("Error in patching"),
TEXT("Error"), MB_ICONERROR);
goto error;
@ -380,9 +394,17 @@ LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
else {
table_entry = intable(md5sum_str, &h100pairs[0],
sizeof(h100pairs)/sizeof(struct sumpairs));
if (table_entry >= 0)
if (table_entry >= 0) {
series = 100;
}
else {
table_entry =
intable(md5sum_str, &h300pairs[0],
sizeof(h300pairs)/sizeof(struct sumpairs));
if (table_entry >= 0)
series = 300;
}
}
if (series == 0) {
MessageBox(NULL, TEXT("Unrecognised firmware"), TEXT("Fail"), MB_OK);
}

View file

@ -1,4 +1,5 @@
#define IDI_RBICON 101
#define IDI_BOOTLOADERH100 102
#define IDI_BOOTLOADERH120 103
#define IDI_BOOTLOADERH300 104

View file

@ -3,3 +3,4 @@
IDI_RBICON ICON "rockbox.ico"
IDI_BOOTLOADERH100 BIN "bootloader-h100.bin"
IDI_BOOTLOADERH120 BIN "bootloader-h120.bin"
IDI_BOOTLOADERH300 BIN "bootloader-h300.bin"