Záznamová karta pro mikroprocesor Rabbit

Rozměr: px
Začít zobrazení ze stránky:

Download "Záznamová karta pro mikroprocesor Rabbit"

Transkript

1 Ústav automatizace a měřící techniky Záznamová karta pro mikroprocesor Rabbit Diplomová práce Tomáš Kreuzwieser Brno, 2004

2 Zadání diplomové práce...

3 Prohlášení Prohlašuji, že jsem předloženou diplomovou práci zpracoval sám s konzultační pomocí vedoucího projektu a uvedených konzultantů. Použité literární prameny jsou uvedeny v literárních odkazech. Brno, 2. června

4 Poděkování Tímto chci poděkovat svému vedoucímu diplomové práce Ing. Zdeňku Bradáčovi za cenné rady a připomínky při vypracování diplomové práce. Dále děkuji svým rodičům za jejich podporu během studia.

5 Brno University of Technology Faculty of Electrical Engineering and Communication Department of Control, Measurement and Instrumentation Storage memory card for Rabbit microcontroller Thesis Major: Cybernetics, Control and Measurement Student: Tomáš Kreuzwieser Supervisor: Ing. Zdeněk Bradáč Abstract : The aim of this thesis is to design and realize an interconnection between Rabbit RCM3200 MCU and Multimedia Card (MMC). The thesis is an example of embedded system based on Rabbit RCM3200 MCU intended for mass data storage, e.g. for various applications in measurements. The thesis includes hardware design and realization of printed circuit board (PCB) and creation of libraries providing standard functions of FAT file system, such as data transfers, deleting, creating and moving files and directories. Designed library includes semaphores for using these functions in real time operating systems. The core of the unit is platform independent in order to be usable in other MCU systems. In the first part of the thesis all the currently available types of flash memory cards are described and compared. The second part deals with MMC card, serial peripheral interface (SPI), principles of FAT and Rabbit RCM3200 microcontroller. The last part is a description of concrete software solutions and includes several examples. Keywords: Embedded FAT file system, FAT, FAT12, FAT16, FAT32, File Allocation Table, FAT File System Specification, Boot Sector, Bios Parameter Block, BPB, Directory Structure, Long Directory Entries, FSInfo, MultiMedia Card, MMC, CompactFlash, CF, SPI, microcontroller, Rabbit, RCM3200, SPI, CCITT-16, CRC16, CRC7

6 vi Obsah Seznam obrázků Seznam tabulek x xi 1 Úvod 1 2 Technologie paměťových karet Rozdíl mezi pamětí technologie NAND a NOR Historie vývoje paměťových karet CompactFlash SmartMedia MultiMedia Card MemoryStick SecureDigital Memory Card extreme Digital Srovnání velikostí MultiMedia Card Vlastnosti Fyzická specifikace Rozměry karty Připojení k řídícímu systému Módy činnosti MMC mód SPI mód Registry MultiMedia Card v módu SPI Operating Conditions Register (OCR) Card Identification (CID) Register Card Specific Data (CSD) Register Příkazy MultiMedia Card v módu SPI Skupiny příkazů Formát příkazů Odezvy karty na příkazy Odezva R Odezva R1b Odezva R

7 vii Odezva R Inicializace SPI módu Nastavení velikosti bloku dat Čtení a zápis Čtení registrů CID a CSD Sběrnice SPI Sběrnice SPI u modulu RCM Zapojení SPI portů Funkce pro práci s SPI porty Kontrolní součty a CRC kódy Kontrolní součet CRC kódy Struktura disku a souborový systém FAT Základní pojmy Fyzická struktura média Logická struktura média Systém FAT Master Boot Record a Partition Table Zásady pro vytváření diskových oblastí: Základní kódy systému souborů Logický disk systému FAT Boot Record logického disku Bios Parameter Block (BPB) Extended Bios Parameter Block (EBPB) Načtení základních údajů z BPB a z Extended BPB Alokační tabulka souborů (FAT) Typy souborového systému FAT Určení typu FAT Obsah FAT Sledování řetězce FAT Převod čísla clusteru na číslo sektoru File System Info (FSI) Adresář Běžný adresář Root adresář

8 viii Adresářový záznam Speciální adresářové záznamy Uložení souborů a adresářů do nadřazeného adresáře Uložení souboru nebo adresáře s krátkým jménem Uložení souboru nebo adresáře s dlouhým jménem Soubor Jméno disku Unicode Kódovací schéma Unicode Consorcium RCM Úvod Hardware Vývojový kit Návrh prototypové desky Část napájení Konektory pro RCM Konektor CompactFlash a MMC Testovací rozhraní Softwarové vybavení Úvod Vlastnosti Cross platform Návrh knihovních funkcí Funkční prototypy koncových funkcí EMBFATFS Funkce pro MMC Funkce pro FAT Obdoby standardních funkcí Příklady vyšších funkcí Funkce main(void) Struktury Testovací program Závěr 72 Reference 74

9 ix Přílohy xii A.1 Schéma zapojení druhé verze univerzální desky xii A.2 Plošný spoj druhé verze univerzální desky xii A.3 CD-ROM xvi

10 x Seznam obrázků 1 Srovnání velikostí jednotlivých typů paměťových karet Rozměry Připojení paměťové karty MMC k řídícímu systému Způsob komunikace v MMC módu Zapojení konektoru v MMC módu Způsob komunikace v SPI módu Zapojení konektoru v SPI módu Formát odezvy R Formát odezvy R Inicializace SPI módu Nastavení velikosti bloku dat pro I/O operace s MMC kartou Čtení a zápis bloku dat MMC karty Celková koncepce systému se sběrnicí SPI Propojení stanic Master a Slave Význam parametrů CPOL a CPHA na SPI Čtení dat z paměti s rozhraním SPI Zápis dat do paměti s rozhraním SPI Způsob čtení z FAT Struktura adresáře Modul RCM Architektura modul RCM Porty modulu RCM Konektory modulu RCM Úvodní stránka příkladu Výpis root adresáře Schéma zapojení druhé verze univerzální desky xiii 27 Plošný spoj druhé verze univerzální desky (top) xiv 28 Plošný spoj druhé verze univerzální desky (bottom) xv

11 xi Seznam tabulek 1 Card Identification (CID) Register Card Specific Data (CSD) Register Verze specifikace MMC (část CSD STRUCT registru CSD) Verze specifikace MMC (část SPEC VERS registru CSD) Podporované třídy příkazů (část CCC registru CSD) Začlenění příkazů do jednotlivých tříd, první část Začlenění příkazů do jednotlivých třírd, druhá část Formát příkazu Seznam příkazů dostupných v módu SPI Činnost příkazů dostupných v módu SPI SPI porty modulu RCM Master Boot Record a Partition Table Struktura záznamu partition tabulky Začátek a konec oddílu (formát slova) Základní kódy systému souborů Bios Parameter Block Extended Bios Parameter Block pro FAT12 a FAT Extended Bios Parameter Block pro FAT Záznam FAT Záznam FAT Záznam FAT File System Info Atributy objektů Adresářový záznam SFNE Adresářový záznam LFNE Formát časových údajů Formát data První bajt libovolného záznamu Znaky povolené v záznamu SFNE

12 1 1 Úvod Záznam informací sehrál v historii lidstva svou nezaměnitelnou roli a byl důležitý pro úspěšný kulturní a průmyslový rozvoj civilizací již od dávných dob. Důvodem rozvoje byly obvykle potřeby vojenské, obchodní a vědecké. Uchovávání informace je neodmyslitelně spjato s jedním z nejdůležitějších vynálezů lidstva písmem. Objevilo se přibližně před pěti tisíci lety jako výsledek poměrně hluboké jazykové analýzy. Jeho význam spočívá především v tom, že umožnuje přenášet informace v čase a prostoru. Až do vzniku písma byla výměna informací vázána výhradně na konkrétní místo a čas, ve kterém probíhal rozhovor. Naproti tomu, písemné zprávy je možné přenášet i na jiná místa a uchovávat je pro další generace. Vynález písma je tak významný, že slouží jako mezník k rozdělení dějin na prehistorii a na období historické [3]. Současná doba je charakteristická uchováváním informací v nejrůznějších formách, nejenom písma a obrázků, jak tomu bylo v minulosti. Dnes jsou data získávána nejčastěji převodem a digitalizací hudebních, hlasových či video nahrávek z analogové podoby do podoby digitální, nebo pocházejí z dnes zvláště se rozmáhajících digitálních fotoaparátů a kamer. V neposlední řadě jsou digitální data získávána také z různých měřících přístrojů. Tato data je nutné po zpracování a případné kompresi někam uložit. To je zvláště významné v našem oboru. S vývojem stále lepších měřících přístrojů tento problém získává na důležitosti. Paměťové karty Multimedia Card jsou dnes prakticky nejlevnější a nejrozšířenější polovodičovou pamětí na trhu, a proto se využívají v různých embedded systémech jako levné paměťové médium. V mé diplomové práci jsem dostal za úkol tuto paměťovou kartu připojit k modulu Rabbit RCM3200, zrealizovat podpůrnou elektroniku a naprogramovat ovladače pro některý z běžně používaných souborových systémů. Výsledek mé práce je využitelný v embedded systémech, které potřebují zaznamenávat velké množství dat, nebo potřebují data zaznamenávat na vyměnitelná média. Při práci jsem kladl důraz na maximální spolehlivost. Modul RCM3200 obsahuje rychlý mikroprocesor, založený na známém procesoru Z80 firmy Zilog [5], paměť programu, paměť dat, dva konektory s piny I/O a 10/100BaseT ethernetové rozhraní. To vše na malé destičce plošných spojů o rozměrech mm. Jako souborový systém jsem si zvolil systém FAT, protože je běžně použitelný ve všech operačních systémech. Používá se ve většině embedded zařízení, je spolehlivý a relativně jednoduchý.

13 2 2 Technologie paměťových karet Nejpoužívanější pamětí pro trvalé uložení dat v přenosných zařízeních je paměť typu flash. Nelze ji přirovnat k disketě, ani pevnému disku, spíše k operační paměti. Rozdíl mezi paměťmi technologie NOR a pamětí NAND flash je jednak v tom, že u NAND flash paměti nejsou data ztracena po vypnutí napájení a také v tom, že data jsou zapisována po blocích. Na paměti NOR je zápis umožněn po jednotlivých bajtech [6]. Paměti flash mají několik výhod: Neobsahují žádné pohyblivé součásti, proto jsou tiché a odolné vůči otřesům. Velice nízká spotřeba energie (k zachování dat není potřeba žádná energie, ta je nutná pouze při zápisu nebo čtení). Malé rozměry a hmotnost. Spolu s velkou kapacitou u některých typů jsou ideální do všech přenosných elektronických zařízení. Spolehlivost. Mnoho karet používá kontrolu ukládání dat pomocí ECC a inteligentní řadiče, které zabraňují ukládání dat do špatných paměťových oblastí. Nejedná se o magnetická média, nejsou tedy citlivá na elektromagnetické záření. 2.1 Rozdíl mezi pamětí technologie NAND a NOR NAND Čtení a zápis po blocích (stránkách). Rychlý zápis/čtení velkého bloku dat. Náhrada pevných disků v přenosných zařízeních. NOR Čtení a zápis po jednotlivých bajtech. Rychlý přístup k jednotlivým buňkám paměti. Pomalé čtení/zápis velkého bloku dat. Paměti uschovávající důležité informace (například BIOSy počítačů, řídící čipy počítačových komponent nebo mobilních telefonů).

14 3 3 Historie vývoje paměťových karet Historie paměťových karet flash započala v roce 1990 s nástupem paměťových PC karet standardu PCMCIA. Tyto karty sloužily jako rozšíření stávajícího diskového prostoru a používaly se hlavně v přenosných počítačích. V roce 1992 došlo k revizi PC standardu IDE/ATA (PC ATA Specification). Při té příležitosti byl ustanoven standard IDE/ATA kompatibilních I/O PC karet. Toto rozhraní umožňovalo přímé připojení běžných IDE disků přes pasivní redukci. 3.1 CompactFlash Na základě této iniciativy vznikl v roce 1995 první návrh přenosných paměťových karet ve smyslu jak je známe dnes. Jejich jméno je CompactFlash. Hned od počátku byl tento návrh pojat jako otevřený standard s důrazem na eliminaci problémů s kompatibilitou zařízení různých výrobců. Tato skutečnost mu také zajistila úspěch. Záštitu nad tímto projektem nese sdružení velkých výrobců elektroniky, které si říká The CompactFlash Association, zkráceně CFA. CompactFlash (dále jen CF) technologie měla, a stále má, poměrně moderní vlastnosti. Vyznačuje se nízkou hmotností, malou spotřebou, vysokou dosažitelnou kapacitou a vysokou rychlostí. Tyto karty jsou vhodné pro jednoduché uchování a transport nejrůznějších typů digitálních informací s maximální spolehlivostí. V dnešní době poskytuje CompactFlash ze všech paměťových karet nejlepší poměr kapacita/cena. V některých zařízeních může být výhodný integrovaný IDE řadič, který umožňuje přímé připojení jako běžný IDE disk. Avšak někdy může být tato vlastnost naopak nevýhodou, protože k připojení je zapotřebí mnoho volných I/O pinů řídící jednotky. Primárně byl sice standard CompactFlash určen pro paměťové karty, ale postupem času se z tohoto návrhu vytvořila univerzální komunikační sběrnice, elektronicky kompatibilní s PCMCIA. Nejčastěji je využívána ve fotoaparátech firmy Canon. Vlastnosti: existuje v provedení Type I a Type II (Type II je širší) hmotnost: 2 až 10 gramů přenosová rychlost média: 150 kb/s až 4,5 MB/s

15 4 provozní teplota: -55 C až +85 C integrovaný IDE řadič životnost: až 1 mil. cyklů padesátipinové rozhraní provozní napětí: 3,3 V nebo 5 V rozměry: Type I (42,8 mm 36,4 mm 3,33 mm) Type II (42,8 mm 36,4 mm 5 mm) 3.2 SmartMedia Další významnou kartou je SmartMedia. Je to standard paměťových karet firmy Toshiba. Na trhu jsou od roku Součástí karty není řadič, což mělo umožnit výrobu velmi levných paměťových karet. Původní název tohoto typu karty je Solid State Floppy Disk Card (SS- FDC). Velikostí se podobá kreditní kartě, ale je asi o polovinu kratší. Pravděpodobně nejpoužívanější a nejznámější je díky fotoaparátům Olympus, kde byla hojně používána. Dnes je postupně nahrazována kartou xd. Vlastnosti: rozměry: 45 mm 37 mm 0,76 mm hmotnost: 1.8 g provozní teplota: 0 C až +85 C životnost: 1 mil. cyklů rozhraní: 22 plošek výborný poměr kapacita/cena spotřeba energie: čtení maximálně 56 ma

16 5 zápis maximálně 14 ma rozměry: Type I (42,8 mm 36,4 mm 3,33 mm) Type II (42,8 mm 36,4 mm 5 mm) 3.3 MultiMedia Card V roce 1998 byla na trh uvedena karta MultiMedia Card a konkurenční MemoryStick. MultiMedia Card (MMC) je opět otevřený standard. Stejně jako CompactFlash má i MultiMedia Card (dále jen MMC) svoji organizaci, která dbá nad dodržováním stanoveného standardu. Jmenuje se MultiMedia Card Association (MMCA) a byla založena v lednu roku Zakládajícími členy této asociace byly firmy SanDisk a Siemens. Tyto paměti byly vyvinuty především pro oblast digitálního záznamu zvuku a částečně i obrazu (odtud název). Pro svůj malý rozměr se používají v mobilních komunikačních systémech (PALM, Nokia, Siemens, Casio atd.). V digitálních fotoaparátech se dnes již prakticky nepoužívají. Této kartě se budu věnovat v samostatné kapitole, protože její využití je součástí mé práce. Uvedu jen některé základní vlastnosti pro porovnání s ostatními kartami. Vlastnosti: rozměry: 32 mm 24 mm 1,4 mm přenosová rychlost média: až 2,5 MB/s provozní teplota: -25 C až +85 C životnost: 1 mil. cyklů spotřeba energie: čtení maximálně 100 ma zápis maximálně 33 ma sedmipinové rozhraní provozní napětí: 2,7 V až 3,6 V

17 6 3.4 MemoryStick Toto médium je pokusem firmy SONY ustanovit světový standard na základě vlastního vývoje. Mechanicky je toto médium (též nazývané SmartStick) řešeno obdobně jako MMC. Má deset pinů (přímé ploché kontakty). Výhodou je poměrně otevřený návrh, který umožňuje implementaci i dalších funkcí (kamera, GPS, komunikační funkce...). Obsahuje obdobné sériové rozhraní jako MMC. Firma SONY očekávala výrazné prosazení své paměti, nicméně licenční politika SONY a široká podpora SD paměti odsuzuje tuto paměť do velmi problematické pozice. Přímým nástupcem paměti MemoryStick je MemoryStick Pro. Toto médium je dnes dostupné v kapacitách až 1 GB a má oproti MemoryStick výrazně rychlejší přístup. Teoretický kapacitní limit je zde 32 GB. Vlastnosti: rozměry: 50 mm 21,5 mm 2,8 mm hmotnost: 4 g přenosová rychlost média MS: čtení 1,5 MB/s zápis 2,5 MB/s desetipinové rozhraní provozní napětí: 2,7 V až 3,6 V 3.5 SecureDigital Memory Card V roce 1999 byl uvolněn standard SecureDigital Memory Card (SD Card) a Secure MultiMedia Card (SMMC). Jedná se o rozšíření MultiMedia Card o bezpečnostní mechanizmy ochrany copyrightu. Jsou elektricky a rozložením kontaktů zpětně kompatibilní s MultiMedia Card. SD Card je však oproti MultiMediaCard o polovinu širší a proto je většinou nelze použít místo MMC karet. Tato karta opět vznikla v dílně společnosti SanDisk. Používají ji desítky výrobců mobilních zařízení (PALM, Panasonic, PDA,

18 7 mobilní telefony Nokia 9110, Siemens SL45, přes 60 výrobců MP3 přehrávačů atd.) Na rozdíl od MMC je tato karta hojně využívána i v digitálních fotoaparátech. Vlastnosti: rozměry: 32 mm 24 mm 2,1 mm hmotnost: 1,5 g moderní médium kompatibilní s MMC přenosová rychlost: v průměru 3 MB/s (v budoucnu až 20 MB/s) provozní teplota: -25 C až +85 C životnost: až 1 mil. cyklů devítipinové rozhraní provozní napětí: 3,3 V 3.6 extreme Digital Zatím nejnovější z rodiny paměťových karet je karta nazývaná xd (extreme Digital). Na trhu je od roku Karta vznikla ve spolupráci firem Olympus, Fuji a Toshiba. Důvodem vývoje této karty byla snaha paměťové karty miniaturizovat a zároveň u nich dosáhnout velké kapacity. Je velmi malá a lehká. Používá se především v digitálních fotoaparátech Olympus a Fuji. Prozatímní nevýhodo těchto karet je jejich vysoká cena. Vlastnosti: rozměry: 20 mm 25 mm 1,7 mm hmotnost: 2 g přenosová rychlost média: čtení 5 MB/s zápis 3 MB/s osmnáctipinové rozhraní

19 8 3.7 Srovnání velikostí Na obrázku 1 je porovnání velikostí jednotlivých typů paměťových karet. Obrázek 1: Srovnání velikostí jednotlivých typů paměťových karet Podrobnější informace o paměťových kartách naleznete v [6], [7] a [8].

