logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

FatFS nie zapisuje poprawnie bloków większych niż 512B.

24 Maj 2018 20:58 795 6
REKLAMA
  • #1 17238808
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • Pomocny post
    #2 17238835
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    Masz źle zaimplementowane funkcje dostępu do karty SD. Czytasz i zapisujesz tylko jeden blok zamiast tyle ile jest przekazywanych przez parametr count:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    PS: Używasz *.rar? Serio? Przypominają mi się lata 90.
  • REKLAMA
  • #3 17238852
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #4 17238875
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    @atom1477 Użyj czegoś współczesnego do kompresji plików: https://www.7-zip.org/

    Radziłbym również zmienić nastawienie do open source lub kodu publikowanego w internecie. Ten pierwszy nigdy nie daje żadnych gwarancji a ten drugi często jest robiony przez hobbystów.
  • #5 17238892
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • Pomocny post
    #6 17238910
    grko
    Poziom 33  
    Posty: 1386
    Pomógł: 247
    Ocena: 141
    Błąd nie jest w bibliotece tylko w kodzie łączącym bibliotekę z driverem SDIO. Więc był sprawdzony tylko "jako tako". Nie jestem jakimś ekspertem od FATFS. Jednak znalezienie tego błędu zajęło mi dosłownie 10 sekund. Może wiedziałem gdzie szukać;) Dla tych co by nie wiedzieli polecam poczytać ostrzeżenia kompilatora. Przy odpowiednich flagach kompilacji jest zgłaszany warning odnośnie braku użycia parametru count.
  • #7 17238923
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

✨ Użytkownik zgłasza problem z funkcją f_write w bibliotece FatFS, która poprawnie zapisuje tylko 512B danych, a przy większych blokach (np. 1024B, 2048B) pojawiają się błędy w postaci "krzaków" w pliku. Odpowiedzi sugerują, że problem leży w nieprawidłowej implementacji funkcji dostępu do karty SD, gdzie odczytywane i zapisywane są tylko pojedyncze bloki zamiast pełnej liczby bloków określonej przez parametr count. Użytkownik rozważa aktualizację biblioteki FatFS oraz dostosowanie wywołań funkcji do poprawnego zapisu wielu bloków. Ostatecznie, zmiana wywołania funkcji SD_WriteMultiBlocks na uwzględniające parametr count rozwiązała problem.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA