xistor 910619de4c fix missing semicolon 1 yıl önce
..
Makefile 426205e2a3 Added makefiles for LLVM Clang 5 yıl önce
Makefile.clang 9c5c2813a0 Update QEMU command in all README and Makefile 2 yıl önce
Makefile.gcc 9c5c2813a0 Update QEMU command in all README and Makefile 2 yıl önce
OLVASSEL.md 9c5c2813a0 Update QEMU command in all README and Makefile 2 yıl önce
README.md da37035477 Fixed typos 2 yıl önce
delays.c 910619de4c fix missing semicolon 1 yıl önce
delays.h 7ace64ba9f Initial commit 7 yıl önce
fat.c 1440c3c5a3 Recompiled with @laroche's patches 6 yıl önce
fat.h 7c337daa89 change access to unaligned data to use individual "char" 6 yıl önce
gpio.h 7ace64ba9f Initial commit 7 yıl önce
kernel8.img 8ce0f75b47 Recompiled with latest gcc 4 yıl önce
link.ld 7ace64ba9f Initial commit 7 yıl önce
main.c 7ace64ba9f Initial commit 7 yıl önce
mbox.c 214885df63 compute the mailbox cmd only once 6 yıl önce
mbox.h 7ace64ba9f Initial commit 7 yıl önce
sd.c 0c0b9a5b21 Fixed newline 6 yıl önce
sd.h 7ace64ba9f Initial commit 7 yıl önce
start.S ea4691947c Improve comments wrt stack setup 3 yıl önce
uart.c 8a80ab88b9 Clearified mbox call in uart per issue #49 6 yıl önce
uart.h 7ace64ba9f Initial commit 7 yıl önce

README.md

Tutorial 0C - Directory

Now that we can load a sector from the storage, it is time to parse it as a file system. This tutorial will show you how to list the root directory entries of a FAT16 or FAT32 partition.

$ qemu-system-aarch64 -M raspi3b -drive file=test.dd,if=sd,format=raw -serial stdio
        ... output removed for clarity ...
MBR disk identifier: 12345678
FAT partition starts at: 00000008
        ... output removed for clarity ...
FAT type: FAT16
FAT number of root diretory entries: 00000200
FAT root directory LBA: 00000034
        ... output removed for clarity ...
Attrib Cluster  Size     Name
...L.. 00000000 00000000 EFI System 
....D. 00000003 00000000 FOLDER     
.....A 00000171 0000C448 BOOTCODEBIN
.....A 0000018A 000019B3 FIXUP   DAT
.....A 0000018E 00001B10 KERNEL8 IMG
.....A 00000192 000005D6 LICENC~1BRO
.....A 00000193 002B2424 START   ELF

Fat.h, fat.c

This is easy and pretty well documented. We have to read the MBR, locate our partition, and load it's first sector (Volume Boot Record). That has the BIOS Parameter Block, which describes the FAT file system.

fat_getpartition() load and check the boot record of the first MBR partition.

fat_listdirectory() list root directory entries on the volume.

Main

Once we initialize EMMC to read sectors, we load the boot record of the first partition. If the BPB describes a valid FAT partition, we list the root directory entries in it.