Skocz do zawartości

Urządzenie nie widzi MSC USB FAT12 po formacie z FileX


Gieneq

Pomocna odpowiedź

Może wyważam otwarte drzwi, więc napiszę.

Potrzebuję na szybko przetestować jeden pomysł - urządzenie USB z logowaniem do pendriva i telemetrią. STM32 ma 2 USB:

  • MSC Device widziany z 64kB pamięci.
  • MSC Host z dołączonym pendrivem,

Pomiędzy jest system FAT na RAMie. Urządzenie ma akceptować małe pliki, zapisywać 1 w ramie i przerzucać go do pendriva. Po zapisaniu pliku, ma go wysłać po MQTT, usunąć go z ramu i kontynuować z kolejnym.

Z laptopem działa, wykrywa nowe pliki. Na wejściu MSC Device jest interfejs zapisu/odczytu sektorów sterujący dostępem do systemu FAT. Osobny wątek RTOSa śledzi zmiany w plikach.

Problem w tym, że tego rozwiązania nie widzi docelowe urządzenie. Nie widzi ono też klasy MSC od stlinka. Ale uwaga! Jak zamiast FileX FAT dam funkcjom MSC Device dostęp do bufora w RAMie i sformatuję to z windowsa to działa!

Pomyślałem że jest problem z sektorem 0 Boot w systemie FAT12. Porównałem zawartość przy pomocy programu testdisk i dla:

  • formatowania z FileX dostałem ostrzeżenie że brak informacji o użytym FAT, ale ta informacja jest do wydedukowania z liczb bytes per sector i sectors per cluster

image.thumb.png.523425a1754c5609dcd40a4abccbf5dc.png

  • formatowanie z Win ostrzeżenie że jest nietypowa liczba zarezerwowanych sektorów.

from_windows.thumb.PNG.fd4989c66b0daf9edd141b532d4af424.PNG

Oglądając dump sektora 0 widzę, że na win jest sporo i chyba za dużo, bo jest też treść komunikatów:

image.thumb.png.ee3e491871336242f575cda7704e64f3.png

A dla FileX są najistotniejsze inforamcje (w końcu to działa ale tylko z PC), ale ogólnie troche mało:

image.thumb.png.2465197921f51b915bc2ac401e39671a.png

Właśnie chatGPT lepi sektor0 win do arraya C i przetestuję czy takie ręczne sformatownie coś zmieni, ale może ktoś ma na to lepszy pomysł.

 

Link do komentarza
Share on other sites

Zaskakująco dobrze podziałała ta metoda. Skopiowałem cały sektor 0 boot wygenerowany z formatu windowsa:

