Fat32: de structuur

Pagina: 1
Acties:
  • 193 views sinds 30-01-2008
  • Reageer

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
Ik moet via USB een usb (atat en scsi protocol) benaderen via een embedded systeem. Om dit te doen moet ik weten hoe de Fat32 / 16 / 12 structuur eruit ziet, maar kan deze niet vinden op google. Iemand een idee?

De algemene structuur weet ik: opbouw MBR & boot records, maar waat de fat zelf staat is me nog niet geheel duidelijk

Edit:
De bedoeling is om sectoren te kunnen lezen en in te schrijven. Dus dat ik mijn eigen file weer bouw aan de hand van een op redelijk brute manier uitgelezen FAT32

[ Voor 23% gewijzigd door elgringo op 03-02-2003 16:04 ]

if broken it is, fix it you should


  • TERW_DAN
  • Registratie: Juni 2001
  • Niet online

TERW_DAN

Met een hamer past alles.

http://home.teleport.com/~brainy/fat32.htm
http://home.teleport.com/~brainy/fat16.htm
http://home.teleport.com/~brainy/diskaccess.htm
http://www.undu.com/Articles/980525d.html

In deze links wordt wel uitgelegd hoe FAT32 is opgebouwd en ook hoe je ze zou kunnen aanspreken, misschien dat je hier wat aan hebt. (ook FAT16 btw)

  • DaCoTa
  • Registratie: April 2002
  • Laatst online: 16:42
Wat voor embedded systeem werk je mee? Redelijke kans dat je - mits het een fatsoenlijke processor is - er wel ergens een stuk software voor het gebruiken van een FAT systeem te vinden is.

  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20:15

voodooless

Sound is no voodoo!

ehh, je bent een beetje fout bezig....

Voor USB mass storage heb je geen kennis van FAT of welk ander filesysteem dan ook nodig! Tenzij je natuurlijk ook nog op je device zelf je disk zonder USB wil bekijken. Dan kun je idd alles vinden in de links hierboven!

Ik heb voor mijn afstuderen ook zoiets gemaakt :) Voor USB hoef je geen FS, alleen voor op je device moet je dan een fat32 diver schrijven. Die heb ik helaas niet gemaakt, maar mijn collega. Ik heb alleen ISO9660/joliet gedaan. Ik heb echter wel het USB stuk gedaan en heb dus al enige ervaring.

[ Voor 71% gewijzigd door voodooless op 03-02-2003 18:54 ]

Do diamonds shine on the dark side of the moon :?


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
DaCoTa schreef op 03 February 2003 @ 17:15:
Wat voor embedded systeem werk je mee? Redelijke kans dat je - mits het een fatsoenlijke processor is - er wel ergens een stuk software voor het gebruiken van een FAT systeem te vinden is.
een settopbox echostar sat-receiver met een arm of stXX chip

if broken it is, fix it you should


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
deepspace schreef op 03 February 2003 @ 18:50:
ehh, je bent een beetje fout bezig....

Voor USB mass storage heb je geen kennis van FAT of welk ander filesysteem dan ook nodig! Tenzij je natuurlijk ook nog op je device zelf je disk zonder USB wil bekijken. Dan kun je idd alles vinden in de links hierboven!

Ik heb voor mijn afstuderen ook zoiets gemaakt :) Voor USB hoef je geen FS, alleen voor op je device moet je dan een fat32 diver schrijven. Die heb ik helaas niet gemaakt, maar mijn collega. Ik heb alleen ISO9660/joliet gedaan. Ik heb echter wel het USB stuk gedaan en heb dus al enige ervaring.
Hoe kom ik dan op het apparaat? je moet die file structuur weten om het te kunnen lezen

if broken it is, fix it you should


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20:15

voodooless

Sound is no voodoo!

Nope, USB gooit alleen sectoren op en neer, het fs doet windows zelf.

Do diamonds shine on the dark side of the moon :?


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
deepspace schreef op 03 February 2003 @ 19:43:
Nope, USB gooit alleen sectoren op en neer, het fs doet windows zelf.
ik heb geen windows, maar een embedded linux variant

if broken it is, fix it you should


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20:15

voodooless

Sound is no voodoo!

