<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[SDS PLC/PAC: Měření Energie & OnlineTechnology.cz - [vyřešeno] Alokace bloků na SD-kartě]]></title>
	<link rel="self" href="https://forum.sds.an-d.cz/extern.php?action=feed&amp;tid=1101&amp;type=atom" />
	<updated>2022-11-23T17:29:34Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.sds.an-d.cz/viewtopic.php?id=1101</id>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7537#p7537" />
			<content type="html"><![CDATA[<p>Dokumentace opravena (chybové kódy).</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-11-23T17:29:34Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7537#p7537</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7533#p7533" />
			<content type="html"><![CDATA[<p>Ano, takto to funguje. Já jsem sice počítal s tím, že budu soubor rozšiřovat průběžně, jakmile dojde k jeho naplnění, ale to už si vyřeším jinak. I tak se to hodí.</p><p>Ještě jsem při pokusech narazil na chybu -20, která také není zatím zdokumentována.</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-11-23T09:20:48Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7533#p7533</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7530#p7530" />
			<content type="html"><![CDATA[<p>Vyzkoušel jste ?</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-11-22T19:28:01Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7530#p7530</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7521#p7521" />
			<content type="html"><![CDATA[<p>Odzkoušel jsem to a je to v pořádku - ten příklad byl špatně.</p><p>Základní princip pro file_expand() je v tom, že se musí provést nad souborem, který je zcela prázdný.</p><p>Zde je upravený původní příklad:</p><div class="codebox"><pre><code>void main(void)
{
       unsigned int handle;
       unsigned int w;
       int res;

       printf(&quot;Startn&quot;);

       while (0 == SDS_get_u32(3850))
             ;

       printf(&quot;SD Card ready, block size=%dn&quot;, SDS_get_u32(3852));

       file_mkdir(&quot;web&quot;);

       // soubor vytvorime do podslozky &quot;web&quot; at se na tento soubor pak muzem podivat pres prohlizec

       if ((res = file_open(&amp;handle, &quot;web/test1.txt&quot;, &quot;w+&quot;)) != 0)
          printf(&quot;File open error %dn&quot;, res);

       printf(&quot;File open - handle: %dn&quot;, res);

       // expand lze provest jedine na novy prazdny soubor, a to jen jednou
       if ((res = file_expand(handle, 10000, 1)) != 0)
          printf(&quot;File expand error %dn&quot;, res);

       // a muzeme zapisovat a zapisovat ... atd.
       if ((res = file_write(handle, &quot;TEST&quot;, 4, &amp;w)) != 0)
          printf(&quot;File write error %dn&quot;, res);

      
       // always close
       file_close(&amp;handle);

       printf(&quot;File closedn&quot;);

       //
       while (1)
          ;
}</code></pre></div><p>Přesto, jeden závěr mi z toho vyšel, pro doplněni do FW - a to zjemnění chybových kódů (ať vše není pod generickým -7). V novém FW budou nové kódy -20 a -21.</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-11-11T09:02:16Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7521#p7521</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7520#p7520" />
			<content type="html"><![CDATA[<p>Zatím jsem to vyřešil vlastní funcí expand, v které se napozicuji na konec souboru a zapíšu &quot;prázdný&quot; blok požadované velikosti (to by mohlo podobně jako původní expand minimalizovat zápisy do FAT). Jen mám dojem, že je tam nějaké omezení v délce bufferu pro file_write, protože od jisté velikosti rozšíření mi to hlásilo chybu.</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-11-09T09:46:04Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7520#p7520</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7503#p7503" />
			<content type="html"><![CDATA[<p>Je možné že je nějaký problém ve firmware. Vyzkouším to.<br />Za tou chybou -7 je skryto více vnitřních možností, takže si to musím odkrokovat, pokud se mi to povede zreplikovat.</p><p>Hodnoty tam jsou správně, to problém nebude.</p><p>Dám vědět.</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-10-27T07:19:47Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7503#p7503</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7499#p7499" />
			<content type="html"><![CDATA[<p>První možnost to nebude, na tom se asi shodneme.</p><p>SD-karta je nová, 8GB, zformátovaná jako exFAT s velikostí alokační jednotky 512B. Expand jsem zkoušel i s parametrem 512B a 1024B se stejným výsledkem. Ještě mohu zkusit jinou kartu nebo jiný FAT systém. Ale udivuje mě, že zápis se skytou alokací (file_write) nového bloku funguje, ale alokace jednoho bloku pomocí expand ne. Nemůže být problém s přetypováním int32 na int64? Je konstanta 10000 správně? 10000ULL bohužel nefunguje.</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-10-26T19:08:17Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7499#p7499</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7497#p7497" />
			<content type="html"><![CDATA[<p>Jde o dvě samostatné záležitosti.</p><p><strong>První</strong> je před-alokace informace ve FAT tabulce, pro vybraný soubor.<br />Tady jde o optimalizaci zápisu. Pokud není soubor před-alokován, tak pro každý zápis dat, který si vyžádá nový FAT cluster, dojde k dvojitému write přístupu na SD kartu (zápis do FAT pro alokaci clusteru, a zápis dat samotných). Což je zpomalení nejméně o polovinu. Tomu se dá plně předejít před-alokací FAT tabulky pro tento soubor.</p><p><strong>Druhá</strong> je jednosektorová write cache na úrovni driveru v SDS. Ano, ta se dá plně pokořit pomocí file_sync().<br />Nicméně, při zápisu 10 až 160 B, by případná ztráta byla (snad) akceptovatelná, protože do jednoho sektoru (512B) se těchto prvků zase tolik nevleze.<br />Flush této cache se provádí i automaticky při uzavření souboru.<br />Tato cache má velký vliv na výkon - pokud ji nevyužijete na straně SDS, stejně +/- skončíte s nějakou podobnou formou na straně svého FC programu, a tam bude riziko ztráty o to větší (SDS se při detekci výpadku napájení aspoň snaží kartu uzavřít, to v programu nejde).</p><p>Každopádně, jak jsem psal, obě tyto záležitosti jsou na sobě zcela nezávislé.</p><p>Jak si to pak interně organizuje SD karta, to je sázka do loterie. Ano mohou být systémy které to mají (pro některé typy SD karet) odkoukané / změřené, ale pak mohou zcela pohořet pokud se najednou použije karta jiná.<br />Pro SDS jsem skončil s tímto řešením, jednodušeji už to dále vymyslet moc nepůjde.</p><p>---</p><p>Chyba -7 pro danou funkci - by znamenala že buď je soubor neexistuje, nebo není otevřen s parametrem WRITE.<br />Tyto dva problémy to nejspíše nebudou.</p><p>Další důvod pro -7 je, že se nepovede nalézt souvislý blok (FAT clustery) o požadované velikosti (tzn. že je FAT natolik fragmentovaná, že se to nemá kam expandovat).<br />To se dá ověřit snadno, zkuste ten expand provést s mnohem menší požadovanou velikostí, jestli to projde.<br />Nebo si kartu dát do PC a FAT si zanalyzovat vhodným SW nástrojem, jak moc je fragmentováná (nebo ne).</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-10-26T16:54:43Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7497#p7497</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7495#p7495" />
			<content type="html"><![CDATA[<p>Tak se k tomu musím vrátit. Funkce file_expand mi vrací hodnotu -7 (DENIED). Co dělám špatně? Přikládám celý program.</p><div class="codebox"><pre><code>    void main(void)
    {
       printf(&quot;Startn&quot;);
       while (SDS_get_u32(3850) == 0)
             ;
       printf(&quot;SD Card ready, block size=%dn&quot;, SDS_get_u32(3852));

       file_mkdir(&quot;web&quot;);
       unsigned int handle;
       unsigned int w;
       int res;
       if ((res = file_open(&amp;handle, &quot;test.dat&quot;, &quot;w+&quot;)) != 0)
          printf(&quot;File open error %dn&quot;, res);
       printf(&quot;File open OK, handle: %dn&quot;, res);
       if ((res = file_write(handle, &quot;EXPAND&quot;, 6, &amp;w)) != 0)
          printf(&quot;File write error %dn&quot;, res);
       if ((res = file_sync(handle)) != 0)
          printf(&quot;File flush error %dn&quot;, res);
       printf(&quot;File write OKn&quot;);
       if ((res = file_expand(handle, 10000, 1)) != 0)
          printf(&quot;File expand error %dn&quot;, res);
       while (1)
          ;
    }</code></pre></div><p>Výstup je:</p><div class="codebox"><pre><code>Start
SD Card ready, block size=512
File open OK, handle: 0
File write OK
File expand error -7</code></pre></div><p>Je vidět, že zapisovat jde, protože metoda file_write a file_sync fungují.</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-10-26T14:15:40Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7495#p7495</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7491#p7491" />
			<content type="html"><![CDATA[<p>Díky za vysvětlení. Je to v podtstatě tak, jak jsem předpokládal. Nebylo mi jasné, jestli alokaci bloků provádí řadič SD-karty nebo SDS.</p><p>Doplním to jen o vlastní zkušenost, třeba se to někomu bude hodit. Používáme SD-kartu ve dvou aplikacích na embedded systémech s Windows CE:</p><p>- Jednou pomocí MSMQ, což je správa front zpráv, přenášených mezi aplikacemi (nebo jednou aplikací) - součást systému. Má dva kanály - zápisový a čtecí a měla by být optimalizována právě pro embedded systémy - tedy spolehlivost, odolnost proti náhodným pádům systému a optimalizaci využití SD-karty. Je to opravdu spolehlivé a i po několika letech běží systémy bez problémů. Fronta vytáří několik generací souborů, a to i přes to, že je stále téměř prázdná. Jestli je to opravdu proto, aby se šetřila SD karta, se mohu jen dohadovat, nicméně mě to inspirovalo k postupu, který sem již popsal v předchozím příspěvku. </p><p>- Druhá aplikace používá MS SQL CE - a tam už dříve než po roce nastávají problémy - aplikace se neustále zpomaluje a zpomaluje, až to může dojít do stádia, že je SD-karta částečně nečitelná. A to i přes to, že se do databáze neustále přidávají nové záznamy, aniž by se staré mazaly. SQL CE asi není dobře optimalizován, v poslední (dnes už stejně nepodporované) verzi WIndows CE dokonce SQL CE chybí a ani se tam nedá doinstalovat. Používáme SQL Lite, ale ani tady si nejsem moc jist spolehlivostí.</p><div class="quotebox"><cite>adamn napsal:</cite><blockquote><p>Jediná optimalizace (&quot;cache&quot;), ve SDS, je pouze na úrovni jediného sektoru, tedy typicky 512 B. Viz funkce file_sync().<br />Tato cache má význam (a způsobí tedy zrychlení) jen při zápisu bloků menších než velikost sektoru (jinak se toto neuplatní).<br />Při zápis menších bloků (než velikost 1 sektoru - POZOR ale vždy v rámci 1 stejného sektoru) dochází k jejich cachování, a uložení je provedeno až při: (a) přechodu zápis na jiný sektor, (b) zavoláním file_sync(), (c) uzavřením souboru.<br />Pokud by se toto nedělalo, tak každý zápis, by vždy znamenal čtení, smazání a zápis celého sektoru. A to je nežádou opotřebení SD karty, kde se má zápis dělat ideálně po celých sektorech.</p></blockquote></div><p>To je právě můj problém, protože do souboru se budou zapisovat události různé délky (cca 10 - 160 bytů) a alokovat pro každou zprávu maximální velikost nebo dokonce velikost bloku 512 mi připadá jako příliš velké plýtvání. Takže každé zprávě bude předcházet délka a ukazatel posledního zápisu (tell) si vždy uložím do zálohované RAM. V případě pádu systému bych zapisoval dál od uloženého ukazatele, ale data z přechozího cachovaného bloku by nemusela být uložena. To by mohlo způsobit fatální problémy při čtení - délka by mohla být nesmyslná a já bych se nikdy správně nenapozicoval na správný záznam. Takže mi zbývá volat flush po každém zápisu nebo ci cachovat sám s tím, že ukazatel zápisu do RAM uložím až po zápisu cache. Ostatně z fronty bude možné současně číst (ukazatel čtení v RAM), takže ten odložený zápis by se pak stejně moc nevyužil (pokud nemá soubor samostatnou cahe pro čtení i zápis). I tak uvažuji, že budu data nějak synchronizovat podobně jako u sériové komunikace nějakým startbytem, popř. endbytem, abych se v případě poškozeného souboru nějak správně napozicoval.</p><p>Tím jsem snad téma vyčerpal a nebudu už s tím otravovat. Pokud bych se však snad v něčem podtstně mýlil, tak budu rád, když dáte vědět.</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-10-26T09:39:39Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7491#p7491</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7489#p7489" />
			<content type="html"><![CDATA[<p>Práce s SD kartou je blokujícíc, tedy nepoužívá se nějaká větší &quot;file cache&quot; - každé čtení je vždy fyzicky provedeno v okamžik požadavku, a každý zápis je proveden v okamžik požadavku (mimo aktivitu jednosektorové cache). <br />Do dokončení provedení dané činnosti (komunikace s SD kartou) je FC program zablokován (je tam timeout, samozřejmě). Bez ohledu na vyšší vrstvy, tedy jestli je soubor dopředu &quot;natáhnutý&quot; nebo se postupně natahuje s každým dalším zápisem.</p><p>Jediná optimalizace (&quot;cache&quot;), ve SDS, je pouze na úrovni jediného sektoru, tedy typicky 512 B. Viz funkce file_sync().<br />Tato cache má význam (a způsobí tedy zrychlení) jen při zápisu bloků menších než velikost sektoru (jinak se toto neuplatní).<br />Při zápis menších bloků (než velikost 1 sektoru - POZOR ale vždy v rámci 1 stejného sektoru) dochází k jejich cachování, a uložení je provedeno až při: (a) přechodu zápis na jiný sektor, (b) zavoláním file_sync(), (c) uzavřením souboru.<br />Pokud by se toto nedělalo, tak každý zápis, by vždy znamenal čtení, smazání a zápis celého sektoru. A to je nežádou opotřebení SD karty, kde se má zápis dělat ideálně po celých sektorech.</p><p>Dále je zde ještě další záležitost.</p><p>Pokud si soubor dopředu nenatáhnete (file_expand), tak při každém zápisu (který obsah dat, tj. velikost souboru, zvětšuje) dojde nejen k zápisu dat samotných, ale i k zápisu do FAT tabulky (pro každý nově přidaný sektor), tedy dvojnásobné zpoždění. <br />Zde se tedy významně ukazuje proč je lepší si soubor alokovat předem.</p><p>-</p><p>Na SD kartě nelze nikdy garantovat, že bude zápis do stejného fyzického sektoru v paměťovém chipu. To je starost kontroléru v SD kartě (wear-leveling), a prakticky každá si to řeší sama a jinak. Takže může dojít k různým zpožděním. Prakticky jediné zpoždění, které lze pocítit, je vždy mazání sektoru v paměťovém chipu SD karty. Čím více se zapisuje, a pak se má mazat (nebo zapisovat znovu na už zapsané místo), tím více to (postupem času) trvá.</p><p>Dále je zde otázka opakované alokace FAT sektorů. Z principu funkce SD karty ale tato otázka nemá význam. I kdyby se FAT opakovaně strefila do stejných sektorů, doba jejich zápisu/přepisu (čtení, smazání a pak zápis) bude trvat cca stejně.<br />Jediná optimalizace zde je, tak jak jsem psal výše, vyhnout se postupnému zápisu do FAT pomocí před-alokace FAT,<br />a vhodně pracovat s jednosektorovou cache.</p><p>-</p><p>Ověření, zda-li soubor existuje - např. pomocí file_open()</p><p>Výpis obsahu disku/složky - je připraveno ale ještě neuvolněno (specifické FC funkce), až to bude dotestováno tak s novým firmware to bude k dispozici.</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-10-25T16:53:30Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7489#p7489</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7481#p7481" />
			<content type="html"><![CDATA[<p>Ano, to je mi jasné. Jedná se mi o to, jaká je pravděpodobnost, že když smažu soubor, alokují se znovu ty samé bloky. Podobně jako třeba v heapu, kdy se při pravidelné alokaci a uvolňování přiřazuje stále to stejné fyzické místo. Tímto postupem si &quot;ničím&quot; stále ty samé bloky, zatímco jiné zůstávají &quot;nedotčené a zdravé&quot;. Pokud to neřeší systém (podobně jako např. řadiče SSD disků), tak to udělám tak, že si SD-kartu budu postupně zaplňovat sám až téměř do konce a pak teprve začnu uvolňovat ty nejstarší soubory. Velikost alokace a počet souborů si pak musím vhodně zvolit taky tak, ať zbytečně neničím FATku častými zápisy.</p><p>Ještě mám k SD-kartám další dotaz:</p><p>- Probíhají odložené zápisy &quot;na pozadí&quot; mimo režii mého programu (např. v jiném vláknu systému), nebo až při nějaké jiné operaci s SD-kartou? Ztrátu jednoho záznamu jsem schopen oželet, ale pokud by jich v cache bylo víc a čekalo se, až překročím hranice bloku, tak to raději po každém zápisu provedu flush.</p><p>- Z dokumentace vyplývá, že žádná možnost zjistit obsah adresáře na SD-kartě neexistuje, takže si musím přehled udržovat sám (případně pokusem o otevření souboru zjistit, zda existuje). Je tomu tak, že?</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-10-25T10:46:56Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7481#p7481</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: [vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7477#p7477" />
			<content type="html"><![CDATA[<p>file_expand() s parametrem 1<br />viz návod https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_SD_card_functions</p>]]></content>
			<author>
				<name><![CDATA[adamn]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=7</uri>
			</author>
			<updated>2022-10-22T17:39:01Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7477#p7477</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[[vyřešeno] Alokace bloků na SD-kartě]]></title>
			<link rel="alternate" href="https://forum.sds.an-d.cz/viewtopic.php?pid=7476#p7476" />
			<content type="html"><![CDATA[<p>Plánuji vytvořit na SDS-BIG cyklickou frontu, ve které budou data přidávána i odebírána. Aby mi SD-karta vydržela co nejdéle, alokuji na začátku dostatečnou velikost souboru a budu do něj zapisovat od pozice 0 stále dál. V zálohované RAM si budu držet ukazatel zápisu i čtení, takže na začátku souboru bude postupně vznikat &quot;prázdné místo&quot; po vyčtených záznamech. V případě, že zápis dojde na konec souboru, nebudu jej přepisovat od začátku, ale uvažuji vytvořit další generaci souboru a první soubor ponechat, abych zabránil systému použít již alokované bloky. Teprve v okamžiku, až se začne SD-karta zaplňovat, nejstarší verze vymažu a alokuji nový soubor.</p><p>Je to nutné (vhodné) provádět to takto, nebo má SDS nějakou optimalizaci alokace bloků, takže se vždy alokují ty nejméně přepsané?</p>]]></content>
			<author>
				<name><![CDATA[absolonj]]></name>
				<uri>https://forum.sds.an-d.cz/profile.php?id=11958</uri>
			</author>
			<updated>2022-10-22T16:43:01Z</updated>
			<id>https://forum.sds.an-d.cz/viewtopic.php?pid=7476#p7476</id>
		</entry>
</feed>