static const UCHAR sector_boot_win[] = {
    0xEB, 0x3C, 0x90, 0x4D,  0x53, 0x44, 0x4F, 0x53,  0x35, 0x2E, 0x30, 0x00,  0x02, 0x01, 0x06, 0x00,
    0x02, 0x00, 0x02, 0x80,  0x00, 0xF8, 0x01, 0x00,  0x01, 0x00, 0x01, 0x00,  0x00, 0x00, 0x00, 0x00,
	0x00, 0x00, 0x00, 0x00,  0x80, 0x00, 0x29, 0xF2,  0x32, 0xf6, 0x50, 0x4e,  0x4f, 0x20, 0x4e, 0x41,
	0x4D, 0x45, 0x20, 0x20,  0x20, 0x20, 0x46, 0x41,  0x54, 0x31, 0x32, 0x20,  0x20, 0x20, 0x33, 0xC9,
	0x8E, 0xD1, 0xBC, 0xF0,  0x7B, 0x8E, 0xD9, 0xB8,  0x00, 0x20, 0x8E, 0xC0,  0xFC, 0xBD, 0x00, 0x7C,
	0x38, 0x4E, 0x24, 0x7D,  0x24, 0x8B, 0xC1, 0x99,  0xE8, 0x3C, 0x01, 0x72,  0x1C, 0x83, 0xEB, 0x3A,

	0x66, 0xA1, 0x1C, 0x7C,  0x26, 0x66, 0x3B, 0x07, 0x26, 0x8A, 0x57, 0xFC, 0x75, 0x06, 0x80, 0xCA,
	0x02, 0x88, 0x56, 0x02,  0x80, 0xC3, 0x10, 0x73, 0xEB, 0x33, 0xC9, 0x8A, 0x46, 0x10, 0x98, 0xF7,
	0x66, 0x16, 0x03, 0x46,  0x1C, 0x13, 0x56, 0x1E, 0x03, 0x46, 0x0E, 0x13, 0xD1, 0x8B, 0x76, 0x11,
	0x60, 0x89, 0x46, 0xFC,  0x89, 0x56, 0xFE, 0xB8, 0x20, 0x00, 0xF7, 0xE6, 0x8B, 0x5E, 0x0B, 0x03,
	0xC3, 0x48, 0xF7, 0xF3,  0x01, 0x46, 0xFC, 0x11, 0x4E, 0xFE, 0x61, 0xBF, 0x00, 0x00, 0xE8, 0xE6,
	0x00, 0x72, 0x39, 0x26,  0x38, 0x2D, 0x74, 0x17, 0x60, 0xB1, 0x0B, 0xBE, 0xA1, 0x7D, 0xF3, 0xA6,
	0x61, 0x74, 0x32, 0x4E,  0x74, 0x09, 0x83, 0xC7, 0x20, 0x3B, 0xFB, 0x72, 0xE6, 0xEB, 0xDC, 0xA0,
	0xFB, 0x7D, 0xB4, 0x7D,  0x8B, 0xF0, 0xAC, 0x98, 0x40, 0x74, 0x0C, 0x48, 0x74, 0x13, 0xB4, 0x0E,
	0xBB, 0x07, 0x00, 0xCD,  0x10, 0xEB, 0xEF, 0xA0, 0xFD, 0x7D, 0xEB, 0xE6, 0xA0, 0xFC, 0x7D, 0xEB,
	0xE1, 0xCD, 0x16, 0xCD,  0x19, 0x26, 0x8B, 0x55, 0x1A, 0x52, 0xB0, 0x01, 0xBB, 0x00, 0x00, 0xE8,
	0x3B, 0x00, 0x72, 0xE8, 0x5B, 0x8A, 0x56, 0x24, 0xBE, 0x0B, 0x7C, 0x8B, 0xFC, 0xC7, 0x46, 0xF0,
	0x3D, 0x7D, 0xC7, 0x46, 0xF4, 0x29, 0x7D, 0x8C, 0xD9, 0x89, 0x4E, 0xF2, 0x89, 0x4E, 0xF6, 0xC6,
	0x06, 0x96, 0x7D, 0xCB, 0xEA, 0x03, 0x00, 0x00, 0x20, 0x0F, 0xB6, 0xC8, 0x66, 0x8B, 0x46, 0xF8,
	0x66, 0x03, 0x46, 0x1C, 0x66, 0x8B, 0xD0, 0x66, 0xC1, 0xEA, 0x10, 0xEB, 0x5E, 0x0F, 0xB6, 0xC8,
	0x4A, 0x4A, 0x8A, 0x46, 0x0D, 0x32, 0xE4, 0xF7, 0xE2, 0x03, 0x46, 0xFC, 0x13, 0x56, 0xFE, 0xEB,
	0x4A, 0x52, 0x50, 0x06, 0x53, 0x6A, 0x01, 0x6A, 0x10, 0x91, 0x8B, 0x46, 0x18, 0x96, 0x92, 0x33,
	 0xD2, 0xF7, 0xF6, 0x91, 0xF7, 0xF6, 0x42, 0x87, 0xCA, 0xF7, 0x76, 0x1A, 0x8A, 0xF2, 0x8A, 0xE8,
	0xC0, 0xCC, 0x02, 0x0A, 0xCC, 0xB8, 0x01, 0x02, 0x80, 0x7E, 0x02, 0x0E, 0x75, 0x04, 0xB4, 0x42,
	0x8B, 0xF4, 0x8A, 0x56, 0x24, 0xCD, 0x13, 0x61, 0x61, 0x72, 0x0B, 0x40, 0x75, 0x01, 0x42, 0x03,
	0x5E, 0x0B, 0x49, 0x75, 0x06, 0xF8, 0xC3, 0x41, 0xBB, 0x00, 0x00, 0x60, 0x66, 0x6A, 0x00, 0xEB,
	0xB0, 0x42, 0x4F, 0x4F, 0x54, 0x4D, 0x47, 0x52, 0x20, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x52, 0x65,
	0x6D, 0x6F, 0x76, 0x65, 0x20, 0x64, 0x69, 0x73, 0x6B, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74,
	0x68, 0x65, 0x72, 0x20, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x2E, 0xFF, 0x0D, 0x0A, 0x44, 0x69, 0x73,
	0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xFF, 0x0D, 0x0A, 0x50, 0x72, 0x65, 0x73, 0x73, 0x20,

	0x61, 0x6E, 0x79, 0x20,  0x6B, 0x65, 0x79, 0x20,  0x74, 0x6F, 0x20, 0x72,  0x65, 0x73, 0x74, 0x61,
	0x72, 0x74, 0x0D, 0x0A,  0x00, 0x00, 0x00, 0x00,  0x00, 0x00, 0x00, 0xAC,  0xCB, 0xD8, 0x55, 0xAA
};

Po podłączeniu do PC lub urządzenia uzupełnianie są kolejne sektory systemowe.

A tu np widać zmiany wprowadzone nowym folderem zlokalizowanym w roocie systemu plików:

image.thumb.png.6b37ca6d5e206779b42f401bcf9368c0.pngimage.thumb.png.286522cbba3b9361ae12d6fd3bafd0c3.png

I widoczny log wygenerowany z urządzenia:

image.thumb.png.3f1cd65894e03541f54a10ee2d8f5181.png

To jednak nie rozwiązuje problemu, bo chcę mieć też kompatybilny system plików na STM. Jest jeden przykład z USB MSC Device i kartą SD który działa z urządzeniem i wewnętrznie, porównam.

  • Lubię! 1
Link do komentarza
Share on other sites

Treker
Ta treść została wynagrodzona przez moderatora!

Gieneq otrzymał odznakę: "Odkrywca (podanie odp. na własne pytanie)"

Dobra, się rozwiązało. Trzeba było dopisać coś na starcie boot codu, o dziwo działa:

image.thumb.png.8913564ab4a4e4d5918ea59a4c23b052.png

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.