20 9 4 MultiMedia Card MultiMedia Card je jedna z nejmenších a nejlehčích paměťových karet. Je velice populární díky svému sedmivodičovému připojení, spolehlivosti a nízké ceně. Je vhodná do aplikací, kde není rozhodující maximální rychlost, ale prioritní je spolehlivost, nízká cena a malá spotřeba. Stejně jako u jiných typů paměťových karet i u karet MultiMedia Card postupem času začalo vznikat mnoho zařízení, které tento standard využívají pouze jako rozhraní pro jiný účel. Proto je v současné době na trhu mnoho těchto karet pro GSM, Bluetooth a podobné účely. Podrobnosti o MultiMedia Card lze najít v [10], [11], [12], [13], [14] a [15]. 4.1 Vlastnosti Jedná se o paměť NAND Flash. Napájecí napětí musí být v rozmezí 2,7 V až 3,6 V. Variabilní frekvence od 0 MHz do 20 MHz. Přenosová rychlost média je až 2,5 MB/s. Spotřeba energie: čtení maximálně 100 ma zápis maximálně 33 ma Typický proudový oděr 20 ma až 25 ma pro čtení, 25 ma až 35 ma pro zápis a 0,04 ma až 0,15 ma v režimu spánku. Na jedné sběrnici může být více MMC karet. Hmotnost 1,5 g. Pracovní rozsah teplot -25 C až +85 C. Snáší vibrace až 15 G a nárazy až 1000 G. Power management. Velikost sektoru je (stejně jako u magnetických disků) 512 B. Zaručeno minimálně 1 mil. zápisů a neomezené čtení. Střední doba mezi chybami je vetší než 10 miliónů hodin.

21 10 Možnost vkládat a odpojovat kartu bez odpojení napájení. Obsahuje registr stavu, registr maximální rychlosti a registr nastavení. Karta je připojena pomocí sedmipinového rozhraní. 4.2 Fyzická specifikace Rozměry karty Rozměry pouzdra jsou 32 mm 24 mm a tloušťka je pouhých 1,4 mm. Na spodní straně karty je umístěno 7 plochých kontaktů s roztečí 2,54 mm. Pohled na spodní stranu karty je na obrázku 2. Funkce pinů jsou pro jednotlivé přístupové módy různé a jsou popsány v kapitole a Obrázek 2: Rozměry 4.3 Připojení k řídícímu systému Propojení paměťové karty MultiMedia Card k mikroprocesoru je vhodné provést prostřednictvím krátkého kabelu. Pokud není možné krátký kabel použít, je nutné vykompenzovat vliv vedení jednoduchou dolní propustí. Dva možné způsoby zapojení 1 této propusti ukazuje obrázek Módy činnosti Karta MMC může pracovat v jednom ze dvou módů. Tyto módy se jmenují MMC a SPI. Aby splňovala požadavky standardu MMC, tak musí umět oba dva. 1 Popis pinů odpovídá zapojení módu SPI (viz kapitola 4.4.2).

22 11 Obrázek 3: Připojení paměťové karty MMC k řídícímu systému V každém z módů je karta jinak zapojena a pro komunikaci používá jiný komunikační protokol a jiné registry. Mód MMC popisuje kapitola a mód SPI kapitola Výběr pracovního módu probíhá během inicializace karty (viz kapitola 4.8). Mód SPI bude popsán podrobně, protože ho používám ve svém programu MMC mód Charakteristické vlastnosti: Komunikace probíhá pomocí tří komunikačních vodičů (SCK, COMMAND, DATA). Karta adresována podle svého jedinečného sériového čísla. Povinné CRC součty při přenosech. Na obrázku 4 je zobrazen způsob komunikace řídícího systému s MMC kartou v MMC módu a obrázek 5 zobrazuje zapojení konektoru a názvy pinů, které se pro každý mód liší. Signály: Signál SCK synchronizuje komunikaci mezi kartou a řídícím systémem. Je generován na straně řídícího systému. Pomocí signálu COMMAND předává systém příkazy kartě, a nebo naopak, karta předává stavy řídícímu systému. Signál DATA je použit ke čtení z karty nebo zápisu do karty.

23 12 Nevýhodou tohoto módu je to, že není možné vypnout CRC kódy (viz kapitola 6.2), které jsou kartou generovány při čtení a nutnost jejich počítání řídícím systémem při zápisu. Tyto výpočty jsou velice náročné na výpočetní výkon karty i řídícího systému. Obrázek 4: Způsob komunikace v MMC módu Obrázek 5: Zapojení konektoru v MMC módu SPI mód Charakteristické vlastnosti: Protokol SPI je elektrotechnický standard. Tři komunikační vodiče (MISO, MOSI, SCK). Výběr karty prováděn pomocí signálu /CS. CRC součty pro přenosy je možné vypnout.

24 13 Největší výhodou tohoto módu je právě připojení karty pomocí SPI sběrnice, kterou disponují téměř všechny moderní mikroprocesory užívané v embedded aplikacích. Podrobně je SPI sběrnice popsána v kapitole 5. Další výhodou je možnost podle potřeby vypnout nebo zapnout počítání CRC kódů při datových přenosech. Na obrázku 6 je zobrazen způsob komunikace řídícího systému s MMC kartou v SPI módu. Obrázek 7 zobrazuje zapojení konektoru. Signály: Signál MISO slouží jako vstup řídícího systému a jako výstup karty (Master Input, Slave Output). Signál MOSI je výstup systému a zároveň vstup karty (Master Output, Slave Input). SCK je synchronizační hodinový signál generovaný řídícím systémem. Signálem /CS vybírá řídící systém MMC kartu 2. Obrázek 6: Způsob komunikace v SPI módu Obrázek 7: Zapojení konektoru v SPI módu 2 V případě použití více MMC karet v módu SPI je samozřejmě nutné použít pro každou kartu vlastní signál /CS. Signály MOSI, MISO a SCK mohou být společné.

25 14 Kvůli přímé podpoře sběrnice SPI mikroprocesorem Rabbit jsem pro implementaci zvolil právě tento mód a v dalších kapitolách se budu věnovat pouze jemu (nebude-li uvedeno jinak). 4.5 Registry MultiMedia Card v módu SPI Operating Conditions Register (OCR) OCR je 32 bitů dlouhý registr vyplněný výrobcem karty. Na základě nastavení bitů udává povolené napájecí napětí karty MMC v rozsahu od 2,0 V do 3,6 V s krokem 0,1 V. Každý nastavený bit signalizuje funkčnost karty s tímto konkrétním napětím. Ve většině případů nemá tento registr žádné praktické využití. Z tohoto důvodu bývá u některých neznačkových karet vyplněn chybně (všechny bity jsou nastaveny) Card Identification (CID) Register CID je 128 bitů dlouhý registr určený pouze pro čtení. Jsou v něm uloženy informace o kartě a o výrobci. Bližší popis je v tabulce 1. Část Serial Numer je využívána pro adresaci při použití více karet zároveň na stejné sběrnici v módu MMC. Z hodnot READ BL LEN, C SIZE a C SIZE MULT registru CSD můžeme vypočítat hodnoty NASOBITEL (vztah 1), VELIKOST BLOKU (vztah 2), PO- CET BLOKU (vztah 3) a VELIKOST MMC (vztah 4). NASOBIT EL = 2 C SIZE MULT +2, (C SIZE MULT < 8) (1) V ELIKOST BLOKU = 2 READ BL LEN, (READ BL LEN < 12) (2) P OCET BLOKU = (C SIZE + 1) NASOBIT EL (3) V ELIKOST MMC = P OCET BLOKU V ELIKOST BLOKU (4)

26 15 Jméno Typ Délka Výsek Komentář Manufacturer ID Binární 8 [127:120] Číslo výrobce přidělené asociací MMCA [9]. Application ID Binární 16 [119:104] Číslo předpokládané aplikace přidělené asociací MMCA, může být změněno uživatelem. Product Name String 48 [103:56] Jméno produktu. Nebývá vyplněno. Product Revision BCD 8 [55:48] BCD kódem zakódované datum poslední revize. První 4 bity udávají tzv. major verzi a druhé dva tzv. minor verzi. Serial Numer Binární 32 [47:16] Jedinečné číslo karty. Používá se pro adresaci v módu MMC. Manufacturing Date BCD 8 [15:8] Datum výroby, počítáno od roku První čtyři bity udávají měsíce, další čtyři roky. CRC7 checksum Binární 7 [7:1] Kontrolní součet počítaný CRC7 kódem Nepoužit Binární 1 [0:0] Vždy 1 Tabulka 1: Card Identification (CID) Register Card Specific Data (CSD) Register Tento 128bitový registr obsahuje všechna důležité nastavení potřebné pro přístup na paměťovou kartu a jsou tu také uloženy informace o podporovaných protokolech, maximálních přenosových rychlostech a podporovaných třídách příkazů. Dá se z něj vyčíst topologie média včetně velikosti. Důležité položky tohoto registru jsou zaneseny v tabulce 2 a podrobněji rozebrány v tabulkách 3, 4 a 5. Položka Délka Výsek Komentář CSD STRUCT 2 [127:126] Struktura CSD (viz tabulka 3). SPEC VERS 4 [125:122] Verze specifikace MMC protokolu (podrobnosti viz tabulka 4). CCC 12 [95:84] Podporované třídy příkazů (podrobně viz tabulka 5). READ BL LEN 4 [83:80] Udává mocninu velikost bloku (vždy 9, tedy 512 B, viz vztah 2). C SIZE 12 [73:62] Hodnota potřebná pro výpočet počtu bloků (viz vztah 3). C SIZE MULT 3 [49:47] Hodnota potřebná pro výpočet počtu bloků (viz vztah 1). CRC7 checksum 7 [7:1] Kontrolní součet. Nepoužit 1 [0:0] Vždy 1. Tabulka 2: Card Specific Data (CSD) Register CSD STRUCT Verze CSD struktury Protokol 0 CSD verze 1.0 MultiMedia Card verze 1,0 až 1,2 1 CSD verze 1.1 MultiMedia Card verze 1,4 až 2,2 Tabulka 3: Verze specifikace MMC (část CSD STRUCT registru CSD)

27 16 SPEC VERS Verze MultiMedia Card protokolu 0 MultiMedia Card verze 1,0 až 1,2 1 MultiMedia Card verze 1,4 2 MultiMedia Card verze 2,0 až 2,2 Tabulka 4: Verze specifikace MMC (část SPEC VERS registru CSD) CCC bit Podporovaná třída 0 class 0 1 class 1 2 class class 11 Tabulka 5: Podporované třídy příkazů (část CCC registru CSD) 4.6 Příkazy MultiMedia Card v módu SPI Veškerá komunikace s MMC kartou v SPI módu spočívá výhradně v zasílání řídících příkazů směrem z řídícího systému na sběrnici a v případném čekání na odpovědi. Příkazů je celkem 64 (0 až 63). Mnoho z nich je možno použít pouze v MMC módu a mnoho jich je rezervovaných pro budoucí využití. Odezvy (anglicky response) se označují R1, R2 a R3. Liší se významem a délkou. Prodrobněji o nich pojednává kapitola Skupiny příkazů Příkazy SPI lze rozdělit do skupin z hlediska jejich činnosti a z hlediska zařazení do třídy kompatibility. Seznam podporovaných tříd je uveden v registru CSD (viz tabulky 2 a 5). Rozdělení podle typu: Příkazy pro reset a inicializaci karty. Příkazy pro čtení registrů. Příkazy pro čtení bloku nebo bloků paměti. Příkazy pro zápis bloku nebo bloků paměti. Příkazy pro mazaní úseku paměti. Příkazy pro zamykání celé karty nebo určité části datové oblasti.

28 17 Rozdělení podle tříd kompatibility: CLASS 0 (základní příkazy) CLASS 2 (čtení bloku nebo bloků paměti) CLASS 4 (zápis bloku nebo bloků paměti) CLASS 5 (mazání úseku paměti) CLASS 6 (ochrana proti zápisu) CLASS 7 (zamykání karty) Ostatní neuvedené třídy z rozsahu CLASS0 až CLASS11 nejsou podporovány v SPI módu, nebo jsou rezervovány pro budoucí využití. Začlenění příkazů do jednotlivých tříd ukazují tabulky 6 a 7. Třída Popis třídy základní příkazy pouze MMC mód 2 čtení pouze MMC mód 4 zápis mazání úseku paměti 6 ochrana proti zápisu 7 zamykání karty 8 rezerva 9 pouze MMC mód Tabulka 6: Začlenění příkazů do jednotlivých tříd, první část Třída Popis třídy základní příkazy pouze MMC mód 2 čtení 3 pouze MMC mód 4 zápis + 5 mazání úseku paměti ochrana proti zápisu zamykání karty + 8 rezerva 9 pouze MMC mód Tabulka 7: Začlenění příkazů do jednotlivých třírd, druhá část

29 Formát příkazů Každý z příkazů je 48 bitů dlouhý paket, který musí být nejdříve vyplněn a následně celý odeslán MMC kartě. Rozmístění jednotlivých položek v této struktuře je přehledně zobrazeno v tabulce 8. Pozice bitů [45:40] [39:8] [7:1] 0 Délka Hodnota 0 1 x x x 1 Popis start bit trans. Bit index CMD argument CRC7 stop bit Tabulka 8: Formát příkazu CRC součet (položka CRC7) se v SPI módu nekontroluje. Poslední bajt [7:0] (tedy CRC7 i se stop bitem) musí být vždy nastaven na hodnotu 95 h. Čtyři bajty velká proměnná s názvem argument slouží k předávání parametrů konkrétnímu příkazu a její využití se u každého příkazu liší. Seznam příkazů pro SPI mód je v tabulce 9 a popis jejich činnosti v tabulce 10. CMD Odezva Argument Zkratka 0 R1 žádný GO IDLE STATE 1 R1 žádný SEND OP COND 9 R1 žádný SEND CSD 10 R1 žádný SEND CID 12 R1 žádný STOP TRANSMISSION 13 R2 žádný SEND STATUS 16 R1 [31:0] velikost bloku SET SECTOR SIZE 17 R1 [31:0] lineární adresa READ SINGLE BLOCK 18 R1 [31:0] lineární adresa READ MULTIPLE BLOCK 24 R1 [31:0] lineární adresa WRITE SINGLE BLOCK 25 R1 [31:0] lineární adresa WRITE MULTIPLE BLOCK 27 R1 [31:0] lineární adresa PROGRAM CSD 28 R1b [31:0] lineární adresa SET WRITE PROT 29 R1b [31:0] lineární adresa CLR WRITE PROT 30 R1b [31:0] lineární adresa SEND WRITE PROT 32 R1 [31:0] lineární adresa TAG SECTOR START 33 R1 [31:0] lineární adresa TAG SECTOR END 34 R1 [31:0] lineární adresa UNTAG SECTOR 35 R1 [31:0] lineární adresa TAG ERASE GROUP ST 36 R1 [31:0] lineární adresa TAG ERASE GROUP END 37 R1 [31:0] lineární adresa UNTAG ERASE GROUP 38 R1b [31:0] stuff bits ERASE 42 R1b [31:0] stuff bits LOCK UNLOCK 58 R3 žádný READ OCR 59 R1 [0:0] 0 = vypnuto CRC ON OFF Tabulka 9: Seznam příkazů dostupných v módu SPI

30 19 CMD Popis činnosti příkazu 0 Resetuje MMC kartu. 1 Aktivuje inicializační proceduru. 9 Žádost o zaslání registru CSD. 10 Žádost o zaslání registru CID. 12 Konec přenosu při blokovém čtení nebo zápisu. 13 Žádost o zaslání struktury o stavu karty. 16 Nastavuje velikost bloku pro čtení nebo zápis. 17 Čtení jednoho bloku. 18 Čtení bloků od zadané pozice. Přenos končí zasláním příkazu CMD Zápis jednoho bloku. 25 Zápis bloků od zadané pozice. Přenos končí zasláním příkazu CMD Umožňuje programovat některé z bitů v registru CSD. 28 Zapíná ochranu proti zápisu. 29 Vypíná ochranu proti zápisu. 30 Zjišťuje, zda je zapnuta ochrana proti zápisu. 32 Nastavuje první sektor určený ke smazání. 33 Nastavuje poslední sektor souvislé oblasti určený ke smazání. 34 Odznačí jeden konkrétní sektor z již označené oblasti ke smazání. 35 Nastavuje adresu poslední skupiny určené ke smazání. 36 Nastavuje adresu první skupiny určené ke smazání. 37 Odznačí jednu skupinu určenou ke smazání. 38 Smaže všechny označené sektory. 42 Používá se k zamykání a odemykání karty a k nastavení hesla. 58 Žádost o zaslání registru OCR. 59 Slouží k zapnutí/vypnutí CRC kódů při zápisu dat (ne u příkazů). Tabulka 10: Činnost příkazů dostupných v módu SPI 4.7 Odezvy karty na příkazy Odezva R1 Typ odezvy R1 je odpověď na většinu příkazů. Je dlouhá jen jeden bajt. Nastavené bity (log. 1) udávají případný problém. Grafické zvýraznění rozložení jednotlivých chybových příznaků je na obrázku Odezva R1b Odezva R1b je identická s odezvou R1. Rozdíl je pouze v tom, že na R1b je třeba čekat o něco (specifikací neudáno) déle, než na základní R1.

31 20 Obrázek 8: Formát odezvy R Odezva R2 Tato odezva rozšiřuje základní odezvu R1 o dalších osm bitů. I zde nastavení některého z bitů znamená chybu. Rozložení chybových příznaků je zobrazeno na obrázku 9. Obrázek 9: Formát odezvy R Odezva R3 R3 je speciální odezva pro příkaz CMD58 (READ OCR). Je čtyřicet bitů dlouhá. Prvních osm bitů [39:32] je odezva R1. Za nimi následuje 32 bitů registru OCR (Operating Conditions Register).

32 Inicializace SPI módu Ve většině publikací je uveden chybný algoritmus. Inicializovat MMC kartu do módu SPI je možné podle postupu, který je ve formě vývojového diagramu znázorněn na obrázku 10. Tento algoritmus pracuje se všemi MMC kartami, které jsem zkoušel. Obrázek 10: Inicializace SPI módu Na začátku je na sběrnici SPI vysláno 10 bajtů (80 bitů) s hodnotou ff h, které nastartují samotnou komunikaci po sběrnici. Poté je nastaven signál /CS MMC do log. 0 (signál /CS je aktivní v nule). Tím je vybrána příslušná karta (na jedné sběr-

33 22 nici SPI může být až několik desítek zařízení). Náslesdně je na sběrnici odeslán 5 B dlouhý příkaz GO IDLE STATE (viz kapitola 4.6.2), který kartu MMC zresetuje. Během resetování jsou na sběrnici kartou vysílány hodnoty ff h. Po provedení resetu je vrácena odezva formátu R1, která signalizuje zda nedošlo k chybě. Jakákoliv odezva odlišná od hodnoty 01 h signalizuje chybu. Po zresetování je deaktivován signál /CS (nastaven do log. 1) a odeslán jeden bajt s hodnotou ff h, který slouží jako pauza pro MMC kartu. Obdobným způsobem jako reset karty MMC je provedena i její inicializace příkazem SEND OP COND. Jediným rozdílem je to, že u odezvy R1 nesmí mýt nastaven poslední bit signalizující průběh inicializace. 4.9 Nastavení velikosti bloku dat Velikost bloku dat, který se z MMC čte, nebo na MMC zapisuje například pomocí příkazů READ SINGLE BLOCK nebo WRITE SINGLE BLOCK je třeba určit pomocí příkazu SET SECTOR SIZE. Vývojový diagram této činnosti je na obrázku 11. Obrázek 11: Nastavení velikosti bloku dat pro I/O operace s MMC kartou Význam jednotlivých bloků je stejný jako u inicializace SPI módu, která je popsána v kapitole 4.8 a zobrazena na obrázku 10. Nedoporučuji s nastavováním velikosti příliš experimentovat a nenastavovat jiné velikosti bloku než 512, 1024 a 2048 B.

34 Čtení a zápis Čtení a zápis na MMC probíhá podle následujícího algoritmu. Pokud ještě není nastavena správná velikost bloku (viz kapitola 4.9), je nutné tak učinit před zahájením přenosu. Obrázek 12: Čtení a zápis bloku dat MMC karty 4.11 Čtení registrů CID a CSD Čtení registrů CID a CSD probíhá podle stejného algoritmu jako v případě čtení sektoru. Jedinou změnou je to, že není přečteno (N+2) B, kde N je nastavená velikost příkazem SET SECTOR SIZE, ale počet přečtených bajtů přímo odpovídající velikosti registru.

35 24 5 Sběrnice SPI Sběrnice SPI (Serial Peripheral Interface) je sériové komunikační rozhraní [21], které se v mikropočítačové technice používá především pro připojení vnějších pamětí, A/D převodníků a dalších obvodů k mikrokontroléru. SPI se také používá pro vzájemnou komunikaci mezi mikrokontroléry. U některých mikrokontrolérů je SPI využíváno i pro programování jejich vnitřní paměti flash. Obrázek 13: Celková koncepce systému se sběrnicí SPI V systému mohou být zapojeny dva nebo více obvodů. Jeden z obvodů, obvykle procesor, je typu Master, ostatní jsou typu Slave. Jednotlivé obvody jsou propojeny čtyřmi vodiči: MOSI Datový výstup MOSI (Master Out, Slave In) obvodu Master je připojen na vstupy MOSI všech obvodů Slave. MISO Datový vstup MISO (Master In, Slave Out) obvodu Master je propojen s výstupy MISO všech obvodů Slave. SCK Výstup hodinového signálu SCK je připojen na vstupy SCK všech obvodů Slave. Tento signál bývá také někdy označován jako CLK. SS Každý obvod Slave má vstup SS (Slave Select) pro výběr obvodu. Je-li SS v neaktivní úrovni, je rozhraní SPI daného obvodu neaktivní a jeho výstup MISO je ve vysokoimpedančním stavu. Vstupy SS jednotlivých obvodů jsou

36 25 samostatnými vodiči propojeny s obvodem Master. Je-li obvodem Master mikrokontrolér, bývají tyto vodiče připojeny k některému z jeho portů. Tak lze snadno vybírat obvod, se kterým má být v daném okamžiku vedena komunikace. Tento signál bývá také někdy označován jako CS. Přenosy na sběrnici SPI probíhají vždy mezi obvodem Master a některým z obvodů Slave. Oba obvody obsahují posuvné registry, které jsou v okamžiku komunikace propojeny tak, jak je schematicky naznačeno na obrázku 14. Obrázek 14: Propojení stanic Master a Slave Obvod Master generuje hodinový signál, který řídí posouvání obou posuvných registrů. Klidová úroveň signálu SCK a vztah mezi datovým a hodinovým signálem je dán parametry CPOL a CPHA (viz obrázek 15). Pokud je rozhraní SPI realizováno specializovaným řadičem, je obvykle možné tyto parametry v řadiči nastavit. Je-li rozhraní SPI realizováno programově, musí být okamžiky změny úrovně datových a hodinových signálů zvoleny tak, aby přijímající obvod vzorkoval ustálená data. Obrázek 15: Význam parametrů CPOL a CPHA na SPI Napěťové úrovně jednotlivých signálů rozhraní SPI jsou dané použitou technologií. Maximální frekvence hodinového signálu je 2 MHz. Na obrázcích 16 a 17 je

37 26 příklad komunikace s jednoduchou sériovou pamětí při čtení a zápisu dat. Mikrokontrolér musí nejprve do paměti zapsat povel (čtení) a adresu dat. Potom jsou z paměti přečtena příslušná data. U pamětí MMC je situace o něco složitější, protože je používán složitější komunikační protokol s využitím příkazů a odpovědí, ale obecný princip zůstává zachován. Obrázek 16: Čtení dat z paměti s rozhraním SPI Obrázek 17: Zápis dat do paměti s rozhraním SPI

38 Sběrnice SPI u modulu RCM Zapojení SPI portů Modul RCM3200 (viz kapitola 9) disponuje čtyřmi SPI porty [22]. V tabulce 11 je zaznamenáno přiřazení signálů jednotlivým SPI portům. Signál SPI SCK MOSI MISO /CS Signál RCM3200 CLKA nebo CLKB TXA, TXB par. portu C nebo ATXA, ATXB par. portu D RXA, RXB par. portu C nebo ARXA, ARXB par. portu D Jakýkoli výstupní pin Tabulka 11: SPI porty modulu RCM3200 V jednom okamžiku však smí být aktivní SPI kanály pouze na jednom z paralelních portů. Zároveň tedy můžeme využít maximálně dva SPI porty Funkce pro práci s SPI porty Řízení SPI portů prohá pomocí čtyř funkcí: SPIinit() inicializace režimu SPI SPIwrite() zápis dat na sběrnici SPIread() čtení dat ze sběrnice SPIWrRd() zápis i čtení dat Výběr portu se provádí pomocí definice makra SPI SER C nebo SPI SER D: #define SPI SER C SPI porty jsou na paralelním portu C #define SPI SER D SPI porty jsou na paralelním portu D Příklad: #define SPI CLK D Rychlost SPI sběrnice se nastavuje definicí SPI CLK DIVISOR na hodnotu 3 až 255. Čím nižší hodnota je nastavena, tím je komunikace rychlejší. Příklad: #define SPI CLK DIVISOR 5

39 28 6 Kontrolní součty a CRC kódy 6.1 Kontrolní součet Kontrolní součet je hodnota získaná jednorázovým přepočtem nějakého objemu dat bajt po bajtu pomocí speciálního vzorce, sloužící ke kontrole správnosti přenosu dat. Kontrolní součet se stanoví jednorázově před přenosem dat a pošle se jako doprovodná informace s daty. Po přenosu se vypočte znovu kontrolní součet a ten se porovná s původním. Liší-li se obě čísla, nastala zřejmě chyba v přenosu. Čím více bity je vyjádřen kontrolní součet, tím je použití této metody spolehlivější [23]. 6.2 CRC kódy CRC (anglicky Cyclic Redundancy Check) je metoda kontroly správnosti přenosu nebo uložení dat, která je založena na cyklickém výpočtu kontrolního kódu z dat před přenosem a po přenosu. Existují dva běžně používané šestnáctibitové generátory CRC. Standard CCITT (zvaný CRC-CCITT) používá polynomický generátor, daný funkcí G16(x) (vztah 5) a reprezentující binární číslo b. Protokol IBM zvaný SDLC využívá CRC-16 s jiným polynomem. V obou případech je pak CRC zbytek po binárním dělení daného data polynomickým generátorem. CRC-CCITT detekuje všechny jednobitové a dvoubitové chyby, všechny chyby dané lichým počtem bitů, všechny chyby dané šestnáctibitovými a menšími chybovými sekvencemi v řetězci. Znamená to detekování % všech chyb. Pro větší datové přenosy (než 4 kb) je to už málo vyhovující, proto se používají 32 bitů dlouhé CRC, které detekují % všech chyb [23]. K výpočtu stačí jednoduchý posuvný registr, který umožňuje provádění operaci XOR (tj. nonekvivalenci jednotlivých bitů) s pevně danou maskou. Hodnota této masky je jednoznačně určena generujícím polynomem [24], [25]. G16(x) = x 16 + x 12 + x (5) U MMC karet je ke kontrole přenosu bloku dat použit CRC-CCITT 16. Pro příkazy a odezvy na tyto příkazy je v módu MMC použit CRC7 s polynomem G7 (vztah 6). V SPI módu můžou být CRC pro přenosy vypnuty příkazem CRC ON OFF. Kontrolní součet CRC7 pro příkazy se vůbec nepoužívá [11]. G7(x) = x 7 + x (6)

40 29 7 Struktura disku a souborový systém FAT 7.1 Základní pojmy Fyzická struktura média Každé médium může mít více povrchů (surfaces), stran (sides) a hlav (heads), přičemž počet povrchů je roven počtu hlav. Data jsou uložena v soustředných kruzích, takzvaných stopách (tracks). Cylindr (válec) je soubor všech stop určitého poloměru a na každé stopě je pevný počet sektorů. Nezáleží na vzdálenosti od středu média. Systém nepočítá s více jak 1024 cylindry (10 bitů pro adresaci cylindru). Pokud má disk více cylindrů, BIOS provede přepočet parametrů disku. Pro operační systém se pak jeví jako disk s méně cylindry, ale více povrchy, než ve skutečnosti má [27]. Je zřejmé, že pro flash paměti, které jsou zcela bez mechanických částí a pro moderní pevné disky, které mají většinou jen jednu plotnu (dva povrchy), již toto fyzické dělení pozbylo smyslu a všechny funkce jádra pracují s daty disku lineárně bez ohledu na jejich fyzické umístění. Jedinou výjimkou je služba BIOSu INT 13 h, která pracuje přímo s parametry číslo hlavy (povrchu), číslo stopy a číslo sektoru. Tato služba je však ihned po natažení jádra operačního systému zakázána [2] Logická struktura média Sektor: Každý pevný disk, disketa nebo flash disk se systémem FAT je složen ze sektorů. Jeden sektor má obvykle velikost 512 B. S jinou velikostí sektoru většina OS neumí pracovat. Velikost sektoru tedy musí být vždy 512 B. Fyzické číslování sektorů: Tento způsob číslování používá BIOS. Reprezentuje fyzické umístění sektoru na médiu. Každý sektor musí být adresován pomocí třírozměrné adresy Povrch; Stopa; Sektor. První sektor má index 1. Logické 3 číslování sektorů: Logické číslování sektorů představuje lepší způsob než fyzické číslování. Využívá se v operačních systémech. Celé medium je jednorozměrné pole sektorů. U pevných disků se relativní sektory číslují od okraje media (fyzicky na povrchu 0, stopa 0 a sektor 1) až do vyčerpání všech povrchů, stop a sektorů. Sektor 0 je roven cylindru 0 3 Někdy nazývané také jako lineární či relativní.

41 30 (a zároveň stopě 0), hlavě 0 a fyzickému sektoru 1. Na rozdíl od fyzického číslování se u logického číslování indexuje vždy od 0. V následujícím textu budu používat pouze logické číslování. Cluster: Sektory jsou organizovány do clusterů. Jeden cluster obsahuje minimálně jeden sektor. Cluster je nejmenší alokovatelná jednotka ve všech strukturách souborového systému FAT. Z toho plyne, že každý soubor s nenulovou délkou musí zabírat prostor minimálně jednoho clusteru. Cluster také někdy nazýváme alokačním blokem Systém FAT Hierarchický souborový systém: Způsob organizace souborů v operačním systému umožňující jejich hierarchické členění do struktury adresářů a podadresářů (složek). Celá souborová struktura začíná na disku kořenovým adresářem (viz root directory), který může obsahovat další adresáře a soubory, ale není podadresářem žádného jiného adresáře. Pro libovolné další adresáře pak platí, že mohou opět obsahovat soubory a podadresáře, a navíc má každý z nich jednoznačně přiřazen nadřazený adresář. Příkladem tohoto hierarchického systému je systém FAT. Tabulka obsazení disku (FAT): Speciální oblast na zformátovaném datovém médiu obsahující informace o adresářové struktuře. Z těchto informací lze odvodit, jak jsou jednotlivým souborům přiděleny alokační bloky (informaci o zaplnění disku soubory a o umístění jednotlivých souborů a jejich částí). Poprvé je vytvořena systémem při formátování média. Z důvodů bezpečnosti jsou na většině médií vytvářeny a udržovány současně dvě (obecně nf AT s) stejné kopie téže tabulky, které leží bezprostředně za sebou. Podle velikosti záznamu FAT tabulky, který popisuje jeden cluster, dělíme systémy FAT na 12bitové, 16bitové a 32bitové. Adresář (Directory): Adresář je seznam souborů a podadresářů uložených na paměťovém médiu. Způsob uspořádání těchto seznamů u běžně používaných počítačových systémů je hierarchický. U FAT se jedná o obrácenou stromovou strukturu, kde je vrcholem tzv. kořenový adresář (root directory). Z něj pak vyrůstají ostatní adresáře, které mohou obsahovat soubory či další adresáře. Z pohledu programátora je to jeden nebo více clusterů, které mají speciální

42 31 význam. Jsou v nich uloženy informace o souborech a podadresářích které z tohoto výchozího adresáře vycházejí. Každý z clusterů tohoto adresáře je rozdělen na 32 B velké části, kterým říkáme adresářové záznamy. Každý soubor nebo adresář může zabírat několik těchto záznamů. Problematice adresářů se podrobně věnuje kapitola 8.4. Kořenový adresář (Root Directory): Je to výchozí adresář disku. Začínají v něm všechny cesty k libovolnému souboru či adresáři. U FAT12 a FAT16 má speciální umístění hned za poslední FAT tabulkou a jeho velikost je omezena na 512 adresářových záznamů (obecně nrootents 4 ). U FAT32 je root directory běžný adresář, který začíná na clusteru určeném proměnnou RootClust 4. Datová oblast (Data Area): Část disku za root directory (popřípadě za poslední tabulkou FAT u systému FAT32 5 ) až do konce disku. V této oblasti jsou uloženy data souborů a adresářů. 7.2 Master Boot Record a Partition Table Úplně první sektor pevného disku (sektor 0) obsahuje takzvaný Master Boot Record (MBR) 6, který se při bootu počítače může zavést do paměti a spustit. To, zda je rutina spuštěna, je ovlivněno nastavením bootovací sekvence v setupu počítače. Poslední část tohoto prvního sektoru obsahuje tabulku rozdělení disku (Partition Table). V této taulce jsou čtyři záznamy, z nichž je každý 16 B dlouhý. S touto tabulkou pracuje program fdisk (nebo jeho ekvivalent). Z dané struktury plyne omezení na maximálně 4 primární diskové oddíly. Omezení se obchází vytvářením takzvaných extended oddílů, které v sobě mohou sdružovat další oddíly (tzv. rozšířené oddíly). Z pohledu disku je extended partition primární disk jako každý jiný, rozdíl je v tom, že je v něm další tabulka rozdělení platná pouze v rámci tohoto rozšířeného oddílu. Hodnoty sektoru a cylinderu jsou 6bitové respektive 10bitové V okamžiku bootu zavede ROM-BIOS Master Boot Record a skočí na jeho adresu. Tato rutina přečte Partition Table a rozhodne, která partition je označena jako aktivní. Potom načte příslušný boot sektor aktivní partition do paměti a také ho spustí. 4 Ze struktury BPB (viz kapitola 8.1) 5 U FAT32 je root directory běžný adresář (jen není omezen maximálním počtem záznamů). 6 Někdy je jako MBR označován celý sektor.

43 32 Posun Velikost Obsah 000 h 1be h Rutina zavedení a spuštění boot sektoru aktivní partition 1be h 10 h Záznam 1. primární partition (viz tabulka 13) 1ce h 10 h Záznam 2. primární partition (viz tabulka 13) 1de h 10 h Záznam 3. primární partition (viz tabulka 13) 1ee h 10 h Záznam 4. partition (viz tabulka 13) 1fe h 02 h Označení tabulky partition (aa55 h ) Tabulka 12: Master Boot Record a Partition Table Posun Velikost Obsah 00 h 1 Vlajka BOOTu: 0 h = neaktivní, 80 h = aktivní 01 h 1 Začátek: číslo hlavy 02 h 2 Začátek: sektor a cylinder prvního sektoru (viz tabulka 14) 04 h 1 Kód systému souborů (viz tabulka 14) 05 h 1 Konec: číslo hlavy 06 h 2 Konec: sektor a cylinder posledního sektoru (viz tabulka 14) 08 h 4 Číslo počátečního relativního sektoru (16b Lo, 16b Hi) 0c h 4 Velikost (celkem sektorů) (16b Lo, 16b Hi) Tabulka 13: Struktura záznamu partition tabulky Je pochopitelné, že program v MBR musí obsahovat pouze volání služeb BIOSu, protože ještě není načteno jádro operačního systému. Nejdůležitější z těchto volání jsou přerušení 9 h (služby klávesnice), 10 h (služby obrazovky) a 13 h (služby disku) Zásady pro vytváření diskových oblastí: Je několik zásad, které je třeba při vytváření nového diskového oddílu dodržet. 1. Každá oblast (mimo první) musí začínat na hranici sudých cylindrů. První partition může začínat na cylinderu 0, hlavě 0, sektoru 2 (protože sektor 1 zabírá Master Boot Record). 2. Každá oblast musí končit na hranici cylindru Základní kódy systému souborů V tabulce 15 jsou zaneseny základní kódy systému souborů. Dnes již mají tyto údaje pouze informativní charakter, ale každý slušný program, který rozděluje disk je alespoň přibližně nastavuje. Často se stává, že jednomu typu odpovídá mnoho různých systémů. Například typ 83 h patří všem souborovým systémům, které byly psány pro operační systém Linux. V současné době jich již existuje nespočetné množství. Opakem je FAT, kde k jednomu podobnému systému připadá hned několik typů systému souborů. Typů systému souborů je samozřejmě

44 33 Bit C/S c c c c c c c c c c s s s s s s Tabulka 14: Začátek a konec oddílu (formát slova) Kód Typ Kód Typ 00 h Neznámý typ 0b h FAT32 01 h DOS 12-bitová FAT 0c h FAT32 LBA 04 h DOS 16-bitová FAT 0e h FAT16 LBA 05 h Extended partition 7 0f h Extended LBA 06 h FAT16 82 h Linux SWAP 07 h NTFS 83 h Linux Native Tabulka 15: Základní kódy systému souborů daleko více, tohle je jen úzký výběr. Podrobnější informace lze nalézt například v manuálových stránkách programu fdisk v Linuxu. Číslo sektoru na ofsetu 08 h každé partition (viz tabulka 13) je ekvivalentní hlavě, sektoru a cylindru 8 počáteční adresy partition. Vztah pro výpočet adresy relativního sektoru z trojrozměrné adresy je následující: Nebo naopak: r = (ΩHc) + (Ωh) + (f 1) (7) h = ( r ) mod H (8) Ω c = r ΩH (9) f = 1 + (r mod Ω) (10) V uvedených rovnicích symbol r označuje relativní sektor, f fyzický sektor, c číslo cylindru, H celkový počet hlav disku, h číslo hlavy, Ω počet sektorů na jeden cylindr, s číslo stopy a operátor mod zbytek po celočíselném dělení. V kapitole 7 bylo čerpáno z pramenů [2] a [26]. 7 Extended partition je velice důležitý souborový typ, který slouží k vytvoření tzv. rozšířené oblasti (extended partition). Ta má ten význam, že v ní mohou být zapouzdřené další oblasti. V úplně prvním sektoru (sektor 0) takové rozšířené partition je další partition tabulka (obdoba MBR), obsahující záznamy o oblastech v této rozšířené oblasti a případně odkaz na další rozšířenou oblast. 8 Této trojici se říká trojrozměrná adresa. Podrobněji viz kapitola

45 34 8 Logický disk systému FAT Paměťové karty Master Boot Record a Partition Tabulku neobsahují 9. Celé médium je jen jeden logický disk. Teoreticky rozdělení těchto disků na více logických oddílů sice nic nebrání, ale žádný z běžných operačních systémů tuto možnost nepodporuje. Paměťová karta (nebo logický disk hard disku) má následující strukturu: 1. Boot Record a rezervované sektory 2. Záznam FSI (přítomen pouze u FAT32) 3. První FAT 4. Druhá FAT 5. Root adresář (u FAT32 není) 6. Pole dat (zde jsou veškerá data, včetně adresářových záznamů) 8.1 Boot Record logického disku Bios Parameter Block (BPB) Na rozdíl od předešlých částí kapitoly 7, které byly psány obecně pro IBM-PC kompatibilní souborové systémy, se následující část bude týkat pouze souborových systémů FAT12, FAT16 a FAT32. Boot sektor (relativní sektor 0) logického disku se souborovým systémem FAT obsahuje dvě struktury. První z nich se jmenuje BPB (Bios Parameter Block). Její obsah je zobrazen v tabulce 16. Druhá se jmenuje Extended Bios Parameter Block (EBPB) a popisuje ji kapitola Extended Bios Parameter Block (EBPB) Hned za základní strukturou BPB, která je pro všechny systémy FAT stejná, následuje takzvaný rozšířený blok BPB (Extended Bios Parameter Block). Ten se pro FAT12/FAT16 a FAT32 liší. EBPB pro FAT12 a FAT16 je uveden v tabulce 17 a pro FAT32 v tabulce Stejně jako například diskety, kazetopáskové nebo CD-ROM média.

46 35 Posun Velikost Označení Obsah 00 h 3 jmpboot Skok na začátek rutiny bootu 03 h 8 oemname Název výrobce (OEM) 0b h 2 nbytespersec Počet bytů na jeden sektor (vždy 512) 0d h 1 nsecperclust Počet sektorů na jeden cluster 0e h 2 nsecres Počet rezervovaných sektorů (počet sektorů před první FAT) 10 h 1 nfats Počet FAT tabulek (vždy 2) 11 h 2 nrootents Max. počet adresářových položek root adresáře u FAT12 nebo FAT16. U FAT32 musí být nastavena h 2 nsecs16 Celkový počet sektorů logického disku (u velkých disků je nastavena 0) 15 h 1 mdesc Deskriptor média (f8 h pro HDD) 16 h 2 nsecperfat16 Počet sektorů na jednu FAT. U FAT32 musí být nastavena h 2 nsecpertrack Počet sektorů na stopě (cylinder) 1a h 2 nheads Počet záznamových hlav (povrchů) 1e h 4 nsechidden Speciální skryté sektory (u disku je to velikost předchozích oblastí) 20 h 4 nsecs32 Celkový počet sektorů logického disku (jen pro FAT32, pro FAT16 platí hodnota nsecs16) Posun Velikost Označení Obsah Tabulka 16: Bios Parameter Block 24 h 1 DriveNum Dnes již nevyužívaná hodnota, dříve hodnota udávající typ média 25 h 1 nresbyte Rezervovaný bajt 26 h 1 BootSig Signatura rozšířeného Boot sektoru (29 h ) 27 h 4 SerNum Sériové číslo svazku (např. sériové číslo ( ab) h je uloženo jako ab h 89 h 34 h 12 h ) 2b h 11 VolName Název svazku (doplněný mezerami) 36 h 8 FSType Název systému souboru (například FAT16) Tabulka 17: Extended Bios Parameter Block pro FAT12 a FAT Načtení základních údajů z BPB a z Extended BPB Kompletní záznam BPB je složen ze dvou částí. První z nich, kterou nazýváme jen BPB, je shodná pro všechny souborové systémy FAT. Druhá část je pro FAT12/FAT16 a pro FAT32 rozdílná. Z kompletní struktury BPB musíme určit několik základních hodnot. Především nás bude zajímat velikost jedné FAT (v sektorech), celkový počet sektorů logického disku, počet sektorů, které obsazuje root adresář, celkový počet sektorů použitelných k uložení dat a tomu odpovídající počty clusterů. Velikost jedné FAT tabulky je číslo, které udává počet sektorů potřebných k uložení informací o všech clusterech datové oblasti disku. { nsecp erf at16 pro nsecp erf at16 0 velikost F AT = (11) nsecp erf at32 pro nsecp erf at16 = 0

47 36 Posun Velikost Označení Obsah 24 h 4 nsecperfat32 Počet sektorů na jednu FAT tabulku. 28 h 2 ExtFlags Nastavení příslušných bitů umožňuje vypnutí klonování FAT tabulek (standardní hodnota je 0 klonují se všechny FAT) 2a h 2 FSVer Číslo verze souborového systému FAT (vždy 0 verze 0:0) 2e h 4 RootClust Číslo clusteru na kterém začíná root adresář 30 h 2 FSInfo Udává polohu sektoru se strukturou FSI (obvykle 1 hned za BPB) 32 h 2 BkBootSec Číslo sektoru se zálohou Boot sektoru 34 h 12 Reserved Rezervované místo 40 h 1 DriveNum Fyzické číslo disku 41 h 1 Reserved1 Rezervovaný bajt 42 h 1 BootSig Signatura rozšířeného boot-sektoru (Extended Boot Record Signature) 43 h 4 SerNum Sériové číslo svazku (např. sériové číslo ( ab) h je uloženo jako ab h 89 h 34 h 12 h ) 47 h 11 VolName Název svazku (doplněný mezerami) 52 h 8 FSType Název systému souboru (např. FAT32) Tabulka 18: Extended Bios Parameter Block pro FAT32 Tento nestandardní postup určování velikosti FAT i jiných hodnot (viz dále) vyplývá ze špatného navržení všech datových struktur systému FAT12 a ze snahy o udržení zpětné kompatibility v novějších verzích. Obdobně jako velikost F AT určíme i celkový počet sektorů a clusterů na médiu (nebo logickém disku). celkovy pocet sektoru = { nsecs16 pro nsecs16 0 nsecs32 pro nsecs16 = 0 (12) celkovy pocet clusteru = (celkovy pocet sektoru + nsecp erclust 1) nsecp erclust Počet sektorů a clusterů, který zabírá root adresář u FAT12 nebo FAT16 spočítáme podle vztahů 14 a 15. (13) pocet sektoru rootu = { ((32 nrootents)+(nbytesp ersec 1)) nbytesp ersec pro FAT12/16 (14) 0 pro FAT32 10 pocet clusteru rootu = (pocet sektoru rootu + nsecp erclust 1) nsecp erclust (15) 10 U FAT32 není na root adresář vyhrazeno žádné místo. Root je klasický adresář, který začíná na clusteru RootClust.

48 37 První datový sektor leží za rezervovanými sektory, za všemi FAT (vždy dvě) a za root adresářem (je-li přítomen). Výpočet tedy provedeme dle vztahu 16. prvni datovy sektor 11 = nsecres+(nf AT s velikost F AT )+pocet sektoru rootu Počet datových sektorů a clusterů určíme potom následovně: (16) pocet datovych sektoru = celkovy pocet sektoru prvni datovy sektor (17) pocet datovych clusteru = (pocet datovych sektoru + nsecp erclust 1) nsecp erclust (18) Proměnné nsecs16, nsecs32, nf AT s, nbytesp ersec, nrootents a RootClust, které se vyskytují ve vzorcích, jsou položky z BPB nebo z Extended BPB. 8.2 Alokační tabulka souborů (FAT) FAT je lineární tabulka, kterou OS používá pro udržení informací o fyzické pozici dat na disku a pro nalezení volného místa na uložení nových souborů Typy souborového systému FAT Každá FAT tabulka se skládá z 12bitových (FAT12), 16bitových (FAT16) nebo 32bitových (FAT32) položek. První dva typy se liší pouze velikostí jedné položky. Naproti tomu FAT32 přináší několik vylepšení. FAT12 Je velmi efektivní pro média s kapacitou menší než 384 kb, protože se celá FAT tabulka vejde do jednoho sektoru o velikosti 512 B. Každý záznam ve FAT12 má velikost 12 bitů. Z toho plyne, že adresový prostor FAT12 je omezen na 4096 clusterů (2 12 ). Je to nejstarší (a dnes již nejméně používaný) typ souborového systému FAT. FAT16 Adresový rozsah FAT16 je (2 16 ) clusterů. FAT tabulka může zabírat maximálně 128 kb ( ). Maximální velikost disku při 32 kb clusterech je 1024 tedy 2048 MB. 11 Jeho index je roven nule, stejně jako je tomu u každého logicky číslovaného sektoru.

49 38 FAT32 S příchodem operačního systému Windows 95 OSR2 se začal používat souborový systém FAT32. Ten využívá 32-bitového záznamu v tabulce FAT. Díky tomu je možné adresovat až (2 32 ) clusterů. Výhodou je možnost použití výrazně větších logických disků a možnost snížit velikost clusteru třeba až na velikost jednoho sektoru. To nám přinese úsporu místa při ukládání velkého množství malých souborů. Na druhou stranu by nám velká FAT tabulka způsobila výrazné zpomalení při jejím procházení. Zejména při hledání volného clusteru pro uložení nového souboru na zaplněnějším disku, nebo při zjišťování volného místa. V tom případě bychom museli procházet velkou část (nebo dokonce celou) tabulku FAT. Z tohoto důvodu bylo zavedeno nové rozšíření, které se jmenuje FSI (File System Info) a které tyto výkonnostní problémy řeší. Podrobně tuto strukturu popisuje kapitola Určení typu FAT Při inicializaci práce se souborovým systémem FAT je nutné nejprve určit jeho typ. Typ souborového systému je sice zanesen v tabulce 17 a 18 (ve struktuře EBPB) pod označením FSType, ale podle materiálu firmy Microsoft je tento údaj pouze informativní a skutečný typ je nutné určit podle počtu clusterů. Tuto závislost udává vztah 19. F AT 12 pro celkovy pocet clusteru < 4085 typ F AT = F AT 16 pro celkovy pocet clusteru v rozsahu 4085; (19) F AT 32 pro celkovy pocet clusteru > Obsah FAT Jak již bylo řečeno, FAT tabulka je souvislá oblast disku, která obsahuje informace o tom, jak jsou jednotlivým souborům nebo adresářům přiděleny alokační bloky (datové clustery). Každému datovému clusteru disku musí příslušet jedna položka o velikosti 12, 16 nebo 32 bitů. Minimální platné číslo datového clusteru je 2 (clustery 0 a 1 jsou vynechány) 12. Počet položek ve FAT tedy musí být o 2 větší než je skutečný počet datových clusterů. Při vytváření FAT (v průběhu formátování) je nutno na tuto skutečnost pamatovat, protože to může (ve speciálních případech) ovlivnit počet sektorů, který FAT tabulka zabírá. 12 Dnes pravděpodobně netuší proč tomu tak je ani firma Microsoft. Jen kvůli tomu, aby první bajt FAT mohl být tzv. deskriptor média, který stejně nemá žádný smysl, jistě ne.

50 39 Úplně první bajt FAT se nazývá deskriptor média nebo též identifikační bajt FAT. Musí být stejný jako proměnná mdesc v záznamu BPB (viz tabulka 16). Zbytek tabulky FAT, který by za normálních okolností zaujímaly položky 0 a 1, je vyplněn log. 1. Užitečná část FAT tabulky se skládá z dvanácti, šestnácti nebo třicetidvoubitových záznamů. Každý z nich reprezentuje jeden cluster disku. Takže například záznam s pořadovým číslem 2 (číslováno od 0) je první platný záznam FAT a popisuje první (index 0) datový cluster disku. Záznam s číslem 3 leží o 32 bitů dál (pro FAT32) a vypovídá o datovém clusteru s indexem 1 (tedy druhém datovém clusteru). Tabulka 19 obsahuje všechny přípustné hodnoty záznamu pro FAT12. Hodnota záznamu od do znamená 000 h - volný cluster 002 h fef h číslo clusteru další buňky řetězu ff0 h ff6 h jinak obsazený cluster ff7 h - špatný cluster ff8 h fff h konec alokačního řetězu Tabulka 19: Záznam FAT12 Tabulka 20 obsahuje všechny přípustné hodnoty záznamu pro FAT16. Hodnota záznamu od do znamená 0000 h - volný cluster 0002 h ffef h číslo clusteru další buňky řetězu fff0 h fff6 h jinak obsazený cluster fff7 h - špatný cluster fff8 h ffff h konec alokačního řetězu Tabulka 20: Záznam FAT16 Tabulka 21 obsahuje všechny přípustné hodnoty záznamu pro FAT32. Hodnota záznamu od do znamená h - volný cluster h ffffffef h číslo clusteru další buňky řetězu fffffff0 h fffffff6 h jinak obsazený cluster fffffff7 h - špatný cluster fffffff8 h ffffffff h konec alokačního řetězu Tabulka 21: Záznam FAT32

51 Sledování řetězce FAT Mějme například soubor TESTY01.TXT, který začíná na datovém clusteru s indexem 8 h. Číslo počátečního clusteru jsme přečetli ze SFNE záznamu v adresářové struktuře (viz tabulka 24). Podrobnosti o adresářových záznamech budou uvedeny v kapitole 8.4. Zatím se spokojíme jen s tím, že na clusteru 8 h opravdu začíná. Princip čtení je ukázán na obrázku 18. Obrázek 18: Způsob čtení z FAT Co všechno můžeme z obrázku 18 vyčíst: Soubor TESTY01.TXT na disku zabírá 10 clusterů. První bajt tohoto souboru je na clusteru 8 h a poslední je na clusteru 1b h. Řetěz je 8 h, 9 h, a h, b h, 15 h, 16 h, 17 h, 19 h, 1a h a 1b h. Každý záznam ukazuje na další záznam v řetězu. Poslední záznam obsahuje speciální hodnotu konce alokačního řetězce (End Of File). Jeho velikost musí být v rozsahu (9 512 nsecp erclust ; nsecp erclust B. Cluster 18 h je označen jako špatný a není článkem řetězu. Clustery 6 h, 7 h, c h 14 h a 1 h 1f h jsou prázdné, připravené k použití. Na disku je ještě volné místo. Další řetěz začíná na clusteru 2 h a končí na clusteru 5 h. Abyste zjistili jméno tohoto souboru nebo adresáře, museli byste prohledat všechny záznamy adresáře na disku a najít takovou položku, která bude mít svůj počáteční cluster nastaven na hodnotu 2 h. Tento postup naštěstí není využíván.

52 41 První záznam (cluster 0 h ) je vždy tzv. deskriptor média. Druhý záznam (cluster 1 h ) musí být vždy vyplněn log. 1 (například ffff h pro FAT16). Je-li souborový systém FAT32, pak by měla mít proměnná F irstf reecluster ze struktury FSI (viz tabulka 22) hodnotu 6 h Převod čísla clusteru na číslo sektoru Takže víme, že první cluster datové oblasti má index 2 a také víme, že datová oblast začíná za root adresářem 13. Z těchto informací můžeme spočítat polohu libovolného datového clusteru vzhledem k počátku disku. Získanou hodnotu pak předáme přímo funkci pro nízkoúrovňové čtení nebo zápis sektorů. Matematicky je tento výpočet popsán vztahem 20. sektor 14 = prvni datovy sektor + ((cislo clusteru 2) nsecp erclust) (20) 8.3 File System Info (FSI) File System Info (FSI) je rozšíření, které bylo přidáno u systému FAT32. Je to struktura, která začíná na zvláštním sektoru a její pozice je udána proměnnou F SInfo ze struktury EBPB (viz tabulka 18). Většinou se jedná o sektor umístěný bezprostředně za sektorem BPB (za prvním sektorem). Hlavním důvodem přidání této struktury je zrychlení vyhledávání prvního volného clusteru pro nově ukládaná data a zrychlení výpočtu volného místa. U systému FAT12 tato struktura nebyla potřeba, protože tabulka FAT byla malá a nebyl problém ji velmi rychle celou prohledat. U systému FAT16 se dělaly poměrně velké clustery, které velikost FAT opět zmenšovaly. Tyto velké clustery však byly velmi neefektivní pro ukládání malých souborů, protože každý soubor s nenulovou délkou zaplní celistvý násobek počtu clusterů. Takový soubor tedy zabírá nejméně jeden cluster například o velikosti 32 kb i když je jeho skutečná délka třeba jen 1 B. O souborech s nulovou délku bude řeč v kapitole Popřípadě za poslední FAT tabulkou, jedná-li se o systém FAT32, kde není root adresář přítomen. 14 V případě, že by na médiu bylo více logických disků, je samozřejmě nezbytné k výsledku vztahu 20 nebo 16 přičíst ještě počet sektorů od začátku média k začátku logického disku.

53 42 Podobná situace je i v případě adresářů. Každý z adresářů (včetně prázdných 15 ) zabere také prostor minimálně jednoho clusteru. Posun Velikost Označení Obsah 0 h 4 LeadSig Označení struktury FSI ( h ). 4 h 480 Reserved1 Rezervovaný prostor. Musí být vynulován. 1e4 h 4 StrucSig Další označení struktury FSI ( h ). 1e8 h 4 Free Count Počet volných clusterů disku. 1ec h 4 Next Free První volný cluster disku. 1f0 h 12 Reserved2 Další rezervovaný prostor. Musí být vynulován. Tabulka 22: File System Info Free Count Počet volných clusterů je obsažen v proměnné F ree Count. Je-li tato hodnota nastavena na hodnotu fffffff h, tak jejich počet neznáme a je třeba je znovu spočítat. Next Free Číslo clusteru od kterého probíhá hledání volného datového clusteru je uloženo v proměnné Next F ree. Není-li tato hodnota známa, pak je proměnná Next F ree nastavena na hodnotu ffffffff h a je třeba provést hledání od prvního datového clusteru (od clusteru s indexem 2). Je-li již cluster s indexem N ext F ree obsazen, je provedeno hledání volného clusteru směrem od Next F ree + 1 do konce média a následně od hodnoty 2 opět do hodnoty Next F ree 1. Je-li cluster nalezen, tak je hodnota Next F ree nastavena na index tohoto nově nalezeného clusteru. V opačném případě nastavíme proměnnou F ree Count na Adresář Jak již bylo napsáno v úvodu, adresáře slouží ke strukturovanému ukládání souborů na disku. Každý adresář může obsahovat soubory a jiné podadresáře. Této struktuře adresářů a souborů říkáme adresářový strom (anglicky directory tree). Původní verze systémů FAT dokázaly jméno každého souboru nebo adresáře uchovávat ve tvaru Tedy 8 znaků pro základ jména a 3 znaky pro příponu. Výběr znaků byl navíc značně limitován. Jméno nesmělo obsahovat prakticky nic mimo velkých znaků anglické abecedy a několik speciálních znaků. Nové rozšíření k systému FAT16 (a později i k FAT32), které dovolovalo uložení jména dlouhého 15 Žádný adresář není vlastně úplně prázdný, protože obsahuje odkaz sám na sebe a na svůj nadřazený adresář (viz kapitola 8.4.1). 16 Je plný disk, žádný volný cluster.

54 43 až 256 znaků a podporu UNICODE (viz kapitola 8.8) bylo přídáno až s příchodem operačního systému Windows 95. Každý adresář tvoří jeden či více clusterů, které jsou rozděleny na 32 B velké záznamy (anglicky File Name Entry). Více clusterů adresáře opět (jako u souborů) tvoří řetězec ve FAT tabulce. Každý ze záznamů může obsahovat informaci o jednom objektu. Pod pojmem objekt rozumíme krátký název souboru, krátký název adresáře, jméno disku (anglicky label) a dlouhou část jména souboru nebo adresáře. Podrobně budou záznamy popsány v kapitole Adresáře lze rozdělit na dva základní druhy: 1. Běžný adresář 2. Root adresář Běžný adresář Běžné adresáře vznikají až když jsou potřeba. Jejich množství není omezeno. Jediným limitujícím faktorem je velikost disku. Na rozdíl od root adresáře musí každý nový adresář obsahovat adresář., který ukazuje sám na sebe a adresář.., který ukazuje na první cluster nadřazeného adresáře Root adresář Každý root (česky kořenový) adresář vzniká při formátování disku a je na rozdíl od běžného adresáře prázdný. Je to základní adresář disku. Na každém disku je právě jeden root adresář. Jsou v něm uloženy informace o souborech a adresářích, které z kořenového adresáře bezprostředně vycházejí. Z tohoto adresáře musí vycházet všechny cesty k libovolnému souboru nebo jinému adresáři na disku. Root adresář se opět liší pro FAT12/FAT16 a pro FAT32. Root adresář systému FAT12 a FAT16: U těchto systémů leží kořenový adresář hned za poslední (téměř ve všech případech za druhou) FAT. Počet záznamů je omezen hodnotou nrootents (vždy 512) z BPB (viz tabulka 16). Je to tedy speciální případ adresáře, který má pevně udanou velikost i polohu. Jeho polohu spočítáme z hodnot struktury BPB podle vztahu 21. prvni sektor rootu = nsecres + (nf AT s nsecp erf at16) (21)

55 44 Root adresář systému FAT32: Root adresář systému FAT32 je podobný běžnému adresáři. Jedinou výjimkou je to, že jeho poloha (respektive poloha prvního clusteru) je udána hodnotou RootClust v Extended BPB (viz tabulka 18) a že je po vytvoření formátovacím programem prázdný. Tento adresář není na rozdíl od root adresáře u FAT12 a u FAT16 omezen na pevný počet záznamů. prvni sektor rootu = RootClust (22) Adresářový záznam Adresářový záznam je 32 B velká struktura, které říkáme File Name Entry (FNE) 17. Rozdělují se na SFNE (Short FNE) a na LFNE (Long FNE). Původní SFNE záznam umožňuje uložit jméno souboru nebo adresáře ve tvaru 8+3. V LFNE záznamech je uloženo kompletní dlouhé jméno v UNICODE kódování. Mimo tento dlouhý název je vždy zkrácené jméno objektu uloženo ještě ve formátu pro zachování kompatibility se staršími programy, které dlouhé názvy neznaly. V původních verzích souborového systému FAT existovaly pouze záznamy typu SFNE. LFNE záznamy mají nastaven speciální atribut LONG F ILENAME, podle kterého je lze jednoznačně identifikovat. Tento atribut starší programy pracující se systémem FAT neznaly a proto je ignorují. Naopak nové programy ignorují zkrácené jméno ze záznamu SFNE. V tabulce 23 je seznam všech povolených atributů. Maska Zkratka Popis 00 h NORMAL Normální soubor (není-li nastaven žádný bit). 01 h READ ONLY Objekt je pouze pro čtení. 02 h HIDDEN Skrytý objekt. 04 h SYSTEM Systémový objekt. 08 h VOLUME ID Jméno disku (volume label). 0f h LONG FILENAME Záznam je typu LFNE (nastaveny nejnižší 4 bity). 10 h DIRECTORY Objekt je adresář. 20 h ARCHIVE Objekt je určen k archivaci. Tabulka 23: Atributy objektů Krátký záznam adresáře (SFNE): Krátký záznam adresáře byl jediný možný druh záznamu použitelný pro uložení jména objektu v dobách kdy na souborovém systému FAT ještě nebyly dlouhé názvy. 17 Česky záznam adresáře.

56 45 Dnes se používá pro ukládání informací o objektech, jejichž název splňuje podmínky uložení do SFNE (viz kapitola 8.5) a jako nositel informace u objektů s dlouhým jménem. Struktura tohoto záznamu je v tabulce 24. Posun Velikost Obsah 00 h 8 Základ jména. 08 h 3 Přípona jména. 0b h 1 Atribut. 0c h 2 Rezervovaná část pro budoucí využití. 0e h 2 Čas vytvoření objektu. 10 h 2 Datum vytvoření objektu. 12 h 2 Další rezervovaná část. 14 h 2 Číslo prvního clusteru v řetězci FAT (16b Hi). 16 h 2 Čas poslední modifikace (zápisu). 18 h 2 Datum poslední modifikace (zápisu). 1a h 2 Číslo prvního clusteru v řetězci FAT (16b Lo). 1c h 4 Velikost objektu v bajtech. Tabulka 24: Adresářový záznam SFNE Dlouhý záznam adresáře (LFNE): Dlouhý záznam adresáře je rozšířením FAT o dlouhé názvy s ohledem na obousměrnou kompatibilitu. Používá se tam, kde pro uložení jména objektu nestačí 8 znaků a pro příponu 3 znaky, nebo jméno nesplňuje jiný požadavek kladený na SFNE. Struktura LFNE záznamu adresáře je uvedena v tabulce 25. Posun Velikost Obsah 00 h 1 Pořadové číslo záznamu pro jednotlivé objekty. 01 h 10 První část unicode jména. 0b h 1 Atribut. 0c h 1 Rezervovaná část pro budoucí využití. 0d h 1 Kontrolní součet. 0e h 12 Druhá část unicode jména. 1a h 2 Číslo prvního clusteru v řetězci FAT (16b Lo) (vždy 0). 1c h 4 Třetí část unicode jména. Tabulka 25: Adresářový záznam LFNE

57 46 Formát časových údajů: Byte MSB LSB Struktura hhhhhmmm mmmsssss Tabulka 26: Formát časových údajů Formát času je uveden v tabulce 26. Vzor hhhhh udává číslo 0-23 (hodiny), mmmmmm číslo 0-59 (minuty) a sssss 0-29 (sekundy/2). Čas je uložen v pořadí LSB, MSB. Formát datumů: Byte MSB LSB Struktura rrrrrrrm mmmddddd Tabulka 27: Formát data Formát datumů je uveden v tabulce 27. Vzor rrrrrrr udává číslo (rok od 1980), mmmm číslo 1-12 (měsíc) a ddddd je 1-31 (den). Datum je stejně jako čas uložen v pořadí LSB, MSB. Kontrolní součet je generován pomocí následujícího algoritmu: for (sum = i = 0; i < 11; i++) { } sum = (((sum & 1) << 7) ((sum & 0xfe) >> 1)) + name[i]; Speciální adresářové záznamy V tabulce 28 jsou všechny možnosti nastavení prvního bajtu libovolného záznamu. Podle tohoto bajtu můžeme blíže specifikovat jestli je záznam aktivní, smazaný nebo nikdy nebyl použit. Zdánlivě zbytečné rozlišování na prázdné (dosud nepoužité) a smazané záznamy slouží ke zrychlení průchodu adresáře. O této problematice píše kapitola 8.5. Nepoužitý záznam adresáře: Nepoužitý záznam adresáře vzniká při vytváření nového adresáře nebo při rozšiřování starého o další adresářový cluster. Každý nový adresářový cluster je nutné nejprve naformátovat. Proces formátování spočívá v tom, že je celý cluster vynulován, nebo je na hodnotu 00 h nastaven alespoň první bajt každého záznamu.

58 47 Hodnota Zkratka Popis 00 h SLOT EMPTY Slot ještě nikdy nebyl použit. e5 h SLOT DELETED Slot je smazaný, ale již byl někdy použit. ostatní - Slot je platný. 05 h SLOT E5 Slot je také platný, ale prvním znakem jména je e5 h. Proto je nahrazen za 05 h. Při nenahrazení bychom záznam brali jako smazaný. Tabulka 28: První bajt libovolného záznamu Bez této inicializace by v adresářovém clusteru mohly být pozůstatky starých dat. Rozdíl oproti smazanému záznamu je takový, že za nepoužitým záznamem již nesmí být žádné aktivní, protože při nalezení prvního nepoužitého záznamu je další prohledávání adresáře ukončeno. Smazaný záznam adresáře: Při mazání adresářového záznamu je první bajt tohoto záznamu nastaven na hodnotu e5 h. 8.5 Uložení souborů a adresářů do nadřazeného adresáře Postup při ukládání souboru nebo adresáře se liší podle toho, jestli ukládané jméno splňuje požadavky uložení do jednoho záznamu SFNE, nebo jestli tyto požadavky nesplňuje. Požadavky na uložení do jednoho SFNE jsou následující: Základ jména musí být dlouhý nanejvýš 8 znaků, musí být složený jen z čísel, velkých znaků anglické abecedy, ze znaků v tabulce 29 nebo ze znaku, který má důležité postavení při zkracování dlouhého jména. $ % ( ) { } # & Tabulka 29: Znaky povolené v záznamu SFNE Přípona musí být dlouhá nanejvýš 3 znaky a musí být složená ze stejných znaků jako základní jméno Uložení souboru nebo adresáře s krátkým jménem Při splnění výše uvedených požadavků je možné jméno uložit pouze do jednoho SFNE záznamu. V tomto záznamu musíme dále vyplnit odkaz na první datový cluster. Chceme-li vytvářet soubor s nulovou délkou, tak stačí použít hodnotu 00 h a

59 48 konkrétní datový cluster se souboru přiřadí až před zápisem dat do tohoto souboru. Častěji však vytváříme soubor, do kterého budeme chtít něco zapisovat a proto mu hned přiřadíme datový cluster. U adresáře je nutné nový cluster záznamu přiřadit vždy a navíc je potřeba tento cluster naformátovat a vytvořit v něm adresáře. a... Tyto speciální adresáře jsou specifické, protože nemají přidělen žádný vlastní cluster, ale ukazují na sebe sama v případě. nebo na nadřazený adresář v případě... Příklad: Vytvoříme například podadresář POD v adresáři NAD. Adresář NAD je přímo v kořenovém adresáři disku. Adresáři NAD je přidělen cluster číslo 100 a adresáři POD cluster 150. V Každém z těchto dvou adresářů musí být ješte odkaz na nadřazený adresář a odkaz na sebe sama. V adresáři POD ukazuje. na cluster 150 a.. na 100. V adresáři NAD. na 100 a. na 0. Alokace nového clusteru se provádí tak, že se prochází FAT tabulka a hledá se prázdný cluster. U systému FAT32 se začíná FAT tabulka prohledavat od záznamu Next F ree 18. Při nalezení volného clusteru je tento cluster ve FAT označen koncem alokačního řetezce a jeho index je zapsán do struktury SFNE. Dále je nutné vyplnit správný atribut, položky týkající se datumu a času a nastavit nulovou délku. Tím jsme vypnili celou strukturu SFNE (tabulka 24) a nezbývá nám, než tuto strukturu zapsat na první volnou 19 pozici v příslušném adresáři. Na obrázku 19 je znázorněna tipická struktura běžného adresáře včetně jednoho dlouhého jména Uložení souboru nebo adresáře s dlouhým jménem Naopak, nejsou-li podmínky pro uložení do jednoho SFNE splněny, například protože jméno obsahuje mezery nebo diakritiku, je nutné jméno uložit do jednoho SFNE záznamu a několika záznamů LFNE. V LFNE záznamech je uloženo dlouhé jméno a v záznamu SFNE je uložena informace o počátečním clusteru, datu vytvoření, času vytvoření, datu poslední modifikace a času poslední modifikace. Dlouhé jméno je rozděleno na 13B velké části a každá z těchto částí je uložena do jednoho LFNE záznamu. Každý bajt původního jména v lokálním kódování je ještě před zapsáním převeden na znak UNICODE. Tyto záznamy jsou pak očíslovány 18 Ze struktury BPB (viz kapitola 8.3) 19 Volné pozice jsou ty, které jsou smazané nebo jsou nepoužité.

60 49 Obrázek 19: Struktura adresáře a v opačném pořadí uloženy do adresáře. První záznam 20 má číslo 1, předposlední N 1 a poslední N +64. Maska 64 (40 h ) signalizuje první 21 záznam dlouhého jména. Bezprostředně za těmito záznamy následuje jeden záznam SFNE, který má pro zachování kompatibility vyplněno zkrácené jméno a jsou v něm také uloženy informace, které v LFNE záznamech chybí. Je bezpodmínečně nutné, aby všechny záznamy patřící k jednomu objektu ležely za sebou. Pokud již v adresáři není volné místo pro uložení dalších záznamů, tak je nutné do řetězce FAT přidat další cluster. Naopak záznamy jednoho objektu můžou začínat v jednom clusteru a končit v clusteru následujícím. Zkrácené jméno se tvoří tak, že se nejprve z dlouhého jména odstaní diakritika a celé jméno se převede na velké ASCII znaky. V dalším kroku se vynechají znaky, které nesmí být v SFNE záznamu. Následně se odstraní všechny počáteční a koncové mezery. Prvních 8 znaků z takto upraveného dlouhého jména se uloží do datové struktury SFNE jako základ jména a další 3 znaky se uloží jako přípona 22. Nakonec základu jména se přidá znak a unikátní 23 index 24. Tento záznam se doplní o zbytek proměnných a uloží se za LFNE záznamy s dlouhým jménem. 20 Naposledy uložený. 21 První z pohledu čtení z adresáře. Ve skutečnosti poslední část jména. 22 U dlouhých názvů souborů se již jméno nerozlišuje na základ a na příponu. 23 V adresáři nesmí existovat dva SFNE záznamy se stejným indexem. 24 Základ jména samozřejmě nesmí přesáhnout délku 8 znaků.

61 Soubor Z uživatelského pohledu je soubor posloupnost bajtů uložená na záznamovém médiu pod označením, které ji přiřadil uživatel nebo systém. Soubor je v jistém smyslu základní datovou jednotkou. Podle toho, jaké obsahuje soubor informace, hovoříme o pojmu typ souboru. Známými typy jsou např. textové soubory, databázové soubory, programové soubory, obrazové a zvukové soubory atd. Kromě typu souboru rozlišujeme i jeho formát, což je vnitřní způsob uspořádání dat. Pro vnější rozlišení formátů souborů (potažmo typů) se ve většině operačních systémů používá přípona, což je součást názvu souboru. U systému FAT se extenze připojuje za jméno souboru a její délka je omezena na tři znaky. Z programátorského pohledu je soubor úsek 25 disku, který zabírá nejméně jeden cluster v datové oblasti. Každý soubor musí být logicky umístěn v nějakém adresáři a právě v tomto adresáři je na tento soubor odkaz prostřednicvím záznamu SFNE a jeho případné dlouhé jméno je uloženo v několika záznamech LFNE předcházejících SFNE. 8.7 Jméno disku Jméno disku (lépe řečeno oddílu) může být nastaveno ve struktuře Extended BPB (hodnota V olname), nebo může být v root adresáři vytvořen SFNE záznam s atributem V OLUME ID. V obou případech smí být jméno disku pouze 11 znaků dlouhé. Vejde se tedy do jednoho záznamu adresáře (8 + 3). Takto nastavené jméno disku má vyšší prioritu než jméno nastavené hodnotou V oln ame ve struktuře Extended BPB. 8.8 Unicode Kódovací schéma Počítače, ze své podstaty, pracují pouze s čísly. Písmena a další znaky ukládají tak, že každému z nich přiřadí číslo. Před vznikem Unicode existovaly stovky rozdílných kódovacích systémů pro přiřazování těchto čísel. Žádné z těchto kódování nemohlo obsahovat dostatek znaků: například Evropská unie sama potřebuje několik různých kódování, aby pokryla všechny své jazyky. Dokonce i pro jeden jediný jazyk, jako je angličtina, nevyhovovalo žádné kódování pro všechny písmena, interpunkci a běžně používané technické symboly. Jen v České republice se používá 6 různých kódování češtiny. 25 Nebo několik úseků spojených řetězem FAT.

62 51 Tyto kódovací systémy také byly v konfliktu jeden s druhým. To znamená, že dvě kódování mohou používat stejné číslo pro dva různé znaky, nebo používat různá čísla pro stejný znak. Jakýkoli počítač (zvláště servery) musí podporovat mnoho různých kódování. Kdykoli jsou data předávána mezi různými kódováními nebo platformami, hrozí, že tato data budou poškozena. Unicode přiřazuje každému znaku jedinečné číslo, nezávisle na platformě, nezávisle na programu, nezávisle na jazyku. Začlenění Unicode do klient-server nebo vícevrstvých aplikací nabízí významné ušetření nákladů oproti dřívějším znakovým sadám. Unicode umožňuje, aby jediný softwarový produkt nebo jediná webová stránka byla zaměřena na mnoho platforem, jazyků a zemí beze změn návrhu. To dovoluje přenášet data přes mnoho různých systémů bez porušení. Každý znak je uložen na 16 bitech (oproti ASCII, který má 8 bitů) a umožňuje tedy uložení až znaků (ASCII 255). V současné verzi obsahuje více než 34 tisíc znaků ze 24 podporovaných písem. Je tedy značně univerzální a obsahuje vlastně znaky všech národních abeced (Ameriky, Evropa, Střední Východ, Afrika, Asie a Tichomoří). Pro nás je samozřejmě důležité že i ty naše české Unicode Consorcium Roku 1991 bylo oficiálně, po několika letech neformální spolupráce, založeno Unicode Consorcium. Vzalo si za úkol postarat se o prosazení a další vývoj 16 bitového kódování pro znaky nejdůležitějších světových jazyků, spolu s mnoha historickými a archaickými znaky. Consorcium se snaží spojit síly nejdůležitějších průmyslových společností a vývojářů ke standardizaci mezinárodní znakové sady. Výsledkem jeho práce je standard Unicode, který je základem internacionalizace a lokalizace software, který se stal také součástí širšího standardu ISO/EIC 10646;1993. Primární úlohou Consorcia je vyvíjet a podporovat standard Unicode; pomáhat při jeho implementaci do software; a také zajišťovat fundovanou kontrolu nad budoucími revizemi standardu. V kapitole 8 bylo čerpáno z literatury [2], [26] a [29].

63 52 9 RCM Úvod RCM3200 je modul zahrnující výkonný mikroprocesor Rabbit 3000 společnosti Rabbit Semiconductor. Pracuje na frekvenci 44,2 MHz, má 512 kb paměti flash, 512 kb statické paměti RAM programu a 256 kb datové SRAM. Dva 34pinové konektory zpřístupňují 52 digitálních I/O linek sdílených se šesti sériovými porty (RS232/485), které mají podporou IrDA, I 2 C, SPI, 10bitové PWM a další alternativní funkce. Integrovanou součástí modulu je RJ 45 10/100Base T Ethernet rozhraní s podporou všech základních protokolů rodiny ARP, ICMP, IP, protokolů TPC i UDP atd. Obrázek 20: Modul RCM3200 Je to ideální volba pro vývojáře, který požaduje rychlý vývoj a implementaci embedded systému s plně integrovanou 10/100BaseT Ethernet konektivitou na principu tenkého ethernetu. Při velikosti pouhých 69 mm 47 mm pracuje s napájením 3,3 V (I/O linky jsou tolerantní k 5 V) a poskytuje široké spektrum integrovaných periferií. Díky těmto vlastnostem je modul RCM3200 velmi vhodný pro automatizaci, měření a regulaci. Mikroprocesor Rabbit 3000 se vyznačuje extrémně nízkým EMI (ElectroMagnetic Interference). Instrukční sada mikroprocesoru Rabbit 3000 je stejná jako u předchozí řady Rabbit 2000 a je odvozená z populárních procesorů Zilog Z RCM3200 je dodáván s vývojovým prostředím Dynamic C a s podporou TCP/IP stacku, který je k Dynamic C přibalen zdarma včetně zdrojových kódů. Toto prostředí obsahuje editor, 26 Respektive z jejich rozšíření Z180.

64 53 kompilátor jazyka C a ladící prostředky (Dynamic C SE je součástí vývojových kitů). Vhodná kombinace technických a programových prostředků umožňuje rychlý a levný vývoj aplikací. K dalšímu vybavení RCM3200 patří baterií zálohovaný obvod RTC (Real Time Clock), přímé připojení externích pamětí a I/O. Samozřejmostí jsou režimy s nízkou spotřebou. Slave port umožňuje snadné připojení modulu do již existujícího zařízení a dovoluje z něj vytvořit komunikační koprocesor nadřízeného systému. Modul je možné přímo vkládat do uživatelské základní desky, která může obsahovat pouze periferní obvody. Kompletní běh aplikačního programu může převzít modul. K modulu je možné přímo připojit většinu CMOS kompatibilních digitálních obvodů. Vhodná kombinace technických a programových prostředků umožňuje rychlý a levný vývoj aplikací [30]. Souhrn základních vlastností: 10/100Base T Ethernet Rabbit 3000 mikroprocesor na 44,2 MHz 3,3 V napájení Nízké elektromagnetické vyzařování 512 K Flash 512 K SRAM (program), 256K SRAM (data) 52 digitálních I/O 6 sériových portů (IrDA, SDLC/HDLC, Async) s maximální rychlostí 5,5 Mb/s, z toho 4 SPI Výhody: Snadný a rychlý vývoj Krátký čas nutný k uvedení nového výrobku Kompaktní provedení vše v jednom Malé rozměry Jednoduchý jazyk založený na jazyku ANSI C

65 54 Vývojové prostředí Dynamic C CE TCP/IP stack ve zdrojových souborech (evidentně z FreeBSD) Nízká cena Možnost přikoupení vývojového kitu Nevýhody: Vývojové prostředí Dynamic C je dostupné pouze pro platformu Windows Zastaralá osmibitová CISC architektura založená na Z(1)80 Malý výběr alternativních kompilátorů Poměrně nestandardní rozteč 2 mm konektorů J1 a J2 (většina návrhových systémů na tištěné spoje s nimi má problémy, protože nemá společný násobek s obvyklými palcovými rozměry) 9.2 Hardware Na obrázku 21 je zobrazena architektura modulu RCM3200. Obrázek 22 ukazuje rozdělení jednotlivých funkčních bloků a portů včetně jejich alternativních funkcí. Obrázek 21: Architektura modul RCM3200 Na obrázku 23 je zapojení konektorů J1 a J2. Tyto konektory mají celkem 52 paralelních I/O pinů rozdělených do sedmi osmibitových portů. Z toho je 44 obousměrných (PA0 PA7, PB0, PB2 PB7, PD2 PD7, PE0 PE1, PE3 PE7, PF0 PF7 a PG0 PG7).

66 55 Obrázek 22: Porty modulu RCM3200 Obrázek 23: Konektory modulu RCM Vývojový kit Začátek práce s modulem RCM3200 je usnadněn použitím vývojového kitu, který obsahuje modul RCM3200, prototypovou základní desku, programovací kabel, napájecí zdroj, vývojové prostředí Dynamic C SE, kompletní dokumentaci na CD a tištěnou příručku Getting Started manual. Podrobnější informace lze nalézt v [30] a [31].

67 56 10 Návrh prototypové desky V této části se pokusím stručně charakterizovat, jaké byly moje myšlenkové pochody při návrhu druhé verze zkušební desky (první verze byla vytvořena v rámci [1] a [2] ). Tato deska spojuje modul RCM3200 s napájecími obvody a obvody zprostředkovávají styk s okolím. Nedílnou součástí desky jsou samozřejmě konektory pro paměťové karty. První je určen k připojení karty CompactFlash a druhý pro MMC kartu. Schéma a obrázek první verze desky plošných spojů je uveden v příloze. Deska je rozdělena na tyto základní části: Blok napájení 3,3 V Blok napájení 5 V Řídící modul RCM3200 Rozhraní RS232 Rozhraní RS485 Rozhraní pro CF kartu Rozhraní pro MMC kartu Výstup pro LCD display Signalizační LED diody Blok dalších digitálních vstupů / výstupů 10.1 Část napájení V zapojení jsem použil dvě napájení. První (3,3 V) pro napájení CompactFlash, MMC a především modulu RCM3200. Z druhého (5 V) je napájen LCD display a převodník napěťové úrovně sériového rozhraní RS232 - obvod MAX232. Pro realizaci obou napětí jsem se rozhodl použít klasický stabilizátor firmy National Semiconductor LM317 v pouzdrech TO220 a v klasickém katalogovém zapojení. Tyto odvody mají dobré parametry i cenu. Řešení s napěťovými měniči by bylo zhruba 10 krát nákladnější. Při konstrukci jsem předpokládal zatížení obou větví poměrně velkým proudem 500 ma, proto jsem oba stabilizátory vybavil chladičem. Ke stabilizaci napětí 5 V by stačil i stabilizátor 7805 v pouzdru TO92, ale vzhledem

68 57 k mnohem lepším parametrům LM317 [32], [33] a zanedbatelnému rozdílu v ceně jsem se rozhodl použít oba stabilizátory stejné. Jedinou nevýhodou u těchto stabilizátorů je fakt, že mají na vývod spojený s chladičem připojen signál V out namísto pochopitelnějšího vstupního napětí V in. Nelze je tedy připojit oba na stejný chladič Konektory pro RCM3200 Jak jsem již předeslal výše, modul RCM3200 má dva konektory 2 17 pinů s roztečí 2 mm (viz kapitola 9). Tato rozteč je poměrně nepříjemná, protože je založená na metrickém systému a nemá žádný společný násobek s palcovými rozměry ostatních součástek. To vedlo k tomu, že návrhový systém Eagle jen velice neochotně propojoval konektory s jinými součástkami. Obstarání těchto konektorů v ČR bylo nemožné a bylo je třeba objednat prostřednictvím zasílatelské služby z firmy Rabbit Semiconductor Konektor CompactFlash a MMC Konektor pro paměťovou kartu CompactFlash, jejíž přípojení bylo řešeno v semestrálním projektu 1 [1], jsem připájel přímo na spodní stranu plošného spoje. Konektor pro MMC kartu je vyveden pomocí pinové lišty (7 pinů) a signály SCK, MISO a MOSI (viz kapitola 4.4.2) jsou připojeny na jeden ze sériových portů RCM3200. Konkrétně na sériový port D (viz kapitola 9) Testovací rozhraní Jako jedno z testovacích rozhraní jsem se rozhodl využít standardní sériovou sběrnici RS232 [34], kterou je vybavena naprostá většina průmyslových zařízení i osobních počítačů. Dnes už je toto rozhraní poměrně zastaralé, proto jsem se rozhodl do návrhu desky zakomponovat i další rozhraní poměrně nové RS485 [35]. Jedná se o sériovou sběrnici, která je modernější než RS232 a postupně sběrnici RS232 v průmyslu nahrazuje. Mezi její výhody patří vyšší přenosové rychlosti (až jednotky Mb/s), maximální délka vodičů je 1200 m a umožňuje připojení až 32 vysílačů a až 32 přijímačů. Díky technologii kroucených párů je i odolnější proti rušení. Součástí návrhů jsou také dvě LED diody. První z nich indikuje přípojení napájecího napětí, použití té druhé je v režii programátora. V mém případě ji využívám pro indikaci přístupu (zápisu nebo čtení) na paměťové médium MMC. Pomalejší pomocné výpisy je možné směrovat na znakový LCD display 2 16, který je ovládán pomocí čtyřbitové sběrnice [36],[37].

69 58 Vzhledem k velkému množství nevyužitých I/O pinů řídícího modulu RCM3200 jsem se ještě rozhodl vyvést 14 pinů ze dvou souvislých částí konektoru J2. Ty se dají použít pro měření velmi rychlých pomocných signálů. V případě potřeby je možné použít je jako digitální I/O pro obecné použití.

70 59 11 Softwarové vybavení 11.1 Úvod Modul RCM3200 (respektive processor Rabbit 3000) umožňuje programování ve dvou programovacích jazycích, v assembleru a v jazyku ANSI C. Assembler má výhodu ve své větší rychlosti díky efektivněji generovanému kódu, který má pod kontrolou přímo programátor. Naopak nevýhodou je fakt, že takto napsaný program je nepřenositelný na jinou architekturu a zdrojový text programu je mnohem delší a méně přehledný. Programovací jazyk C má naopak výhodu v tom, že je s minimem úprav přenositelný na každou architekturu, pro kterou je k dispozici překladač. Další nezanedbatelnou výhodou jazyka C je mnohem rychlejší vývoj aplikace. Jazyk C je rozumným kompromisem mezi vyšším programovacím jazykem typu C++, Perl atd. a mezi assemblerem. Kvůli nesporným výhodám jsem si pro vývoj tohoto software zvolil právě jazyk C. Pro překlad jsem použil vývojové prostředí Dynamic C SE. Jeho výhodou je to, že obsahuje vestavěný debugger. Naopak značnou nevýhodou tohoto vývojového prostředí je to, že je dostupné pouze pro operační systém Windows. Při programování obslužného software jsem se snažil o maximální přenositelnost. Ta je zajištěna zvolením jazyka C a rozdělením programu na dvě části, které jsou vzájemně relativně nezávislé. První část je tvořena funkcemi, které zprostředkovávají nízkoúrovňovou obsluhu datového média, v tomto případě paměťové karty MMC. Jedná se o základní funkce, které jsou závislé na typu MCU a na typu datového média. Při použití jiného hardware pak stačí přepsat jen tyto funkce. Z celkového rozsahu přibližně řádků kódu tvoří tyto platformně závislé funkce necelých 10 %. V případě MMC slouží tyto funkce k inicializaci portů rozhraní, konfiguraci SPI, inicializaci média, čtení konfiguračních registrů, nastavení velikosti bloku a v neposlední řadě také pro čtení/zápis bloku dat. Druhá část odsahuje skupinou funkcí, které představují základní aplikační rozhraní souborového systému FAT. Tato část tvoří naprostou většinu kódu. Nedílnou součástí programu je také mnoho globálních proměnných a struktur, které slouží například jako vyrovnávací buffery, nebo jako pomocné datové struktury, které jsou příliš velké na to, aby se musely v každé funkci pokaždé znovu alokovat. Fyzicky je celý projekt rozdělen do dvou souborů. Základ tvoří soubor embfatfs.c. Soubor embfatfs.lib naproti tomu obsahuje definice konstant a datových struktur. Toto rozdělení pouze do dvou souborů je z toho důvodu, že Dynamic C SE neumí

71 60 přímo vložit jiné soubory jako klasické překladače, ale cestu k takto vkládaným souborům je potřeba nejprve zapsat do speciálního seznamu v souboru lib.dir. Tento postup je poměrně nestandardní a neumožňuje oddělený překlad souborů. To znamená, že se celý projekt musí pokaždé znovu celý překládat. Projekt jsem pracovně pojmenoval EMBFATFS, což je zkratka složená z anglického Embedded File Allocation Table File System. V dalším textu se budu na tento software zkratkou EMBFATFS odkazovat Vlastnosti Při práci jsem si sám vytyčil několik cílů, které by měl EMBFATFS splňovat. 1. Musí být maximálně spolehlivý (i na úkor výkonu) a přenositelný (Cross Platform). 2. Musí podporovat všechny typy souborového systému FAT (FAT12, FAT16 i FAT32) a musí sám typ souborového systému určit. 3. Musí umět dlouhé názvy souborů (a adresářů) na všech typech FAT. 4. Musí zvládat práci s cestou o libovolném zanoření a délce alespoň 200 znaků. 5. Musí používat klasická lomítka pro rozdělování cesty na jednotlivé části místo nestandardních lomítek zpětných. 6. Musí být maximálně kompatibilní se standardními knihovnami pro práci se soubory (především s knihovnou stdio.h). 7. Nesmí (stejně jako operační systémy DOS a Windows) rozlišovat mezi velikostí písmen (Case InSensitive). 8. Nesmí být použity žádné rekurze a podobné nežádoucí programátorské postupy. 9. Nemusí umět kódování UNICODE (viz kapitoly 8.4 a 8.8). 10. Operace čtení/zápisu FAT tabulky i adresáře musí být bufferované a každý otevřený soubor musí mít vlastní vyrovnávací buffer o velikosti minimálně jednoho sektoru. 11. Nemusí umět tzv. žolíkové znaky a nemusí kontrolovat nepovolené znaky v názvech souborů/adresářů (případné další ošetření bude ponecháno na programátorech, kterým toto zpomalení, ač poměrně významné, nebude vadit).

72 Co nejvíce velkých datových struktur musí být globálních. 13. Jednoduché proměnné budou lokální. 14. Všechny proměnné, jejichž velikost přesahuje 4 bajty, budou funkcím předávány pomocí ukazatelů (standardní délka adresy je právě 4 bajty). Bod číslo 6 (zachování kompatibility se standardní knihovnou stdio.h) nebylo možné splnit v plném rozsahu, protože Dynamic C CE neumí dynamicky alokovat paměť 27, a tak jsem nemohl realizovat funkce vracející ukazatel na datovou strukturu. Příkladem takovéto funkce je například funkce pro otevření souboru: FILE *fopen (const char *filename, const char *mode); V Dynamic C CE není možné alokovat paměť, která by nebyla při ukončení funkce zrušena. Moje řešení je proto následující: int rfopen(rfile *stream, char *cesta, char mode); Nejprve nadefinuji statickou proměnnou RFILE stream a funkci int rfopen() na ni předám pouze ukazatel. Tato proměnná je ve funkci naplněna a v případě úspěchu je vrácena hodnota 0. V opačném případě je vrácena chybová hodnota 1. Podobné změny jsou z technických důvodů i u jiných funkcí. Bod číslo 10 jsem musel z důvodu paměťové náročnosti a z nedostatku času zredukovat na bufferování pouze pro čtení. To má za následek poměrně častý zápis do tabulky FAT. Na druhou stranu se však zvýšila spolehlivost Cross platform Pro usnadnění vývoje jsem se rozhodl udělat program EMBFATFS přeložitelný zároveň na procesoru Rabbit 3000 i na klasickém PC. Tímto postupem jsem si usnadnil ladění, zrychlil překlad a zároveň jsem si zajistil maximální přenositelnost již od samého počátku. Detekce kompilátoru je řešena pomocí této konstrukce: 27 Z pochopitelných důvodů. Režie takového úkonu by jistě nebyla malá a takovéto zacházení s pamětí by vedlo k její velké fragmentaci.

73 62 #ifdef _DCID #define COMPILER_DC #else #define COMPILER_GCC #endif // preklad probiha na Dynamic C CE // preklad probiha na GCC Pokud je definováno makro DCID, tak je překlad prováděn pomocí kompilátoru Dynamic C CE [39]. V opačném případě předpokládám překlad pomocí překladače i386 verze GNU GCC [38]. Podle typu překladače potom vyberu funkci z první skupiny (viz kapitola 11.1). Funkce pro PC jsou v názvu identifikátoru označeny řetězcem GCC a funkce pro MultiMedia Card řetězcem MMC. Příklad: Formát funkce pro čtení bloku dat na PC a na MMC udávají následující deklarace: int int GCC_Read_blok(void *, unsigned long, unsigned short); MMC_Read_blok(void *, unsigned long, unsigned short); Společná funkce pro čtení bloku dat včetně definice: int _Read_blok(void *ptr, unsigned long posun, unsigned short len) { #ifdef COMPILER_GCC return GCC_Read_blok(ptr, posun, len); // cteni bloku dat #else return MMC_Read_blok(ptr, posun, len); // cteni bloku dat #endif } Funkce EMBFATFS pro PC velice jednoduše simulují práci se skutečným paměťovým médiem tak, že je při inicializaci celý obraz disku nahrán do paměti funkcí int FAT_GCC_Init(void) (která pro tento obraz byla alokována) a při ukončení EMBFATFS je opět celý obraz zapsán zpět na disk funkcí void FAT_GCC_Exit(void). Během práce se systémem FAT jsou volány PC ekvivalenty MMC funkcí, které pracují s úsekem paměti počítače podobně jako s úsekem paměti karty MMC.

74 Návrh knihovních funkcí Knihovna EMBFATFS (v aktuální verzi 0.5.5) je složena ze stodvacetipěti funkcí, které jsem rozdělil podle standardního postupu do tří úrovní. Do první skupiny patří funkce s prefixem. Tyto funkce přímo ovládají hardware, nebo využívají některou z globálních struktur, které nesmí být změněny. Neuvážené použití těchto proměnných by mohlo způsobit chybnou práci EMBFATFS. V C++ by tyto funkce byly privátními metodami některé třídy a programátor by je nesměl využívat. Druhou skupinu tvoří funkce s prefixem. Jejich používání již nemůže ohrozit činnost EMBFATFS, ale pro většinu aplikací jsou zbytečné. Jediné smysluplné využití mají (stejně jako funkce z první skupiny) při programování funkcí třetí vrstvy. Zbytek (třetí skupinu) tvoří funkce bez prefixu. Je to nejvyšší vrstva knihovny. Funkce této vrstvy jsou určeny pro většinu aplikací. Na platformě PC jí odpovídá standardní knihovna stdio.h. V této kapitole budu popisovat pouze funkce bez prefixu, které jsou určeny k přímému využití. Informace o těch ostatních jsou dostupné formou komentářů přímo ve zdrojových textech, které jsou součástí přiloženého CD Funkční prototypy koncových funkcí EMBFATFS Funkce pro MMC int MMC_Init(void) Provede inicializaci MMC karty. Součástí této funkce je i načtení registrů CID a CSD do globálních datových struktur cid a csd. Tato funkce musí být volána před použitím první funkce pro MMC. V případě neúspěchu je vrácena nenulová návratová hodnota. void MMC_Exit(void) Ukončení práce s MMC kartou (reset MMC). Za touto funkcí již nesmí být žádná funkce pro MMC volána. void MMC_Info(void) Vypíše informace o výrobci, označení MMC, sériové číslo, velikost a seznam podporovaných tříd Funkce pro FAT int FAT_Init(void) Provede inicializaci souborového systému FAT. Vypočítá volné místo, najde první volný cluster a pro FAT32 načte strukturu FSI (viz kapitola 8.3). Tato funkce musí být volána před použitím první funkce pro FAT. V případě neúspěchu je vrácena nenulová návratová hodnota.

75 64 void FAT_Exit(void) Ukončení práce se souborovým systémem. Za touto funkcí již nesmí být žádná funkce pro FAT volána. int FAT_GCC_Init(void) Funkce, která načte obraz disku do paměti PC (viz kapitola 11.3). V případě neúspěchu je vrácena nenulová návratová hodnota. void FAT_GCC_Exit(void) Zápis obrazu disku z paměti PC zpět na pevný disk (viz kapitola 11.3). V případě neúspěchu je vrácena nenulová návratová hodnota. void FAT_Info(void) Vypíše informace ze struktur BPB, EBPB a určí skutečný typ souborového systému (viz kapitola 7) Obdoby standardních funkcí int findfirst(char *cesta, ffblk *ffblk) Hledá první objekt (soubor, adresář nebo label) v adresáři zadaném parametrem cesta. Struktura ffblk je popsána v kapitole Pokud zadaná cesta neexistuje, je vrácena návratová hodnota ff h. Hodnota 1 h znamená, že nebyl nalezen žádný objekt. int findnext(ffblk *ffblk) Hledá další objekt (soubor, adresář nebo label) v adresáři zadaném parametrem cesta ve funkci int findfirst(). Tato funkce se v naprosté většině případů používá v kombinaci s funkcí int findfirst(). Typickým přikladem je funkce void ls(). Návratová hodnota 1 h znamená, že nebyl nalezen další objekt. int rfopen(rfile *stream, char *cesta, char mode) Otevře soubor stream zadaný parametrem cesta. Parametr mode určuje způsob otevření souboru. Hodnota r otevře soubor pro čtení (od začátku souboru), hodnota w pro zápis (existuje-li, je přepsán) a hodnota a otevře soubor pro čtení nebo zápis. Pozici nastaví na konec souboru. Pokud by se například některá z funkcí pokusila zapisovat do souboru, který je jen pro čtení, tak v ní dojde k chybě. Při neúspěšném otevření souboru je vrácena nenulová návratová hodnota. int rfseek(rfile *stream, long offset, int whence) Přesune ukazatel pozice v otevřeném souboru stream o hodnotu offset od pozice zadané parametrem whence. Ta může být SEEK SET (posun od začátku souboru), SEEK CUR (posun od aktuální pozice) nebo SEEK END (posun od konce souboru). V případě neúspěchu je vrácena nenulová návratová hodnota. int rftrunc(rfile *stream, unsigned long fsize) Tato funkce zkrátí délku otevřeného souboru stream na hodnotu fsize. V případě neúspěchu je vrácena nenulová návratová hodnota.

76 65 unsigned long rftell(rfile *stream) Vrací aktuální pozici v otevřeném souboru zadaném parametrem stream. int rfeof(rfile *stream) Obdoba standardní funkce feof(). Vrací nulu, je-li ukazatel pozice před koncem souboru a nenulovou hodnotu, je-li aktuální pozice větší nebo rovna velikost souboru. int rfgetc(rfile *stream) Přečte z otevřeného souboru stream znak a posune aktuální pozici o +1. V případě neúspěchu je vrácena konstanta EOF. int rfputc(int c, RFILE *stream) Zapíše do otevřeného souboru stream znak c. Aktuální pozice je posunuta o +1. Na rozdíl od standardní funkce int fputc() má tato funkce výhodu v tom, že nedochází ke zkrácení souboru v případě, že je zaspán znak napřiklad na začátek souboru. Pokud by programátor chtěl docílit standardního chování, stačí za tuto funkci připsat volání funkce int rftrunc() s hodnotou aktuální pozice. int rgetc(rfile *stream) viz funkce int rfgetc(). int rputc(int c, RFILE *stream) viz funkce int rfputc(). char *rfgets(char *str, unsigned int max, RFILE *stream) Přečte z otevřeného souboru stream řádek o maximální délce max. Paměť proměnné str musí být předem alokována. Návratová hodnota ukazuje na začátek řetězce str. V případě chyby je nastavena na hodnotu NULL. char *rfputs(char *str, RFILE *stream) Zapíše do souboru stream řádek str. Návratová hodnota ukazuje na začátek řetězce str. V případě chyby je nastavena na hodnotu NULL. int rfread(void *ptr, unsigned int xsize, int xn, RFILE *stream) Přečte z otevřeného souboru stream xn bloků (záznamů) dat a uloží je na adresu ptr. Velikost každého z bloků je xsize. Vrací počet načtených záznamů. int rfwrite(void *ptr, unsigned int xsize, int xn, RFILE *stream) Zapíše do otevřeného souboru stream xn bloků dat z adresy ptr. Velikosti každého z bloků je xsize. Vrací počet zapsaných záznamů. int rfsyncbuf(rfile *stream) Vynutí zápis vyrovnávacího bufferu otevřeného souboru stream na disk. V případě neúspěchu je vrácena nenulová návratová hodnota.

77 66 int rfclose(rfile *stream) Uzavře otevřený soubor stream. V případě neúspěchu je vrácena nenulová návratová hodnota Příklady vyšších funkcí Určení velikosti souboru unsigned long rfsize(rfile *stream) Vrací velikost otevřeného souboru stream. Čtení a nastavení jména disku char *Get_Label(void) Přečte jméno disku. Vrací ukazatel na začátek proměnné s tímto jménem. int Set_Label(char *label) Nastaví jméno disku. V případě neúspěchu je vrácena nenulová návratová hodnota. Určení velikosti disku unsigned long Get_Disk_size_read(void) Funkce vracející velikost disku, která je určována algoritmem postupného čtení. V případě neúspěchu je vrácena nulová návratová hodnota. Výpočet volného místa unsigned long getfreespace(int force) Vrací velikost volného místa disku v bajtech. Pro FAT12/FAT16 je nutné volné místo skutečně alespoň poprvé spočítat. Bylo-li již někdy spočítáno, je počet volných clusterů uložen do proměnné Free_Count. Je-li nastavena proměnná force na true, je hodnota znovu přepočítána. Výpis obsahu souboru void cat(char *cesta) Vypíše obsah souboru zadaného úplnou cestou. Výpis adresáře void ls(char *cesta) Vypíše obsah adresáře zadaného úplnou cestou. void dir(char *cesta) viz funkce void ls().

78 67 Vytvoření souboru nebo adresáře int mk_file(char *path, char *name) Tato funkce vytvoří prázdný soubor name v adresáři path. V případě neúspěchu je vrácena nenulová návratová hodnota. int mk_dir(char *path, char *name) Tato funkce vytvoří prázdný adresář name v adresáři path. V případě neúspěchu je vrácena nenulová návratová hodnota. Mazání souboru nebo adresáře int rm_file(char *path) Smaže soubor zadaný úplnou cestou path. V případě neúspěchu je vrácena nenulová návratová hodnota. int rm_dir(char *path) Smaže adresář, který je zadaný úplnou cestou path. V případě neúspěchu je vrácena nenulová návratová hodnota. Přesun souboru nebo adresáře int mv_file(char *source, char *dest) Přesune soubor zadaný cestami source na dest. V případě neúspěchu je vrácena nenulová návratová hodnota. int mv_dir(char *source, char *dest) Přesune adresář zadaný cestami source na dest. V případě neúspěchu je vrácena nenulová návratová hodnota. Kopírování souboru int cp_file(char *source, char *dest) Zkopíruje soubor zadaný cestami source na dest. V případě neúspěchu je vrácena nenulová návratová hodnota. Formátování média int format(void) Provede rychlý formát média. V případě neúspěchu je vrácena nenulová návratová hodnota Funkce main(void) int main(void) Hlavní funkce programu. Je zde přítomna kvůli volání testovacích funkcí.

79 68 Příklad: int main(void) { #ifdef COMPILER_GCC if (FAT_GCC_Init()) // cteni obrazu disku { printf("chyba inicializace\n"); } #else PORTGinit(); // inicializace portu LED SPIinit(); // inicializace SPI if (!MMC_Init()) // inicializace MMC { MMC_Info(); // informace o MMC #endif if (FAT_Init()) // inicializace FAT { printf("medium neni naformatovane\n"); // chyba inicializace } else { printf("--- INFORMACE O~FAT ---\n"); FAT_Info(); // informace o FAT printf("nf=%lu\n", Next_Free); // prvni volny cluster printf("fc=%lu\n", Free_Count); // pocet volnych clusteru printf("fs=%lu\n", getfreespace(1)); // volne misto mk_file("", "testovaci soubor 1"); // vytvoreni souboru dir("/"); // vypsani adresare cat("napoleon1.txt"); // vypsani souboru mk_dir("", "testovaci adresar 1.dir"); // vytvoreni adresare FAT_Exit(); // konec FAT } #ifdef COMPILER_GCC #else FAT_GCC_Exit(); // zapis obrazu disku

80 69 } #endif MMC_Exit(); // konec prace s MMC } printf("\nprogram DONE...\n"); for (;;); return 0; // konec // infinity loop Vytvořené programové vybavení je příkladem využití paměti MMC se souborovým systémem FAT. Pro potřeby konkrétních aplikací je nutné funkci main() upravit podle požadavků zákaznické aplikace Struktury Součástí EMBFATFS je velké množství nových datových typů, datových struktur a unionů (definice jsou uvedeny v souboru embfatfs.lib). Některé z těchto proměnných je důležité znát podrobněji, protože ukazatele na jejich instance jsou i v parametrech funkcí nejvyšší úrovně. Struktura RFILE typedef struct { unsigned long startclust; // prvni cluster souboru unsigned long curcluster; // aktualni cluster unsigned long fsize; // velikost souboru unsigned long pos; // pozice v souboru unsigned int posincurcl; // pozice v akt. clusteru int open; // indikator otevreni char enable_read; // povoleni cteni char enable_write; // povoleni zapisu char mode; // zpusob otevreni (rwa) union DIR_ENTRY de; // buffer zaznamu adresare unsigned long last_de_sector; // pomocna promenna unsigned int last_de_entry; // pomocna promenna unsigned long is; // prave nacteny sektor

81 70 SECTOR_BLOK sb; }RFILE; // buffer sektoru Struktura ffblk typedef struct { unsigned char ff_attrib; // atribut objektu unsigned short ff_ftime; // cas vytvoreni objektu unsigned short ff_fdate; // datum vytvoreni objektu unsigned long ff_fsize; // velikost objektu unsigned long ff_sc; // prvni cluster objektu char *ff_name; // jmeno objektu unsigned long startclust; // prvni cluster objektu unsigned long tentc; // pocitadlo zaznamu adresare unsigned long last_usl; // optimalizaci prochazeni FAT unsigned long xgetfatentry; // optimalizaci prochazeni FAT int get_fat_err; }ffblk; // chyba pri cteni z FAT 11.7 Testovací program K otestování funkčnosti knihovních funkcí jsem naprogramoval jednoduché webové rozhraní, které umožňuje: vypsat soubory a adresáře na MMC kartě stažení (popřípadě prohlédnutí) libovolného souboru vytvořit několik předdefinovaných souborů a adresářů naformátovat MMC kartu Po zadání IP adresy do internetového prohlížeče se objeví úvodní stránka, jejíž náhled zobrazen na obrázku 24. Příklad výpisu kořenového adresáře MMC karty je na obrázku 25.

82 71 Obrázek 24: Úvodní stránka příkladu Obrázek 25: Výpis root adresáře Pro realizaci tohoto příkladu bylo třeba změnit zdrojový text knihovny http.lib, která je standardní součástí vývojového prostředí Dynamic C CE tak, aby bylo možné cgi skriptům předávat parametry. Upravená verze této knihovny je dostupná pod jménem http emb.lib na přiloženém CD u zdrojového textu tohoto přikladu. Další zajímavé informace o souborovém sytému FAT a o jeho datových strukturach lze nalézt například v [26] a [27], o MultiMedia Card v embedded zařízeních se lze dočíst v [16], [17], [18], [19], [20], o SPI v [21], [22] a o výpočtu CRC pojednává [23], [24] a [25].

Souborové systémy a logická struktura dat (principy, porovnání, příklady).

Souborové systémy a logická struktura dat (principy, porovnání, příklady). $TECH 13 Str. 1/5 Souborové systémy a logická struktura dat (principy, porovnání, příklady). Vymezení základních pojmů Soubor První definice: označuje pojmenovanou posloupnost bytů uloženou na nějakém

Více

Souborové systémy. Architektura disku

Souborové systémy. Architektura disku Souborové systémy Architektura disku Disk je tvořen několika plotnami s jedním nebo dvěma povrchy, na každém povrchu je několik soustředných kružnic (cylindrů) a na každém několik úseků (sektorů). Příklad

Více

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ

ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Projekt: ODBORNÝ VÝCVIK VE 3. TISÍCILETÍ Téma: MEIII - 2.3.4 Rozdělení HDD Obor: Mechanik Elektronik Ročník: 3. Zpracoval(a): Bc. Martin Fojtík Střední průmyslová škola Uherský Brod, 2010 Projekt je spolufinancován

Více

IPZ laboratoře Struktura pevného disku L305 Cvičení 1 Cvičící:

IPZ laboratoře Struktura pevného disku L305 Cvičení 1 Cvičící: IPZ laboratoře Struktura pevného disku L305 Cvičení 1 2012 Cvičící: Šimek Václav, Mičulka Lukáš, Šimková Marcela, Tříska Vít Obsah cvičení Fyzická struktura pevného disku Geometrie, rozhraní, základní

Více

Fyzická a logická struktura media HDD

Fyzická a logická struktura media HDD Fyzická a logická struktura media HDD Struktura disku Každé médium (nosič) může mít více povrchů (surfaces), stran (sides), hlav (heads) disketa 1-2 povrchy (typicky 2) pevný disk - více povrchů Data jsou

Více

ÚAMT FEKT VUT. mikroprocesor Rabbit. Diplomová prá ce. Tomá škreuzwieser. Brno 2004. Email: kreuzwieser@kn.vutbr.cz

ÚAMT FEKT VUT. mikroprocesor Rabbit. Diplomová prá ce. Tomá škreuzwieser. Brno 2004. Email: kreuzwieser@kn.vutbr.cz ÚAMT FEKT VUT Zá znamová karta pro mikroprocesor Rabbit Diplomová prá ce Tomá škreuzwieser Email: kreuzwieser@kn.vutbr.cz Brno 2004 Osnova prezentace Cíl mé prá ce (zadá ní) Proč jsou pamě ťové karty důležité

Více

Autor: Bc. Miroslav Světlík. Škola: Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, příspěvková organizace

Autor: Bc. Miroslav Světlík. Škola: Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, příspěvková organizace Paměťové karty Autor: Bc. Miroslav Světlík Škola: Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice, Benešovo náměstí 1, příspěvková organizace Kód: VY_32_INOVACE_ICT_834 1. 11. 2012

Více

Operační systémy 2. Struktura odkládacích zařízení Přednáška číslo 10

Operační systémy 2. Struktura odkládacích zařízení Přednáška číslo 10 Operační systémy 2 Struktura odkládacích zařízení Přednáška číslo 10 Základní pojmy Paměťové médium periferní zařízení nejvyšší důležitosti samotný OS je obvykle uložen na paměťovém zařízení. Proto je

Více

Operační systémy 1. Přednáška číslo 10 26. 4. 2010. Struktura odkládacích zařízení

Operační systémy 1. Přednáška číslo 10 26. 4. 2010. Struktura odkládacích zařízení Operační systémy 1 Přednáška číslo 10 26. 4. 2010 Struktura odkládacích zařízení Základní pojmy Paměťové médium periferní zařízení nejvyšší důležitosti samotný OS je obvykle uložen na paměťovém zařízení.

Více

Paměti Flash. Paměti Flash. Základní charakteristiky

Paměti Flash. Paměti Flash. Základní charakteristiky Paměti Flash K.D. - přednášky 1 Základní charakteristiky (Flash EEPROM): Přepis dat bez mazání: ne. Mazání: po blocích nebo celý čip. Zápis: po slovech nebo po blocích. Typická životnost: 100 000 1 000

Více

Mikrokontroléry. Doplňující text pro POS K. D. 2001

Mikrokontroléry. Doplňující text pro POS K. D. 2001 Mikrokontroléry Doplňující text pro POS K. D. 2001 Úvod Mikrokontroléry, jinak též označované jako jednočipové mikropočítače, obsahují v jediném pouzdře všechny podstatné části mikropočítače: Řadič a aritmetickou

Více

Obsah. Kapitola 1 Skříně počítačů 15. Kapitola 2 Základní deska (mainboard) 19. Kapitola 3 Napájecí zdroj 25. Úvod 11

Obsah. Kapitola 1 Skříně počítačů 15. Kapitola 2 Základní deska (mainboard) 19. Kapitola 3 Napájecí zdroj 25. Úvod 11 Obsah Úvod 11 Informace o použitém hardwaru 12 Několik poznámek k Windows 13 Windows XP 13 Windows Vista 13 Kapitola 1 Skříně počítačů 15 Typy skříní 15 Desktop 15 Tower (věžová provedení) 15 Rozměry skříní

Více

Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM

Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM 1 Požadavky na RDRAM - začátky Nové DRAM musí zajistit desetinásobné zvýšení šířky pásma srovnání výkonu procesoru a paměti. Náklady na výrobu a prodej

Více

Z čeho se sběrnice skládá?

Z čeho se sběrnice skládá? Sběrnice Co je to sběrnice? Definovat sběrnici je jednoduché i složité zároveň. Jedná se o předávací místo mezi (typicky) více součástkami počítače. Sběrnicí však může být i předávací místo jen mezi dvěma

Více

Technické prostředky počítačové techniky

Technické prostředky počítačové techniky Informatika 2 06 Technické prostředky počítačové techniky Externí paměti 2 Nemagnetická média IS2-4 1 Aktuality ze světa ICT Informační systémy 2 Simulace kyberútoku Projekt Fénix 2 Master boot record

Více

Číslo projektu: CZ.1.07/1.5.00/34.0290. III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Zdeněk Dostál Ročník: 1. Hardware.

Číslo projektu: CZ.1.07/1.5.00/34.0290. III/2 Inovace a zkvalitnění výuky prostřednictvím ICT. Zdeněk Dostál Ročník: 1. Hardware. Zlepšení podmínek pro vzdělávání na středních školách Operačního programu Vzdělávání pro konkurenceschopnost Název a adresa školy: Integrovaná střední škola Cheb, Obrněné brigády 6, 350 11 Cheb Číslo projektu:

Více

Historie. Děrné štítky

Historie. Děrné štítky Paměťová média Děrné štítky Historie Prvním paměťovým médiem byli děrné štítky. Jednalo se o většinou papírové štítky. Datová kapacita byla minimální, rychlost čtení malá a rychlost zápisu ještě menší.

Více

Princip funkce počítače

Princip funkce počítače Princip funkce počítače Princip funkce počítače prvotní úlohou počítačů bylo zrychlit provádění matematických výpočtů první počítače kopírovaly obvyklý postup manuálního provádění výpočtů pokyny pro zpracování

Více

Registrový model HDD

Registrový model HDD Registrový model HDD Charakteristika Pevný disk IDE v sestavě personálního počítače sestává z disku a jeho řadiče tyto dvě komponenty tvoří jeden mechanický celek. Procesor komunikuje s řadičem přes registry

Více

DUM č. 6 v sadě. 31. Inf-7 Technické vybavení počítačů

DUM č. 6 v sadě. 31. Inf-7 Technické vybavení počítačů projekt GML Brno Docens DUM č. 6 v sadě 31. Inf-7 Technické vybavení počítačů Autor: Roman Hrdlička Datum: 28.11.2013 Ročník: 1A, 1B, 1C Anotace DUMu: přehled interních sběrnic a vstup-výstupních interface

Více

Růst datových potřeb Pojem velkokapacitní se mění v čase Dříve několik MB, dnes stovky GB až TB

Růst datových potřeb Pojem velkokapacitní se mění v čase Dříve několik MB, dnes stovky GB až TB Záznamová média Informační systémy 2 Záznamová média Růst datových potřeb Pojem velkokapacitní se mění v čase Dříve několik MB, dnes stovky GB až TB 30.4.2015 IS2-2015-06 1 Děrné štítky Karton + díry Děrná

Více

Základní pojmy informačních technologií

Základní pojmy informačních technologií Základní pojmy informačních technologií Informační technologie (IT): technologie sloužící k práci s daty a informacemi počítače, programy, počítač. sítě Hardware (HW): jednoduše to, na co si můžeme sáhnout.

Více

Rozhraní mikrořadiče, SPI, IIC bus,..

Rozhraní mikrořadiče, SPI, IIC bus,.. Rozhraní mikrořadiče, SPI, IIC bus,.. Přednáška A3B38MMP 2013 kat. měření, ČVUT - FEL, Praha J. Fischer A3B38MMP, 2013, J.Fischer, kat. měření, ČVUT - FEL, Praha 1 Rozhraní SPI Rozhraní SPI ( Serial Peripheral

Více

Praktické úlohy- 2.oblast zaměření

Praktické úlohy- 2.oblast zaměření Praktické úlohy- 2.oblast zaměření Realizace praktických úloh zaměřených na dovednosti v oblastech: Měření specializovanými přístroji, jejich obsluha a parametrizace; Diagnostika a specifikace závad, měření

Více

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010

Přednášky o výpočetní technice. Hardware teoreticky. Adam Dominec 2010 Přednášky o výpočetní technice Hardware teoreticky Adam Dominec 2010 Rozvržení Historie Procesor Paměť Základní deska přednášky o výpočetní technice Počítací stroje Mechanické počítačky se rozvíjely už

Více

Operační systémy 1. Přednáška číslo 11 3. 5. 2010. Souborové systémy

Operační systémy 1. Přednáška číslo 11 3. 5. 2010. Souborové systémy Operační systémy 1 Přednáška číslo 11 3. 5. 2010 Souborové systémy Dělení dle bezpečnosti Souborové systémy s okamžitým zápisem pouze jeden druh operace a další musí čekat. Data se nemohou ztratit, ale

Více

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 ZÁKLADY PROGRAMOVÁNÍ Mgr. Vladislav BEDNÁŘ 2013 1.3 2/14 Co je vhodné vědět, než si vybereme programovací jazyk a začneme programovat roboty. 1 / 14 0:40 1.3. Vliv hardware počítače na programování Vliv

Více

Systém souborů (file system, FS)

Systém souborů (file system, FS) UNIX systém souborů (file system) 1 Systém souborů (file system, FS)! slouží k uchování dat na vnějším paměťovém médiu a zajišťuje přístup ke struktuře dat! pro uživatele možnost ukládat data a opět je

Více

KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ

KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KAPITOLA 1 - ZÁKLADNÍ POJMY INFORMAČNÍCH A KOMUNIKAČNÍCH TECHNOLOGIÍ KLÍČOVÉ POJMY technické vybavení počítače uchování dat vstupní a výstupní zařízení, paměti, data v počítači počítačové sítě sociální

Více

PRVNÍ ZÁZNAMOVÁ MÉDIA. Děrný štítek z tenkého kartonu, informace je dána dírkou na určité pozici na běžném štítku je 80 nebo 90 sloupců dat

PRVNÍ ZÁZNAMOVÁ MÉDIA. Děrný štítek z tenkého kartonu, informace je dána dírkou na určité pozici na běžném štítku je 80 nebo 90 sloupců dat ZÁZNAMOVÁ MÉDIA PRVNÍ ZÁZNAMOVÁ MÉDIA Děrný štítek z tenkého kartonu, informace je dána dírkou na určité pozici na běžném štítku je 80 nebo 90 sloupců dat Děrná páska historické paměťové médium, nahradila

Více

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2

IPZ laboratoře. Analýza komunikace na sběrnici USB L305. Cvičící: Straka Martin, Šimek Václav, Kaštil Jan. Cvičení 2 IPZ laboratoře Analýza komunikace na sběrnici USB L305 Cvičení 2 2008 Cvičící: Straka Martin, Šimek Václav, Kaštil Jan Obsah cvičení Fyzická struktura sběrnice USB Rozhraní, konektory, topologie, základní

Více

Local Interconnect Network - LIN

Local Interconnect Network - LIN J. Novák Czech Technical University in Prague Faculty of Electrical Engineering Dept. Of Measurement Distributed Systems in Vehicles CAN LIN MOST K-line Ethernet FlexRay Základní charakteristiky nízká

Více

PCMCIA(Personal Computer Memory Card PCMCIA (3) PCMCIA (2) PCMCIA (4)

PCMCIA(Personal Computer Memory Card PCMCIA (3) PCMCIA (2) PCMCIA (4) PCMCIA (1) PCMCIA(Personal Computer Memory Card International Association) - sdružení založené v roce 1989 Úkolem PCMCIA bylo zavést standard pro rozšiřující karty (a jimi využívané sloty) používané zejména

Více

Uživatelský manuál. KNXgw232

Uživatelský manuál. KNXgw232 KNXgw232 Uživatelský manuál verze 1.5 KNXgw232 slouží pro ovládání a vyčítání stavů ze sběrnice KNX RS232 s ASCII protokolem signalizace komunikace galvanické oddělení KNX - RS232 možnost napájení z KNX

Více

PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6, s o f c o s o f c o n.

PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6,   s o f c o s o f c o n. PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT Příručka uživatele Střešovická 49, 162 00 Praha 6, e-mail: s o f c o n @ s o f c o n. c z tel./fax : (02) 20 61 03 48 / (02) 20 18 04 54, http :// w w w. s o f

Více

Konektory a Kabely. Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení

Konektory a Kabely. Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení Karel Johanovský Michal Bílek SPŠ-JIA Konektory a Kabely Aneb zařízení integrovaná do základní desky a konektory a kabeláž pro připojení externích zařízení 1 Zařízení integrovaná do MB Základní deska se

Více

Identifikátor materiálu: ICT-1-11

Identifikátor materiálu: ICT-1-11 Identifikátor materiálu: ICT-1-11 Předmět Informační a komunikační technologie Téma materiálu Flash paměti Autor Ing. Bohuslav Nepovím Anotace Student si procvičí / osvojí flash paměti. Druh učebního materiálu

Více

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4

1 Osobní počítač Obecně o počítačích Technické a programové vybavení... 4 1 Osobní počítač... 2 1.1 Architektura IBM PC... 2 2 Obecně o počítačích... 3 2.1 Co jsou počítače dnes... 3 3 Technické a programové vybavení... 4 3.1 Hardware... 4 3.1.1 Procesor... 4 3.1.2 Sběrnice...

Více

Struktura a architektura počítačů (BI-SAP) 10

Struktura a architektura počítačů (BI-SAP) 10 Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Struktura a architektura počítačů (BI-SAP) 10 doc. Ing. Hana Kubátová, CSc. Katedra číslicového návrhu Fakulta informačních technologii

Více

FVZ K13138-TACR-V004-G-TRIGGER_BOX

FVZ K13138-TACR-V004-G-TRIGGER_BOX TriggerBox Souhrn hlavních funkcí Synchronizace přes Ethernetový protokol IEEE 1588 v2 PTP Automatické určení možnosti, zda SyncCore zastává roli PTP master nebo PTP slave dle mechanizmů standardu PTP

Více

FLASH PAM TI. David Richter Ing. Karel Kubata

FLASH PAM TI. David Richter Ing. Karel Kubata FLASH PAM TI David Richter Ing. Karel Kubata Flash pam ti Obecná charakterstika: mechanicky odolné,, neobsahující žádné mechanické části uchovávaj vající data bezpřístupu elektrického napětí Použit ití

Více

Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM

Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM Paměti Rambus DRAM (RDRAM) Paměti Flash Paměti SGRAM 1 Požadavky na RDRAM - začátky Nové DRAM musí zajistit desetinásobné (?) zvýšení šířky pásma srovnání výkonu procesoru a paměti. Náklady na výrobu a

Více

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Semestrální práce z předmětu Speciální číslicové systémy X31SCS Semestrální práce z předmětu Speciální číslicové systémy X31SCS Katedra obvodů DSP16411 ZPRACOVAL: Roman Holubec Školní rok: 2006/2007 Úvod DSP16411 patří do rodiny DSP16411 rozšiřuje DSP16410 o vyšší

Více

Bootkity v teorii a praxi. Martin Dráb martin.drab@email.cz Http://www.jadro-windows.cz

Bootkity v teorii a praxi. Martin Dráb martin.drab@email.cz Http://www.jadro-windows.cz Bootkity v teorii a praxi Martin Dráb martin.drab@email.cz Http://www.jadro-windows.cz Definice Pod pojmem bootkit budeme rozumět software, který začíná být aktivní během procesu startu počítače ještě

Více

Pohled do nitra mikroprocesoru Josef Horálek

Pohled do nitra mikroprocesoru Josef Horálek Pohled do nitra mikroprocesoru Josef Horálek Z čeho vycházíme = Vycházíme z Von Neumannovy architektury = Celý počítač se tak skládá z pěti koncepčních bloků: = Operační paměť = Programový řadič = Aritmeticko-logická

Více

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ

IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ Identifikační údaje školy Číslo projektu Název projektu Číslo a název šablony Autor Tematická oblast Číslo a název materiálu Anotace Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace

Více

Hardware. Příklad převodu čísla: =1*32+0*16+0*8+1*4+0*2+1*1= Převod z dvojkové na desítkovou Sčítání ve dvojkové soustavě

Hardware. Příklad převodu čísla: =1*32+0*16+0*8+1*4+0*2+1*1= Převod z dvojkové na desítkovou Sčítání ve dvojkové soustavě 1 Hardware Dvojková soustava Pro zápis čísel v počítači se používá dvojková soustava, kdy se jakékoliv číslo zapisuje jen pomocí nul (0 Voltů) a jedniček (5V). Např.: 9 10 =1001 2 nebo 75 10 =1001011 2

Více

Vestavné systémy BI-VES Přednáška 5

Vestavné systémy BI-VES Přednáška 5 Vestavné systémy BI-VES Přednáška 5 Ing. Miroslav Skrbek, Ph.D. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze Miroslav Skrbek 2010,2011 ZS2010/11 Evropský

Více

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Přednáška. Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Přednáška Systémy souborů. FAT, NTFS, UFS, ZFS. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012 Příprava studijního programu Informatika je podporována projektem

Více

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje

Paměti. Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměti Paměť je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměti počítače lze rozdělit do tří základních skupin: registry paměťová místa na čipu procesoru jsou používány

Více

AS-Interface. AS-Interface. = Jednoduché systémové řešení

AS-Interface. AS-Interface. = Jednoduché systémové řešení AS-Interface = Jednoduché systémové řešení Představení technologie AS-Interface Technologie AS-Interface Přenosové vlastnosti Instalace Základní všeobecný popis Síťová topologie Princip komunikace AS-Interface

Více

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu

architektura mostů severní / jižní most (angl. north / south bridge) 1. Čipové sady s architekturou severního / jižního mostu Čipová sada Čipová sada (chipset) je hlavní logický integrovaný obvod základní desky. Jeho úkolem je řídit komunikaci mezi procesorem a ostatními zařízeními a obvody. V obvodech čipové sady jsou integrovány

Více

KOMBINAČNÍ LOGICKÉ OBVODY

KOMBINAČNÍ LOGICKÉ OBVODY Projekt: Inovace oboru Mechatronik pro Zlínský kraj Registrační číslo: CZ.1.07/1.1.08/03.0009 KOMBINAČNÍ LOGICKÉ OBVODY U těchto obvodů je vstup určen jen výhradně kombinací vstupních veličin. Hodnoty

Více

AGP - Accelerated Graphics Port

AGP - Accelerated Graphics Port AGP - Accelerated Graphics Port Grafiku 3D a video bylo možné v jisté vývojové etapě techniky pracovních stanic provozovat pouze na kvalitních pracovních stanicích (cena 20 000 USD a více) - AGP představuje

Více

SKŘÍŇ PC. Základní součástí počítačové sestavy je skříň.

SKŘÍŇ PC. Základní součástí počítačové sestavy je skříň. SKŘÍŇ PC Základní součástí počítačové sestavy je skříň. Obsah skříně PC Skříň PC je nejdůležitější částí PC sestavy. Bez ní by počítač nemohl pracovat. Jsou v ní umístěny další součástky hardwaru, které

Více

Komunikace modulu s procesorem SPI protokol

Komunikace modulu s procesorem SPI protokol Komunikace modulu s procesorem SPI protokol Propojení dvouřádkového LCD zobrazovače se sběrnicí SPI k procesotru (dále již jen MCU microcontroller unit) a rozložení pinů na HSES LCD modulu. Komunikace

Více

AS-Interface. AS-Interface = Jednoduché systémové řešení. Představení technologie AS-Interface

AS-Interface. AS-Interface = Jednoduché systémové řešení. Představení technologie AS-Interface = Jednoduché systémové řešení Představení technologie Česká republika 2 Technologie Přenosové vlastnosti Instalace Základní všeobecný popis Síťová topologie Princip komunikace Diagnostika Přenos analogových

Více

Profilová část maturitní zkoušky 2014/2015

Profilová část maturitní zkoušky 2014/2015 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2014/2015 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 26-41-M/01 Elektrotechnika Zaměření: technika

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií Autor: Tomáš Válek, xvalek02@stud.fit.vutbr.cz Login: xvalek02 Datum: 21.listopadu 2012 Obsah 1 Úvod do rozhraní I 2 C (IIC) 1 2 Popis funkčnosti

Více

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE Název školy: Střední odborná škola stavební Karlovy Vary Sabinovo náměstí 16, 360 09 Karlovy Vary Autor: Ing. Hana Šmídová Název materiálu: VY_32_INOVACE_12_HARDWARE_S1 Číslo projektu: CZ 1.07/1.5.00/34.1077

Více

Seriové ATA, principy, vlastnosti

Seriové ATA, principy, vlastnosti Seriové ATA, principy, vlastnosti Snahy o zvyšování rychlosti v komunikaci s periferními zařízeními jsou velmi problematicky naplnitelné jedním z omezujících faktorů je fyzická konstrukce rozhraní a kabelů.

Více

AS-Interface. AS-Interface. = Jednoduché systémové řešení

AS-Interface. AS-Interface. = Jednoduché systémové řešení AS-Interface = Jednoduché systémové řešení Představení technologie AS-Interface Technologie AS-Interface Přenosové vlastnosti Instalace Základní všeobecný popis Síťová topologie Princip komunikace AS-Interface

Více

VINCULUM VNC1L-A. Semestrální práce z 31SCS Josef Kubiš

VINCULUM VNC1L-A. Semestrální práce z 31SCS Josef Kubiš VINCULUM VNC1L-A Semestrální práce z 31SCS Josef Kubiš Osnova Úvod Základní specifikace obvodu Blokové schéma Firmware Aplikace Příklady příkazů firmwaru Moduly s VNC1L-A Co to je? Vinculum je nová rodina

Více

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus

Činnost CPU. IMTEE Přednáška č. 2. Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Činnost CPU Několik úrovní abstrakce od obvodů CPU: Hodinový cyklus fáze strojový cyklus instrukční cyklus Hodinový cyklus CPU je synchronní obvod nutné hodiny (f CLK ) Instrukční cyklus IF = doba potřebná

Více

Rozhraní SCSI. Rozhraní SCSI. Architektura SCSI

Rozhraní SCSI. Rozhraní SCSI. Architektura SCSI 1 Architektura SCSI 2 ParalelnírozhraníSCSI Sběrnice typu multimaster. Max. 8 resp. 16 zařízení. Různé elektrické provedení SE (Single Ended) HVD (High Voltage Differential) LVD (Low Voltage Differential)

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ POČÍTAČOVÉ ŘÍENÍ TECHNOLOGICKÝCH PROCESŮ účel a funkce základní struktury technické a programové vybavení komunikace s operátorem zavádění a provoz počítačového řízení Počítačový řídicí systém Hierarchická

Více

Převodník Ethernet ARINC 429

Převodník Ethernet ARINC 429 Převodník Ethernet ARINC 429 Bakalářská práce Tomáš Levora ČVUT FEL levortom@fel.cvut.cz Tomáš Levora (ČVUT FEL) Převodník Ethernet ARINC 429 levortom@fel.cvut.cz 1 / 25 Zadání Převádět data ze sběrnice

Více

Paměťový podsystém počítače

Paměťový podsystém počítače Paměťový podsystém počítače typy pamětových systémů počítače virtuální paměť stránkování segmentace rychlá vyrovnávací paměť 30.1.2013 O. Novák: CIE6 1 Organizace paměťového systému počítače Paměťová hierarchie...

Více

2.2 Acronis True Image 19

2.2 Acronis True Image 19 Obsah Kniha první Acronis True Image 9.0 1. Úvod 15 1.1 Co je Acronis True Image? 15 1.2 Co je nového v aplikaci Acronis True Image 9.0? 15 1.3 Jaký je rozdíl mezi zálohami a diskovými obrazy disků/diskových

Více

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic.

Základní principy konstrukce systémové sběrnice - shrnutí. Shrnout základní principy konstrukce a fungování systémových sběrnic. Základní principy konstrukce systémové sběrnice - shrnutí Shrnout základní principy konstrukce a fungování systémových sběrnic. 1 Co je to systémová sběrnice? Systémová sběrnice je prostředek sloužící

Více

Základní deska (mainboard)

Základní deska (mainboard) Základní deska (mainboard) Základní deska je nejdůležitější části sestavy počítače. Zajišťuje přenos dat mezi všemi díly a jejich vzájemnou komunikaci. Pomocí konektorů umožňuje pevné přichycení (grafická

Více

Universal Serial Bus (USB)

Universal Serial Bus (USB) Universal Serial Bus (USB) Terminologie V sestavách se zařízeními USB se používá architektura master slave. Počítač je master. Oba konce kabelu nejsou kompatibilní downstream/upstream. počítač upstream

Více

Počítač jako elektronické, Číslicové zařízení

Počítač jako elektronické, Číslicové zařízení Počítač jako elektronické, Číslicové Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1135_Počítač jako elektrornické, číslicové _PWP Název školy: Číslo a název projektu: Číslo a název šablony

Více

Logická organizace paměti Josef Horálek

Logická organizace paměti Josef Horálek Logická organizace paměti Josef Horálek Logická organizace paměti = Paměť využívají = uživatelské aplikace = operační systém = bios HW zařízení = uloženy adresy I/O zařízení atd. = Logická organizace paměti

Více

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/34.0333 Vzdělávání v informačních a komunikačních technologií VY_32_INOVACE_31_04 Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Název Autor Vytvořeno, pro obor, ročník Anotace Přínos/cílové kompetence Střední

Více

Jak do počítače. aneb. Co je vlastně uvnitř

Jak do počítače. aneb. Co je vlastně uvnitř Jak do počítače aneb Co je vlastně uvnitř Po odkrytí svrchních desek uvidíme... Von Neumannovo schéma Řadič ALU Vstupně/výstupní zař. Operační paměť Počítač je zařízení, které vstupní údaje transformuje

Více

Vstupně - výstupní moduly

Vstupně - výstupní moduly Vstupně - výstupní moduly Přídavná zařízení sloužící ke vstupu a výstupu dat bo k uchovávání a archivaci dat Nejsou připojována ke sběrnici přímo, ale prostřednictvím vstupně-výstupních modulů ( ů ). Hlavní

Více

Výklad učiva: Co je to počítač?

Výklad učiva: Co je to počítač? Výklad učiva: Co je to počítač? Počítač je v informatice elektronické zařízení a výpočetní technika, která zpracovává data pomocí předem vytvořeného programu. Současný počítač se skládá z hardware, které

Více

Řízení IO přenosů DMA řadičem

Řízení IO přenosů DMA řadičem Řízení IO přenosů DMA řadičem Doplňující text pro POT K. D. 2001 DMA řadič Při přímém řízení IO operací procesorem i při použití přerušovacího systému je rychlost přenosu dat mezi IO řadičem a pamětí limitována

Více

Ing. Michal Martin. Spojení PLC CLICK s NA-9289

Ing. Michal Martin. Spojení PLC CLICK s NA-9289 Propojení PLC CLICK s NA-9289 Autor: Ing. Michal Martin Copyright TECON spol. s r. o., Vrchlabí, Česká republika Tato publikace prošla jen částečnou jazykovou korekturou. Tato publikace vznikla na základě

Více

Praktická cvičení- teoretická průprava

Praktická cvičení- teoretická průprava Praktická cvičení- teoretická průprava Struktura počítače odvozená z IBM compatible : Blokové schéma a vrstvový model, OS, účel a základní princip funkce, HW PC- zdroje, Základní deska, členění CPU, Typy

Více

Přidělování paměti II Mgr. Josef Horálek

Přidělování paměti II Mgr. Josef Horálek Přidělování paměti II Mgr. Josef Horálek Techniky přidělování paměti = Přidělování jediné souvislé oblasti paměti = Přidělování paměti po sekcích = Dynamické přemisťování sekcí = Stránkování = Stránkování

Více

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV MIKROELEKTRONIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF

Více

Externí paměti 1 Feromagnetické

Externí paměti 1 Feromagnetické Technické prostředky počítačové techniky Informační systémy 2 Externí paměti 1 Feromagnetické IS2-4 1 Dnešní info: Informační systémy 2 05 Informační systémy 2 Simulace kyberútoku Novinky Internetu Projekt

Více

Paměti Josef Horálek

Paměti Josef Horálek Paměti Josef Horálek Paměť = Paměť je pro počítač životní nutností = mikroprocesor z ní čte programy, kterými je řízen a také do ní ukládá výsledky své práce = Paměti v zásadě můžeme rozdělit na: = Primární

Více

Instalace OS, nastavení systému

Instalace OS, nastavení systému ZVT Instalace OS, nastavení systému SW vybavení PC HW hardware zařízení počítače (+ firmware těchto zařízení, BIOS VGA, ) BIOS basic input output systém poskytuje služby OS, uložen v paměti na MB. (Nastavení

Více

Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný

Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů. Zdeněk Oborný Mikropočítačová vstupně/výstupní jednotka pro řízení tepelných modelů Zdeněk Oborný Freescale 2013 1. Obecné vlastnosti Cílem bylo vytvořit zařízení, které by sloužilo jako modernizovaná náhrada stávající

Více

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ POČÍTAČOVÉ ŘÍENÍ TECHNOLOGICKÝCH PROCESŮ účel a funkce základní struktury technické a programové vybavení komunikace s operátorem zavádění a provoz počítačového řízení Počítačový řídicí systém H iera rc

Více

Identifikátor materiálu: ICT-1-08

Identifikátor materiálu: ICT-1-08 Identifikátor materiálu: ICT-1-08 Předmět Informační a komunikační technologie Téma materiálu Motherboard, CPU a RAM Autor Ing. Bohuslav Nepovím Anotace Student si procvičí / osvojí základní desku počítače.

Více

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění MS WINDOWS I řada operačních systémů firmy Microsoft *1985 -? Historie Práce ve Windows XP Architektura Instalace Spouštění HISTORIE I MS-DOS 1981, první OS firmy Microsoft, pro IBM PC 16b, textový, jednouživatelský,

Více

Linux připojování zařízení. 6 praktická část

Linux připojování zařízení. 6 praktická část Linux připojování zařízení 6 praktická část I/O zařízení Všechny periférie Čistě vstupní klávesnice, myš, tablet, CD-ROM, scanner, Čistě výstupní monitor, tiskárna, Vstupně-výstupní hard disk, disketa,

Více

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit Jednoduché stránkování Operační systémy Přednáška 8: Správa paměti II Hlavní paměť rozdělená na malé úseky stejné velikosti (např. 4kB) nazývané rámce (frames). Program rozdělen na malé úseky stejné velikosti

Více

G R A F I C K É K A R T Y

G R A F I C K É K A R T Y G R A F I C K É K A R T Y Grafická karta nebo také videoadaptér je součást počítače, která se stará o grafický výstup na monitor, TV obrazovku či jinou zobrazovací jednotku. Režimy grafických karet TEXTOVÝ

Více

Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití.

Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Metodický list hardware Výukový materiál Hardware je zaměřený především na výuku principů práce hardwaru a dále uvádí konkrétní příklady použití. Postupuje od výčtu základních prvků, bez kterých se PC

Více

Návod pro použití snímače tlaku s rozhraním IO-Link

Návod pro použití snímače tlaku s rozhraním IO-Link Návod pro použití snímače tlaku Vytvořil: Ing. Ondřej Čožík Datum: 12. 2. 2015 Rev: 1.0 Obsah OBSAH... 1 ÚVOD... 2 1. POŽADAVKY PRO MOŽNOST ZAPOJENÍ SNÍMAČE DO PRŮMYSLOVÉ SÍTĚ... 2 1.1. STRUKTURA SÍTĚ...

Více

Logická struktura pevného disku

Logická struktura pevného disku Logická struktura pevného disku Slouží k uchovávání základních informací o paměťovém prostoru pevného disku 1. Tyto informace umožňují především: přehlednou organizaci a správu dat na pevném disku, nalezení

Více

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ

POČÍTAČOVÉ ŘÍZENÍ TECHNOLOGICKÝCH PROCESŮ POČÍTAČOVÉ ŘÍENÍ TECHNOLOGICÝCH PROCESŮ účel a funkce základní struktury technické a programové vybavení komunikace s operátorem zavádění a provoz počítačového řízení Hierarchická struktura řídicího systému

Více