Fixed FAT parsing on RPi

This commit is contained in:
bzt 2021-04-08 20:43:57 +02:00
parent bf82d5c686
commit cb2d2eb76b
8 changed files with 12 additions and 12 deletions

View File

@ -5,7 +5,7 @@ Előre lefordított binárisok mellékelve, egyből használhatók.
1. *x86_64-efi* a preferált indítási mód x86_64-en.
Szabvány GNU eszköztár plusz néhány fájl a gnuefi-ből (mellékelve).
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.efi) (101k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.rom) (101k)
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.efi) (103k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.rom) (103k)
2. *x86_64-bios* BIOS, Multiboot (GRUB), El Torito (CDROM), bővítő ROM és Linux boot kompatíbilis, RÉGI betöltő.
Ha újra akarod fordítani, szükséged lesz a fasm-ra (nincs mellékelve).

View File

@ -5,7 +5,7 @@ I provide pre-compiled images ready for use.
1. *x86_64-efi* the preferred way of booting on x86_64 architecture.
Standard GNU toolchain and a few files from gnuefi (included).
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.efi) (101k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.rom) (101k)
[bootboot.efi](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.efi) (103k), [bootboot.rom](https://gitlab.com/bztsrc/bootboot/raw/master/dist/bootboot.rom) (103k)
2. *x86_64-bios* BIOS, Multiboot (GRUB), El Torito (CDROM), Expansion ROM and Linux boot compatible, OBSOLETE loader.
If you want to recompile this, you'll need fasm (not included).

View File

@ -1363,7 +1363,7 @@ diskerr:
}
s3=bpb->spc*512;
// load fat table
r=sd_readblock(part->start+1,(unsigned char*)&_end+512,(bpb->spf16?bpb->spf16:bpb->spf32)+bpb->rsc);
r=sd_readblock(part->start+bpb->rsc,(unsigned char*)&_end+512,(bpb->spf16?bpb->spf16:bpb->spf32));
if(r==0) goto diskerr;
pe=(uint8_t*)&_end+512+r;
// load root directory
@ -1377,12 +1377,12 @@ diskerr:
// locate environment and initrd
while(dir->name[0]!=0) {
if(!memcmp(dir->name,"CONFIG ",11)) {
s=dir->size<PAGESIZE?dir->size:PAGESIZE; // round up to cluster size
s=dir->size<PAGESIZE?dir->size:PAGESIZE;
cclu=dir->cl+(dir->ch<<16);
ptr=(void*)&__environment;
while(s>0) {
s2=s>s3?s3:s;
r=sd_readblock(part->start+(cclu-2)*bpb->spc+data_sec,ptr,s2<512?1:(s2+511)/512);
r=sd_readblock(part->start+(cclu-2)*bpb->spc+data_sec,ptr,bpb->spc);
cclu=bpb->spf16>0?fat16[cclu]:fat32[cclu];
ptr+=s2;
s-=s2;
@ -1412,7 +1412,7 @@ diskerr:
s=initrd.size;
while(s>0) {
s2=s>s3?s3:s;
r=sd_readblock(part->start+(clu-2)*bpb->spc+data_sec,ptr,s2<512?1:(s2+511)/512);
r=sd_readblock(part->start+(clu-2)*bpb->spc+data_sec,ptr,bpb->spc);
clu=bpb->spf16>0?fat16[clu]:fat32[clu];
ptr+=s2;
s-=s2;
@ -1420,7 +1420,7 @@ diskerr:
}
} else {
// initrd is on the entire partition
r=sd_readblock(part->start,(unsigned char*)&_end+512,part->end-part->start);
r=sd_readblock(part->start,(unsigned char*)&_end+512,part->end-part->start+1);
if(r==0) goto diskerr;
initrd.ptr=(uint8_t*)&_end;
initrd.size=r;

BIN
dist/bootboot.efi vendored

Binary file not shown.

BIN
dist/bootboot.img vendored

Binary file not shown.

BIN
dist/bootboot.rom vendored

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -5,9 +5,9 @@ extern unsigned char binary_boot_bin[512];
#define sizeof_bootboot_bin 13312
extern unsigned char binary_bootboot_bin[9284];
#define sizeof_bootboot_efi 103614
extern unsigned char binary_bootboot_efi[46349];
#define sizeof_bootboot_img 35384
extern unsigned char binary_bootboot_img[20069];
extern unsigned char binary_bootboot_efi[46348];
#define sizeof_bootboot_img 35344
extern unsigned char binary_bootboot_img[20050];
#define sizeof_bootboot_rv64 8192
extern unsigned char binary_bootboot_rv64[31];
#define sizeof_LICENCE_broadcom 1594