Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 4 wrz 2025, o 23:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 11 lis 2013, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Cześć, wziąłem na tapetę obsługę karty SD z bibliotekami PetitFS (baza to lekcja 17 z GB) utworzyłem sobie plik bazowy, do niego dopisuje dane wykorzystując funkcję mk_pf_file_append() i jest gitara.

Chciałem natomiast stworzyć funkcję która czyściłaby ten plik bazowy, tzn na nowo wypełniła go całego znakiem 0xA0. Problem mam taki, że jak zabieram się za wypełnianie pliku to wykona się zapis tylko jednego sektora (nie musi być on zerowy, wskazany) i funkcja pf_write() zwraca FR_DISK_ERR i następny zapis nie udaje się. Podpowiedzcie gdzie robię byka.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2014, o 18:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Dzisiaj wróciłem do problemu, udało mi się z nim poradzić, jednak wypełnianie pliku danymi jest powolne. Obecnie robię to wg tego schematu:

- Inicjalizacja karty
- zapis (sektor)
- Inicjalizacja karty
- zapis (sektor+ 1)
- Inicjalizacja karty
- zapis (sektor+ 2)
- itd..


Chciałem się poradzić czy wykorzystując PetitFS możliwe jest uzyskanie zapisu wg poniższego (co by przyspieszyło całość):

- Inicjalizacja karty
- zapis (sektor)
- zapis (sektor+ 1)
- zapis (sektor+ 2)
- itd...

Niestety z osiągnięciem celu wg drugiego schematu coś nie mogę sobie poradzić.

---------
Ok, już ogarnąłem.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2014, o 21:04 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27425
Lokalizacja: Szczecin
Pomógł: 1044

ten wymyślony przeze mnie sposób zapisu jest i będzie zawsze wolny - nadaje się do loggerów które nie mają zbyt dużych wymagań pod tym względem i opisywałem wady tego rozwiązania ...

Przyśpieszenie ? ... tak ale to już FarFS

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2014, o 22:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

Nie chodziło mi tutaj nad zapisem danych z prędkością kałasznikowa bez chwili wytchnienia :) Robię właśnie prosty logger i wykonywałem testy z plikiem do miesięcznego zapisu co 10 minut. Jeśli miesiąc się kończy, to chciałem wyczyścić ten plik (czyli wypełnić go całego znakami 0xA0), i właśnie ta operacja potrzebowała sporo czasu.

Ale już zrobiłem sobie workarounda, robię to w ten sposób, że na końcu dopisywanego do pliku pojedynczego rekordu dodaje właśnie jeden znak 0xA0, a jak plik się skończy to robię skok na początek pliku i tam już zaraz na mnie czeka znak 0xA0 i funkcja append radzi sobie mimo tego, że reszta znaków jest inna.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2014, o 22:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 maja 2012
Posty: 471
Lokalizacja: ZGY/ZS
Pomógł: 30

dambo napisał(a):
a czemu ma go kasować ? Możesz łatwo zrobić 12 plików dla każdego miesiąca :) np po nazwie pliku dajesz 2 spacje i potem tam dopisujesz w programie nr miesiąca przerobiony na string.


Tak też właśnie planowałem zrobić, aby ominąć kasowanie to można wykonać na kilka sposobów, właśnie z odpowiednią strukturą folderów i plików.
Testuje bibliotekę PetitFs i chciałem zobaczyć na jakie ograniczenia mogę trafić i czy można się z nimi jakoś uporać. Jak miałem wcześniej problem z dobrym ogarnięciem tej biblioteki (bazowałem na gotowych fragmentach z książek) to dzisiaj przez takie szukanie dziury w całym dosyć dobrze zrozumiałem o co chodzi z tym wszystkim i jak tego się używa.

_________________
eDiyCraft.blogspot.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO