Hallo
Ik ben al een tijdje aan het stoeien om een SD kaart te gebruiken icm een 8 bit Cypress PSOC1 controller.
Hiervoor wilde ik PetitFS gebruiken ivm geheugenbeperkingen.
Na het nodige klussen en ombouwen draait alles op de cypress, de kaart wordt geinitialiseerd, maar bij het mounten gaat het fout.
de bedoeling is:
lees het boot record sector 0 (de laatste 2 bytes). Dit moet 0xAA55 zijn (zo niet is het geen boot record)
Als dat klopt lees je 2 identificatie bytes in van FAT (0x4146), dit kan op 2 locaties staan afhankelijk van de FAT versie.
Als deze identificatie aanwezig is --> valide FAT partitie.
Geen identificatie gevonden --> mrb, zoek de LBA in de partition table (sector 0). zoek nogmaals naar identificatie bytes, maar nu op de LBA ipv sector 0.
De eerste search faalt (wel 0xAA55 maar geen 0x4146), terwijl die wel aanwezig is bij sector 0 volgens HxD:

De reden die ik daarvoor vond was dat dergelijke programma's vaak ook alleen vanaf de LBA kunnen lezen. Wat ik dus zie als sector 0 in HxD is eigenlijk de LBA.
Bij de tweede search heeft hij voor de LBA gevonden 0x00 20 00 00 in de partitietabel. Afhankelijk van de endianess zou dat uitkomen op 8192 of 131072. Die eerst lijkt me waarschijnlijker. en als ik in HxD kijk vind ik inderdaad iets wat lijkt op een partitie qua data, maar niet met 0xAA55 of 0x4146 ik zou denken dat ik alweer te ver zit:

Sterker nog. Als ik kijk wat het programma gaat doen. Die gaat sector 16384 uitlezen (kan ik zien op de usb logic analyzer). Buiten dat ik geen idee heb hoe hij hierop komt lijkt dit al helemaal nergens op:
al is het wel het begin van een of andere datareeks. een aantal sectoren ervoor zijn allemaal 0.
Al met al weet ik niet meer waar ik het moet zoeken. Het zou niet zo ingewikkeld moeten zijn. Maar ik zit nu al 2 dagen te klooien om misschien wel iets heel simpels...
Wie heeft hier ervaring mee?
Ik heb de bijbehorende software onderaan gezet voor leesbaarheid.
Alvast bedankt
timberleek
edit:
toch wel veel code. Ik upload het even ergens
edit2:
zo dan maar even:
https://dl.dropboxusercontent.com/u/3264324/petitfs.rar
edit3:
Nog een reden waarom een lba van 16k sectoren niet klopt: Op de partitie staat een txt file met "hello world" erin. Die vind ik in HxD terug op sector 8384:
Ik ben al een tijdje aan het stoeien om een SD kaart te gebruiken icm een 8 bit Cypress PSOC1 controller.
Hiervoor wilde ik PetitFS gebruiken ivm geheugenbeperkingen.
Na het nodige klussen en ombouwen draait alles op de cypress, de kaart wordt geinitialiseerd, maar bij het mounten gaat het fout.
de bedoeling is:
lees het boot record sector 0 (de laatste 2 bytes). Dit moet 0xAA55 zijn (zo niet is het geen boot record)
Als dat klopt lees je 2 identificatie bytes in van FAT (0x4146), dit kan op 2 locaties staan afhankelijk van de FAT versie.
Als deze identificatie aanwezig is --> valide FAT partitie.
Geen identificatie gevonden --> mrb, zoek de LBA in de partition table (sector 0). zoek nogmaals naar identificatie bytes, maar nu op de LBA ipv sector 0.
De eerste search faalt (wel 0xAA55 maar geen 0x4146), terwijl die wel aanwezig is bij sector 0 volgens HxD:

De reden die ik daarvoor vond was dat dergelijke programma's vaak ook alleen vanaf de LBA kunnen lezen. Wat ik dus zie als sector 0 in HxD is eigenlijk de LBA.
Bij de tweede search heeft hij voor de LBA gevonden 0x00 20 00 00 in de partitietabel. Afhankelijk van de endianess zou dat uitkomen op 8192 of 131072. Die eerst lijkt me waarschijnlijker. en als ik in HxD kijk vind ik inderdaad iets wat lijkt op een partitie qua data, maar niet met 0xAA55 of 0x4146 ik zou denken dat ik alweer te ver zit:

Sterker nog. Als ik kijk wat het programma gaat doen. Die gaat sector 16384 uitlezen (kan ik zien op de usb logic analyzer). Buiten dat ik geen idee heb hoe hij hierop komt lijkt dit al helemaal nergens op:

al is het wel het begin van een of andere datareeks. een aantal sectoren ervoor zijn allemaal 0.
Al met al weet ik niet meer waar ik het moet zoeken. Het zou niet zo ingewikkeld moeten zijn. Maar ik zit nu al 2 dagen te klooien om misschien wel iets heel simpels...
Wie heeft hier ervaring mee?
Ik heb de bijbehorende software onderaan gezet voor leesbaarheid.
Alvast bedankt
timberleek
edit:
toch wel veel code. Ik upload het even ergens
edit2:
zo dan maar even:
https://dl.dropboxusercontent.com/u/3264324/petitfs.rar
edit3:
Nog een reden waarom een lba van 16k sectoren niet klopt: Op de partitie staat een txt file met "hello world" erin. Die vind ik in HxD terug op sector 8384:

[ Voor 100% gewijzigd door timberleek op 16-01-2015 16:52 ]