dus je sluit embedded linux via USB aan je device aan als ik het goed begrijp. Linux kent trouwens ook gewoon de Mass Strorage Class en gooit ook alleen maar sectors op en neer. Maar ik weet niet hoe het met die embeded linux variant zit.

Wat wil je nu precies gaan maken en hoe ga je het verbinden? Dat schaft duidelijkheid!

Do diamonds shine on the dark side of the moon :?


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
deepspace schreef op 04 February 2003 @ 00:34:
dus je sluit embedded linux via USB aan je device aan als ik het goed begrijp. Linux kent trouwens ook gewoon de Mass Strorage Class en gooit ook alleen maar sectors op en neer. Maar ik weet niet hoe het met die embeded linux variant zit.

Wat wil je nu precies gaan maken en hoe ga je het verbinden? Dat schaft duidelijkheid!
Ik heb dus een settopbox (sat receiever van echostar). Hierin zit een ARM V4 architectuur risc chip. Deze box heeft netwerk, usb en rs232 aansluiting (buiten de standaard om). We moeten deze box zo ombouwen dat je fat32 pendrives (scsi over usb) moet kunnen lezen (voor bijvoorbeeld, mp3, filmpjes, firmwares, etc.)

Zoals ik al zei staat er een embedded linux variant op (homemade echostar software), vandaar dat ik nix aan standaard linux libs heb

if broken it is, fix it you should


  • voodooless
  • Registratie: Januari 2002
  • Laatst online: 20:15

voodooless

Sound is no voodoo!

Ah, nu komt de aap uit de mouw. Je moet dus van de pendrive via USB het FAT32 filesysteem kunnen lezen(/schrijven)... Dan neem ik mijn woorden terug, je bent op de juiste weg en met die docs in een van de eerste post kom je een heel eind.

Is het niet mogelijk om gewoon de FAT32 diver van linux te gebruiken door deze aan embeded linux toe te voegen, evenals de USB drivers? Dan ben je snel klaar natuurlijk :)

Do diamonds shine on the dark side of the moon :?


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
deepspace schreef op 04 February 2003 @ 11:50:
Ah, nu komt de aap uit de mouw. Je moet dus van de pendrive via USB het FAT32 filesysteem kunnen lezen(/schrijven)... Dan neem ik mijn woorden terug, je bent op de juiste weg en met die docs in een van de eerste post kom je een heel eind.

Is het niet mogelijk om gewoon de FAT32 diver van linux te gebruiken door deze aan embeded linux toe te voegen, evenals de USB drivers? Dan ben je snel klaar natuurlijk :)
USB drivers zijn er al, en linux gebaseerd houdt in dat het er erg op lijkt (en thats it)

if broken it is, fix it you should


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
Om uit te zoeken hoe FAT32 werkt moet ik deze sector voor sector uit kunnen lezen en schrijven onder windows (2000). Hoe omzeil ik de standaard windows structuur en kan ik bij de sectoren komen (zoals norton speed disk)

if broken it is, fix it you should


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
Ik heb dus het volgende in de partition entry van de MBR van een 64mb flashdrive (die 1 partie heeft en fat32 is) staan:
code:
1
2
3
4
FF 0D 0A 44 69 73 6B 20 65 72 72 6F 72 FF 0D 0A 
50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 74 6F
20 72 65 73 74 61 72 74 0D 0A 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 AC BF CC 00 00


Volgens mij klopt dit niet.... Kan iemand me hier wat meer van vertellen?

De schijf is met windows 2000 geformateerd. Maar de eerste waarde moet 00 of 80 zijn (niet-bootable of wel bootable) en dat is hij niet

[ Voor 15% gewijzigd door elgringo op 05-02-2003 15:19 ]

if broken it is, fix it you should


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
elgringo schreef op 05 februari 2003 @ 15:13:
Ik heb dus het volgende in de partition entry van de MBR van een 64mb flashdrive (die 1 partie heeft en fat32 is) staan:
code:
1
2
3
4
FF 0D 0A 44 69 73 6B 20 65 72 72 6F 72 FF 0D 0A 
50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 74 6F
20 72 65 73 74 61 72 74 0D 0A 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 AC BF CC 00 00


Volgens mij klopt dit niet.... Kan iemand me hier wat meer van vertellen?

De schijf is met windows 2000 geformateerd. Maar de eerste waarde moet 00 of 80 zijn (niet-bootable of wel bootable) en dat is hij niet
Klopt de rest wel of niet?
Kun je zo'n 'image' niet onder Linux mounten en dan de Linux FAT32 code gebruiken?

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
OlafvdSpek schreef op 05 februari 2003 @ 16:34:
[...]

Klopt de rest wel of niet?
Kun je zo'n 'image' niet onder Linux mounten en dan de Linux FAT32 code gebruiken?
Is mogelijk maar gaat veel tijd inzitten, en ik kan die rest niet controleren omdat van de MBR afhangt....

Ik wil nu met windows 2000 op harddisk1 komen (usb pendrive) deze is bekend onder \device\harddisk1

Hoe kan ik hiervan lezen. Deze heeft 2 partities terwijl ik er maar een in het echt heb. Hoe kan ik hiervan de MBR lezen?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
char _devicename[] = "\\Device\\Harddisk1\\Partition0";

    hDevice = CreateFile(_devicename, 
        GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, 
        NULL, OPEN_EXISTING, 0, NULL); 
 
    if (hDevice == INVALID_HANDLE_VALUE) 
        return NULL;

    // Setting the pointer to point to the start of the sector we want to read ..
    SetFilePointer (hDevice, (startinglogicalsector*512), NULL, FILE_BEGIN); 

    if (!ReadFile (hDevice, buffer, 512*numberofsectors, &bytesread, NULL) )
         return NULL;


is wat ik heb, maar hij leest niets

if broken it is, fix it you should


  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
Huidige update:

Ik kan met device //physicaldrive1 mijn pendrive uitlezen. Nu het probleem ik kan dit alleen per sector (512 byte) Op zicht is dit niet erg. Maar het probleem komt pas bij het schrijven. Ik kan niet halverwege de sector 1 byte aan schrijven. Moet ik nu eerst de sector laden dan de nodige data veranderen en dan geheel terugzetten? of zijn hier andere functies voor

if broken it is, fix it you should


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
elgringo schreef op 06 February 2003 @ 11:32:
Huidige update:

Ik kan met device //physicaldrive1 mijn pendrive uitlezen. Nu het probleem ik kan dit alleen per sector (512 byte) Op zicht is dit niet erg. Maar het probleem komt pas bij het schrijven. Ik kan niet halverwege de sector 1 byte aan schrijven. Moet ik nu eerst de sector laden dan de nodige data veranderen en dan geheel terugzetten? of zijn hier andere functies voor
Ja, eerst volledige sector lezen, dan schrijven.
elgringo schreef op 05 February 2003 @ 16:38:
Is mogelijk maar gaat veel tijd inzitten, en ik kan die rest niet controleren omdat van de MBR afhangt....
Ik bedoel de rest van het MBR. Die kun je toch wel controleren?
En denk je dat alles zelf schrijven simpeler/sneller gaat dan de Linux code gebruiken?

  • elgringo
  • Registratie: Januari 2001
  • Laatst online: 23-03 09:50
MBR kan ik uitlezen en klopt.

Nu het volgende probleem. de MBR verwijst naar LBA 63 als begin sector. Dit moet een volume ID zijn. Nu heb ik deze gecontroleerd met de fat16 volume id (flashdrive is fast16 geformateerd) (zie Fat 16 volume id ) maar volume label staat niet in de volume id (offset 43) maar in sector 564 (offset 0). Is dit weer een of andere nieuwe standaard ofzo???? Want in het volume id staat bij volume label: NO NAME.

En de structuur van fat32 van een volume id, weet iemand waar ik deze kan vinden. Na lang zoeken kwam ik alleen bij die van fat16. (of specsheets van fat16 & fat32)

gequote van een site:
Volume Label:
This field was used to store the volume label, but the volume label is now stored as a special file in the root directory.

De vraag nu: welke file. En hoe begin je een fat16 partitie te lezen (fat32 weet ik al)

[ Voor 40% gewijzigd door elgringo op 07-02-2003 10:53 ]

if broken it is, fix it you should

Pagina: 1