Fakulta elektrotechnická. Pavel Richter. Vedoucí práce: Ing. Martin Novotný. Studijní program: Elektrotechnika a informatika strukturovaný bakalářský



Podobné dokumenty
Uživatelský manuál. KNXgw232

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

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

Uživatelský manuál. KNX232e / KNX232e1k

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

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

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

Local Interconnect Network - LIN

Komunikační protokol

VELKOKAPACITNÍ PAMĚŤOVÉ ZAŘÍZENÍ PRO OBVODY FPGA

Komunikace modulu s procesorem SPI protokol

Převodník Ethernet ARINC 429

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

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

MSP 430F1611. Jiří Kašpar. Charakteristika

Systém řízení sběrnice

Laboratorní cvičení z předmětu Elektrická měření 2. ročník KMT

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

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

FVZ K13138-TACR-V004-G-TRIGGER_BOX

Metody připojování periferií

Princip funkce počítače

Paměti Josef Horálek

PK Design. MB-ATmega16/32 v2.0. Uživatelský manuál. Základová deska modulárního vývojového systému MVS. Verze dokumentu 1.0 (21.12.

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

Úvod do mobilní robotiky AIL028

A4B38NVS, 2011, kat. měření, J.Fischer, ČVUT - FEL. Rozhraní mikrořadiče, SPI, IIC bus,.. A438NVS, kat. měření, ČVUT - FEL, Praha. J.

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

Přerušovací systém s prioritním řetězem

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

PROTOKOL RDS. Dotaz na stav stanice " STAV CNC Informace o stavu CNC a radiové stanice FORMÁT JEDNOTLIVÝCH ZPRÁV

Přednáška A3B38MMP. Bloky mikropočítače vestavné aplikace, dohlížecí obvody. 2015, kat. měření, ČVUT - FEL, Praha J. Fischer

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

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

Uživatelský manuál. KNXgal. řízení zabezpečovacích ústředen. Galaxy ze sběrnice KNX. napájeno ze sběrnice KNX. indikace komunikace na KNX

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

Universal Serial Bus (USB)

SEMESTRÁLNÍ PROJEKT Y38PRO

Uživatelská příručka

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Rozhraní SCSI. Rozhraní SCSI. Architektura SCSI

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

Paměťové prvky. ITP Technika personálních počítačů. Zdeněk Kotásek Marcela Šimková Pavel Bartoš

SML 33 / SMM 33 / SMN 33

Technická data. Upozornění ohledně bezpečnosti

Telemetrický komunikační protokol JETI

Počítačová sestava paměti, operační paměť RAM

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

Registrový model HDD

Popis programu EnicomD

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

Střední průmyslová škola a Vyšší odborná škola, Hrabákova 271, Příbram. III / 2 = Inovace a zkvalitnění výuky prostřednictvím ICT

KOMUNIKACE PC DAT 400/500. přes USB programem INOVATION

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

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

Činnost počítače po zapnutí

Disková pole (RAID) 1

CNC Technologie a obráběcí stroje

PK Design. Uživatelský manuál. Modul USB-FT245BM v2.2. Přídavný modul modulárního vývojového systému MVS. Verze dokumentu 1.0 (7. 11.

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

Vstupní jednotka E10 Návod na použití

Analyzátor sériového rozhraní RSA1B

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

PRESTO. USB programátor. Uživatelská příručka

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

SIC1602A20. Komunikační protokol

Uživatelská příručka

UniPi 1.1 Lite Technologická dokumentace

Moduly MicroUnit serie. všechny typy s výjimkou řady MU-43x, MU-44x a MU-84x

Protokol S-BUS pro MORSE Popis protokolu

Sběrnicová struktura PC Procesory PC funkce, vlastnosti Interní počítačové paměti PC

Vestavné systémy. BI-VES Přednáška 8. Ing. Miroslav Skrbek, Ph.D.

Mikrodiktafon EDIC-mini Tiny B22

Rozhraní mikrořadiče, SPI, IIC bus,.. Přednáška 11 (12)

DIGI Timer 8 8 kanálové stopky se záznamem dat

FASTPort. Nová sběrnice pro připojení inteligentních karet* k osmibitovým počítačům. aneb. Jak připojit koprocesor

Karty externích médií Uživatelská příručka

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

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

TCP-Wedge ZDARMA. Přidává podporu TCP/IP: Sběr dat z adres portu IP na libovolné síti TCP/IP - ethernet / internet.

Paměti EEPROM (1) Paměti EEPROM (2) Paměti Flash (1) Paměti EEPROM (3) Paměti Flash (2) Paměti Flash (3)

Microchip. PICmicro Microcontrollers

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

Systémy pro měření, diagnostiku a testování prototypů II. Odůvodnění vymezení technických podmínek podle 156 odst. 1 písm. c) ZVZ

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

Komunikační protokol

Převodník na DIN lištu s frekvenčním výstupem typ RF1

FPC - Převodník pro čínské čtečky F17 a F18 - podrobný popis služeb a příkazů -

OM ProfiBus POPIS PROTOKOLU/KOMINUKACE

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

Uživatelský manuál. KNXnet

INFORMAČNÍ A KOMUNIKAČNÍ TECHNOLOGIE

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

idrn-st Převodník pro tenzometry

Převodník sériového rozhraní RS-485 na mnohavidové optické vlákno ELO E171 Uživatelský manuál

enos dat rnici inicializaci adresování adresu enosu zprávy start bit átek zprávy paritními bity Ukon ení zprávy stop bitu ijíma potvrzuje p

ŘÍDÍCÍ DESKA SYSTÉMU ZAT-DV

EC Motor. IO Modul EC200. EC200 Int. EC200 Ext. Verze 1.20, revize PMControl s.r.o.

Solid State Drive SSD polovodičový disk. J. Vrzal, verze 0.8

Informační a komunikační technologie

Transkript:

České vysoké učení technické v Praze Fakulta elektrotechnická ČVUT FEL katedra počítačů Bakalářská práce Ukládání dat na kartu SD/MMC prostřednictvím jednočipového mikropočítače Pavel Richter Vedoucí práce: Ing. Martin Novotný Studijní program: Elektrotechnika a informatika strukturovaný bakalářský Obor: Informatika a výpočetní technika srpen 2007

ii

Poděkování Rád bych poděkoval vedoucímu bakalářské práce Ing. Martinu Novotnému za vedení práce a konzultace. Dále bych chtěl velice poděkovat Bc. Zbyňkovi Šobáňovi za cenné odborné rady a zapůjčení vývojového kitu. Poděkování patří také mým rodičům, přítelkyni a kamarádům za všeobecnou podporu, která umožnila vznik této práce. iii

iv

Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Mostě dne 19.8.2007... v

vi

Abstract This thesis presents design and implementation of device with single chip computer, that stores data received via serial port. The device stores data on MMC memory card. Basic FAT16 file system was implemented, data are accessible as normal file after insertion of memory card to standard card reader. Abstrakt Bakalářská práce se zabývá návrhem a implementací zařízení s jednočipovým mikropočítačem, které dokáže zaznamenávat data přijímaná po seriové lince. Zařízení ukládá data na paměťovou kartu typu MMC. Implementován je základní souborový systém FAT16, po připojení paměťové karty k PC jsou data přístupná v klasickém souboru. vii

viii

Obsah Seznam obrázků Seznam tabulek xi xiii 1 Úvod 1 1.1 Projekt Vzducholoď................................. 1 2 Popis problému, specifikace cíle 2 2.1 Současný stav problému............................... 2 2.2 Vymezení cílů a požadavků bakalářské práce................... 2 3 Analýza a návrh řešení 3 3.1 Funkce zařízení.................................... 3 3.2 Paměťová karta.................................... 3 3.2.1 Technologie flash............................... 4 3.2.2 Srovnání karet MMC a SD......................... 4 3.3 MultiMediaCard (MMC)............................... 5 3.3.1 Základní vlastnosti.............................. 5 3.3.1.1 Životnost.............................. 5 3.3.1.2 Automatický režim spánku.................... 5 3.3.1.3 Vkládání paměťové karty za běhu zařízení............ 5 3.3.2 Specifikace MultiMediaCard......................... 6 3.3.2.1 Povolené napětí karet a parametry spotřeby........... 6 3.3.2.2 Specifikace rozsahů pracovního prostředí............ 6 3.3.2.3 Spolehlivost a životnost...................... 7 3.3.2.4 Přístupové doby a časy přechodů................. 7 3.3.2.5 Fyzické parametry......................... 8 3.3.3 Popis rozhraní................................ 9 3.3.3.1 MultimediaCard protokol..................... 9 3.3.3.2 SPI protokol............................ 9 3.3.3.3 Srovnání MultimediaCard protokolu a SPI protokolu..... 10 3.3.3.4 Vnitřní registry paměťové karty................. 10 3.3.3.5 Časování sběrnice......................... 11 3.3.4 SPI Mód................................... 12 3.3.4.1 Inicializace a přechod do SPI Módu............... 12 3.3.4.2 Registry přístupné v SPI Módu.................. 12 3.3.4.3 Protokol SPI............................ 12 ix

3.3.4.4 Příkazy (commands) protokolu SPI............... 13 3.3.4.5 Formát zasílání příkazů...................... 13 3.3.4.6 Odpovědi (responses) protokolu SPI............... 13 3.3.4.7 Data tokeny protokolu SPI.................... 15 3.4 Návrh zařízení.................................... 16 3.4.1 Blokové schéma................................ 16 3.4.2 Výběr procesoru............................... 16 4 Realizace 18 4.1 Hardwarová část................................... 18 4.1.1 Připojení MMC k procesoru, příchozí data................ 18 4.2 Softwarová část.................................... 19 4.2.1 Hardwarová úroveň.............................. 19 4.2.2 Úroveň paměťové karty MMC........................ 20 4.2.3 Úroveň souborového systému FAT..................... 21 4.2.4 Úroveň řízení zařízení............................ 24 5 Testování 25 5.1 Srovnání s existujícími řešeními........................... 26 6 Závěr 27 6.1 Možnosti pokračování................................ 27 7 Seznam literatury 29 8 Seznam použitých zkratek 31 9 Obsah přiloženého CD 33 x

Seznam obrázků 3.1 Názorná ukázka spojených výhod pamětí flash.................. 4 3.2 Rozměry klasické karty MMC............................ 8 3.3 Časování DataIn a DataOut vzhledem k hodinovému sinálu........... 11 3.4 Základní blokové schéma zařízení.......................... 16 3.5 Blokové schéma mikroprocesoru C8051F350.................... 17 4.1 Přiřazení pinů procesoru funkcím pomocí programu Config2........... 18 4.2 Připojení MMC karty k mikroprocesoru...................... 19 4.3 Detailní zobrazení položky souboru v root adresáři................ 22 4.4 Detailní zobrazení alokační tabulky FAT...................... 23 5.1 Soubor s přijatými daty............................... 25 5.2 Kompletní soubor s očekávaným obsahem..................... 26 5.3 Výrobek ummc Storage Solution.......................... 26 xi

xii

Seznam tabulek 3.1 Rozsahy povolených napětí karet MMC...................... 6 3.2 Parametry spotřeby (při pokojové teplotě)..................... 6 3.3 Specifikace rozsahů pracovního prostředí...................... 6 3.4 Spolehlivost a životnost............................... 7 3.5 Přístupové doby a časy přechodů.......................... 7 3.6 Fyzické parametry.................................. 8 3.7 Funkce pinů při použití MultimediaCard protokolu................ 9 3.8 Funkce pinů při použití SPI protokolu....................... 9 3.9 Porovnání existujících protokolů MMC karty................... 10 3.10 Časování sběrnice s konkrétními hodnotami.................... 11 3.11 Nejdůležitější příkazy protokolu SPI........................ 13 3.12 Význam jednotlivých bitů zasílaných příkazů................... 13 3.13 Význam jednotlivých bitů response R1....................... 14 3.14 Význam jednotlivých bitů druhého bytu response R2............... 14 3.15 Význam jednotlivých bitů response R3....................... 14 3.16 Význam jednotlivých bitů data response...................... 15 3.17 Význam jednotlivých bitů data error token.................... 15 4.1 Nejdůležitější oblasti na paměťovém médiu.................... 21 4.2 Struktura boot sektoru a důležité položky..................... 21 4.3 Struktura boot sektoru a důležité položky..................... 22 4.4 Příkazy pro zařízení v hlavní režimu........................ 24 4.5 Příkazy pro zařízení ve file režimu......................... 24 xiii

xiv

KAPITOLA 1. ÚVOD 1 1 Úvod Tato bakalářská práce se zabývá návrhem mikroprocesorového zařízení a vytvořením obslužného programu (firmwaru) pro daný mikroprocesor tak, aby zařízení bylo schopné zaznamenávat data přicházející ze seriové linky na robustnější paměťové medium, jako je např. paměťová karta. Kontakt s vedoucím práce mě přivedl ke skutečnému zadavateli tohoto zařízení, k projektu Vzducholoď, který existuje již přes dva roky pod záštitou Výzkumného a vývojového centra RDC (Research and Development Centre) při ČVUT. RDC centrum si klade za cíl vytvořit a rozvíjet komunitu lidí se společnými zájmy, s možností dalšího vzdělání a účasti v národních a mezinárodních projektech. Projekt Vzducholoď je jedním z hlavních a důležitých projektů. 1.1 Projekt Vzducholoď V březnu roku 2005 byla studenty ČVUT fakulty strojní a elektrotechnické zahájena stavba prototypu šestimetrové vzducholodě BIGGIE. Konstrukce spadala do kategorie neztužených, její objem byl 10m 3. V roce 2006 začala tato skupina s názvem AirshipClub.com se stavbou nové, ještě větší vzducholodě BIGGIE09. Při stavbě této vzducholodě byl kladen důraz na zvýšení nosnosti, vyšší stabilitu a lepší ovládání za horších povětrnostních podmínek. Nová vzducholoď má délku 9m, průměr 2.3m a nosnost 12kg. Pohon je realizován dvěma střídavými elektromotory. Gondola má rozměry 630x260mm a její konstrukce je dvoupatrová. Nosný balon je opět plněn heliem a je tvořen z vrchního pláště a vnitřní duše. Gondola nese pohonné baterie, palubní baterie, regulátory pro pohon a dále blok zařízení pro posílání dat přes GSM, GPS systém, výškoměr, tlakoměr a kompas. Gondola nese také palubní počítač a experimentálně další elektronická zařízení, např. digitální fotoaparát. Pozemní řídící server potřebuje komunikovat s CPU vzducholodi tak, aby mu mohl předávat řídící příkazy a naopak přijímat naměřená data. Řídící příkazy musí být přeneseny co nejdříve, zatímco ostatní data mohou být zpožděna. Při ztrátě komunikace či jiných nepředvídatelných událostech by bylo dobré ukládat všechna data přímo na palubě vzducholodi tak, aby bylo možno s nimi pracovat po přistání. Zařízení vyvinuté v rámci této bakalářské práce takový požadavek splní.

2 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE 2 Popis problému, specifikace cíle 2.1 Současný stav problému Komunikace se vzducholodí nyní probíhá buď přes GSM nebo radiový přenos. V případě ztráty této komunikace se veškerá naměřená data a rozhodnutí o chování vzducholoďi nenávratně ztratí. Je tedy nutné zařídit i ukládání dat na palubě samotné vzducholodi. Zařízení by mělo pracovat jako černá skříňka. 2.2 Vymezení cílů a požadavků bakalářské práce výběr vhodného mikroprocesoru studium a analýza paměťové karty návrh hardwarové části zařízení studium a analýza souborového systému FAT implementace firmware zařízení, práce se soubory, přijímání a ukládání dat testování

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 3 3 Analýza a návrh řešení 3.1 Funkce zařízení Hlavním úkolem tohoto zařízení je ukládání dat na paměťovou kartu. Abychom mohli data z paměťové karty přečíst v klasické čtečce, musíme data nějakým způsobem třídit. Pro své zařízení jsem navrhl jednoduchý ovládací automat, který přijímá jedno-bytové příkazy. Po připojení napájení inicializuje zařízení paměťovou kartu, vyšle přes seriovou linku potvrzení a dostane se do základního režimu. V základním režimu přijímá zařízení příkazy: I - zaslání informací o zařízení a verzi obslužného programu N - založení nového souboru Každý z těchto příkazů je reprezentován jedním bytem, tedy velkým písmenem I (hexadecimálně 0x49) a velkým písmenem N (hexadecimálně 0x4E). Přijetím příkazu N pro založení nového souboru se spustí procedura, která do hlavního adresáře karty zapíše nový soubor s názvem DATAxxx.txt, kde xxx představuje trojciferné číslo. Toto číslo bude s každým novým souborem o 1 větší. První vytvořený soubor bude mít název DATA001.TXT Se založením nového souboru se zařízení také dostane do file režimu a pošle potvrzení přes seriovou linku. Ve file režimu bude zařízení očekávat pouze 2 příkazy: W - zápis dat C - uzavření souboru a návrat do základního režimu Příkaz zápisu dat je reprezentován jedním bytem, velkým písmenem W (hexadecimálně 0x57). Po přijetí příkazu bude zařízení čekat na přijetí přesně 512B dat. Zápis dat bude možno opakovat opět příkazem W a dalším blokem dat. Každým příkazem W se soubor zvětší o 512B přijatých dat. Výsledný soubor bude složen kontinuálně z přijatých bloků. Příkaz uzavření souboru reprezentuje byte s velkým písmenem C (hexadecimálně 0x43). Po přijetí příkazu bude současný soubor uzavřen a zařízení se dostane opět do základního režimu, kde lze vytvořit další soubor. Zařízení bude vyžadovat připojení seriovou linkou s nastavením rychlosti 9600 baudů, 8 datovými bity, 1 stop bitem a žádnou paritou. 3.2 Paměťová karta Paměťová karta je velmi malé, přenositelné záznamové médium, vyrobené technologií flash. Výrobci těchto karet se specializují na jejich malou velikost, velký prostor pro uložení dat, nízkou spotřebu a nízkou cenu. Paměťová karta typu flash je ideální úložné médium pro přenosné, bateriově napájené elektronické zařízení. Paměťové karty jsou v dnešní době vyráběny v různých rychlostech. Některé karty nesou ve své specifikaci pouze údaj přenosová rychlost 12MB/s. U takového označení ovšem můžeme být klamáni marketingovým oddělením, které často zneužívá neznalosti kupujících. Jednotka MB totiž správně vyjadřuje 1 000 000 B (podle předpony mega z mezinárodní tabulky SI), ale

4 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ kupující předpokladá, že je to 1 048 576 B, tedy 1024 x 1024. Hodnota 1 048 576 se ovšem značí MiB 1. Rozdíl mezi 12 MB/s a 12 MiB/s tedy může znamenat 2 582 912 bytů, což je přes 20%. Mezinárodní úřad pro váhy a míry BIPM silně doporučuje užívat tyto IEC prefixy jako alternativu pro prefixy, které nejsou v SI soustavě.[4] Někteří výrobci používají označení rychlosti karty jako násobek základní přenosové rychlosti určené historicky jako rychlost přenosu dat prvních CD disků. Tato rychlost je 150 KiB/s. U paměťové karty s označením 200x vypočteme přenosovou rychlost jako: 200 x 150 KiB/s = 30 000 KiB/s = 29,3 MiB/s Existují také různé verze karet. Paměťové karty MMC mají tyto verze: full-size MMC, MMCplus, MMCmobile, RSMMC, MMCmicro Paměťové karty SD mají tyto verze: full-size SD, Mini SD, Micro SD, SDHC 3.2.1 Technologie flash Flash paměti v sobě kombinují výhody několika typů pamětí. Nejdůležitějšími vlastnostmi je trvalé uložení dat (odpojení napájení nezpůsobí ztrátu dat jako u RAM) a typ média solidstate, tedy paměť zcela bez pohyblivých částí. Flash paměti mají nízké napájecí napětí, velmi malou spotřebu, jsou odolné vůči vnějšímu prostředí, vibracím, nárazům atd. Předností je také velmi krátká vybavovací a zápisová doba Flash paměť je zvláštním typem paměti EEPROM, která může být programována a mazána v blocích. DRAM EPROM EEPROM zapisovatelné FLASH velko kapacitní stálé ROM Obrázek 3.1: Názorná ukázka spojených výhod pamětí flash Zájemce o detailní vnitřní fungování pamětí flash mohu odkázat na článek [5] 3.2.2 Srovnání karet MMC a SD Mnoho rozdílů mezi těmito kartami nenajdeme. Fyzické rozměry jsou téměř shodné. Karty MMC jsou o 0,7 mm tenčí než karty SD a interface karet MMC má pouze 7 pinů oproti 9 pinům u SD karet. Kartám MMC chybí mechanický přepínač pro ochranu zápisu. Karty SD mají navíc implementovánu technologii SDMI pro ochranu copyrightu zvukových nahrávek. 1 1MiB = 1024 KiB [čteme mebibyte] a 1KiB = 1024 B [čteme kibibyte]

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 5 Pro svoji další práci jsem se zaměřil na karty typu MMC, nicméně karty typu SD by měly být kompatibilní. Paměťová karta typu MMC má menší počet pinů u interface a absenci modernějších ochran obsahu. Výrobce karet MMC také zaručuje kompatibilitu novějších verzí se staršími, zatímco výrobce karet SD zaměřuje svůj vývoj na nový typ karty s názvem SecureDigital HighCapacity (zkráceně SDHC), který není zpětně kompatibilní. 3.3 MultiMediaCard (MMC) 3.3.1 Základní vlastnosti Z produktového manuálu [2] můžeme sepsat obecné vlastnosti: dva rozsahy napájení podpora širokého rozsahu pracovní frekvence: 0-20MHz, 0-26MHz nebo 0-50MHz maximální rychlost přenosu 416Mbitů / s implementována ochrana dat pomocí hesla implementována korekce chyb implementován jednoduchý mechanizmus mazání plná zpětná kompatibilita s předchozími verzemi MultimediaCard dvě podporované výrobní velikosti: plná velikost (24mm x 32mm x 1,4mm) redukovaná velikost (24mm x 18mm x 1,4mm) 3.3.1.1 Životnost Paměťové karty SanDisk MultimediaCard mají typickou životnost 100 000 zápisů pro každý sektor. Čtení je již z principu neomezené. Vzhledem k životnosti produktů, kde se paměťové karty používají, je karta využita jenom zlomek její možné doby. 3.3.1.2 Automatický režim spánku Velkou výhodou je vlastnost, který umožňuje kartě přejít do režimu spánku zcela samostatně. Pokud jsou zpracovány všechny příkazy hostitelského zařízení, pak do několika milisekund přechází karta sama do režimu spánku. Jakmile se objeví další příkaz, přejde opět do pohotovostního režimu. Vše je plně automatické a tím je maximálně snížena spotřeba karty. 3.3.1.3 Vkládání paměťové karty za běhu zařízení Vložení karty za běhu hostitelského zařízení je samozřejmě možné, ale je potřeba, aby k tomu byl uzpůsoben konektor. Je nutné, aby piny na místě napájení byly delší než ostatní. Při vkládání karty se tedy nejprve ke kartě připojí napájení a až poté další piny, datové vodiče apod.

6 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 3.3.2 Specifikace MultiMediaCard 3.3.2.1 Povolené napětí karet a parametry spotřeby High Voltage MMC Dual Voltage MMC komunikace 2,7-3,6 1,65-1,95; 2,7-3,6 přístup k paměti 2,7-3,6 1,65-1,95; 2,7-3,6 Tabulka 3.1: Rozsahy povolených napětí karet MMC operace maximální odběr při napětí 3,6V čtení 50 ma zápis 60 ma režim sleep 150 µa Tabulka 3.2: Parametry spotřeby (při pokojové teplotě) 3.3.2.2 Specifikace rozsahů pracovního prostředí teplota operační i klidová -25 C až 85 C vlhkost operační i klidová 8% až 95%, ne kondenzující akustický hluk 0dB vibrace operační i klidová max. 15 G (špička-špička) náraz operační i klidová max. 1000G nadmořská výška operační i klidová max. 80 000 stop (přes 24km) Tabulka 3.3: Specifikace rozsahů pracovního prostředí

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 7 3.3.2.3 Spolehlivost a životnost MTBF preventivní údržba datová spolehlivost výdrž > 1 000 000 000 hodin žádná < 1 neopravitelná chyba na 10 14 přečtených bitů typicky 100 000 zápisových a mazacích cyklů Tabulka 3.4: Spolehlivost a životnost Zkratka MTBF znamená Mean Time Between Failures, tedy očekávaná střední doba v hodinách bez chyb. 3.3.2.4 Přístupové doby a časy přechodů Tyto hodnoty jsou platné pro rozsah napájecího napětí 2,7-3,6V a okolní teplotu od -25 C do 85 C. čas typicky maximálně přístupová doba - čtení bloku 0,5ms 100ms přístupová doba - zápis bloku 0,5ms 240ms doba přechodu do stavu Ready po příkazu CMD1 50ms 500ms doba přechodu ze stavu Sleep do Ready 1ms 2ms Tabulka 3.5: Přístupové doby a časy přechodů

8 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 3.3.2.5 Fyzické parametry specifikace MultimediaCard hmotnost maximálně 1,8g (typicky pod 1g) délka 32mm (+-0,1mm) šířka 24mm (+-0,08mm) tloušťka 1.4 mm (+-0,1mm) Tabulka 3.6: Fyzické parametry Obrázek 3.2: Rozměry klasické karty MMC

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 9 3.3.3 Popis rozhraní Paměťová karta má na jedné straně 7 pinů. Piny mají své funkce přiřazeny podle toho, jaký protokol využíváme. 3.3.3.1 MultimediaCard protokol pin označení typ popis 1 RSV NC nepřipojen nebo vždy log.1 2 CMD I/O, PP, OD příkaz / odpověď 3 VSS1 S uzemnění 1 4 VDD S napájecí napětí 5 CLK I hodiny 6 VSS2 S uzemnění 2 7 DAT0 I/O, PP datový vodič Tabulka 3.7: Funkce pinů při použití MultimediaCard protokolu Při použití standardního protokolu MultimediaCard jsou využívány 3 komunikační a 4 podpůrné vodiče. Vodič CMD se používá obousměrně na zasílání příkazů a přijímání odpovědi. Host a karta pracují ve dvou režimech: open-drain a push-pull. Datový vodič s označením DAT se používá také obousměrně. Host a karta pracují v režimu push-pull. Hodinový signál CLK je vysílán ve směru od hosta ke kartě, pracuje v režimu push-pull. 3.3.3.2 SPI protokol pin označení typ popis 1 CS I výběr čipu (aktivní v log. 0) 2 DataIN I data ve směru od zařízení ke kartě 3 VSS1 S uzemnění 1 4 VDD S napájecí napětí 5 CLK I hodiny 6 VSS2 S uzemnění 2 7 DataOUT O data ve směru od karty k zařízení Tabulka 3.8: Funkce pinů při použití SPI protokolu Při použití protokolu SPI jsou využívány 3 základní komunikační vodiče a navíc signál CS. Signál CS je zkratkou pro Chip Select, používá se pro výběr aktivního zařízení. Tento signál musí být aktivní po celou dobu komunikace. Obousměrné signály CMD a DAT jsou v tomto případě nahrazeny dvěma jednosměrnými signály. Signál DataIN přijímá data od hostitelského zařízení a DataOUT vysílá data směrem k hostitelskému zařízení. Hodinový signál CLK je opět kartou pouze přijímán.

10 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 3.3.3.3 Srovnání MultimediaCard protokolu a SPI protokolu MultiMediaCard Mode 3-drátová seriová sběrnice (clock, command, data) až 64k karet adresovatelných bus protokolem až 30 karet stohovatelných na jedné fyzické sběrnici lehká identifikace a přidělování adresy pro jednotlivé karty ochrana CRC proti chybám při přenosu dat sekvenční a single/multiple block čtení/zápis příkazy SPI Mode 3-drátová seriová sběrnice (clock, datain, dataout) + aktivace CS výběr karty hardwarově CS signálem každá karta potřebuje vlastní CS signál není dostupné, výběr karty hardwarovým CS signálem volitelné, standardní mod je bez kontroly chyb pouze single/multiple block čtení/zápis příkazy Tabulka 3.9: Porovnání existujících protokolů MMC karty Ve svém zařízení budu používat pouze jedinou kartu MMC. Hardwarová aktivace pomocí signálu CS je tedy nejjednodušší způsob, jak paměťovou kartu oživit. Ochranný kod CRC pro přenos dat není nutné v mém případě používat, pouze by jeho výpočet způsoboval prodlevu. Příkazy pro čtení a zápis pouze jednoho bloku dat jsou také vyhovující a proto jsem zvolil pro komunikaci s paměťovou kartou SPI mód. Celkově je pro komunikaci s jednočipovým mikropočítačem vhodnější. Dále se budu zabývat pouze tímto protokolem. 3.3.3.4 Vnitřní registry paměťové karty Paměťová karta obsahuje několik speciálních registrů. Registry OCR, CID a CSD nesou informace o nastavení karty. Registr RCA se používá pro uchování relativní adresy právě probíhajícího přenosu. Registr OCR OCR je zkratkou pro Operation Conditions Register, tedy registr pracovních podmínek. Je v něm uložena informace v jakých napěťových intervalech je karta schopna pracovat. Navíc nese tento registr i tzv.status bit, který se nastaví automaticky na hodnotu log.1, když úspěšně proběhne inicializační sekvence. Registr CID CID je zkratkou pro Card Identification Register, tedy registr identifikace karty. Hodnota tohoto registru je dána při výrobě karty tak, aby byla její 16 bytová hodnota jedinečná. Konkrétní významy bitů není třeba znát, lze si je snadno dohledat v produktovém manuálu [1], sekce 3.5.2 Registr CSD CSD je zkratkou pro Card Specific Register. Obsahuje důležitá data pro práci s kartou. Některé bity registru jsou pouze pro čtení, jiná jsou jednou či vícekrát programovatelná. Uchovávané informace např.: maximální přenosová rychlost, maximální délka přenosového bloku, velikost paměti, copy flag, označení použitého souborového systému a CRC kontrolní součet pro celý registr CSD (je nutné ho přepočítat při každé změně obsahu).

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 11 Status registr Tento 32bitový registr obsahuje chybové, stavové a bity podmínek. Např. chybný rozsah parametru příkazu, chybná adresa, chybná délka přenosového bloku, chyba CRC součtu, neznámá chyba, ale i aktuální stav karty nebo příznak připravenosti na příjem dat. Přesné hodnoty naleznete v tabulce 3-28 v [1] 3.3.3.5 Časování sběrnice Obrázek 3.3: Časování DataIn a DataOut vzhledem k hodinovému sinálu Parametr Symbol Min Max Jednotka Clock Freq.Data Transfer Mode f PP 0 20 MHz Clock Freq.Identification Mode f OD 0 400 khz Clock Low Time t WL 10 ns Clock High Time t WH 10 ns Clock Rise Time t TLH 10 ns Clock Fall Time t THL 10 ns Vstupy CMD, DAT vztažené k CLK Input Setup Time t ISU 3 ns Input Hold Time t IH 3 ns Výstupy CMD, DAT vztažené k CLK Output Setup Time t OSU 5 ns Output Hold Time t ODLY 5 ns Tabulka 3.10: Časování sběrnice s konkrétními hodnotami

12 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 3.3.4 SPI Mód SPI mód je druhým, volitelným módem, který má karta MMC k dispozici. Je koncipován pro komunikaci po SPI sběrnici, kterou má většina jednočipových počítačů. Typ komunikačního módu lze po připojení napětí vybrat pouze jednou, během prvního reset příkazu. Jediná cesta, jak vrátit řízení MMC módu je proces odpojení a připojení napětí. Nejsou zde žádné broadcastové příkazy, výběr karty se provádí přivedením aktivní logické hodnoty na signál CS. 3.3.4.1 Inicializace a přechod do SPI Módu Po připojení napájení se karta dostane do MMC módu. Pro přechod do SPI módu je nutné: na výběrový signál CS přivést neaktivní úroveň provést 80 hodinových cyklů sběrnice SPI na výběrový signál CS přivést aktivní úroveň a zaslat kartě příkaz CMD0. V tuto chvíli karta přechází do SPI módu. nyní musíme čekat na response typu R1 pro CMD0, hodnota response musí být 0x01, jiná hodnota indikuje chybu zaslat příkaz CMD1 a očekávat response R1, hodnota musí být nyní 0x00, pokud není, zaslání příkazu CMD1 se opakuje po přijetí správné R1 response může začít přenos dat Důležitá poznámka: Dokud nejsou úspěšně provedeny tyto body, neměla by rychlost SPI sběrnice přesahnout 400kHz. Po této inicializace je možné rychlost zvýšit. 3.3.4.2 Registry přístupné v SPI Módu V SPI módu jsou přístupné pouze registry OCR, CSD a CID. Jejich popis je v sekci 3.3.3.4 3.3.4.3 Protokol SPI Veškerá komunikace je na rozdíl od MultiMediaCard módu zarovnána na 8 bitů, tedy 1B. Podobně jako MultiMediaCard protokol se SPI protokol skládá z: příkazů - commands odpovědí - responses bloků dat - data blocks Hostitelské zařízení kontroluje celou komunikaci. Vybraná karta vždy odpovídá response tokenem na přijatý příkaz. Na každý přijatý blok dat odpovídá karta speciálním data response tokenem. SPI protokol je inicializován v módu bez ochrany kontrolním součtem CRC, přesto je nutné první příkaz při inicializaci, tedy CMD0 vybavit platným CRC součtem. Ten je ovšem předem známý, uvedený i ve specifikaci.

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 13 3.3.4.4 Příkazy (commands) protokolu SPI Číslo Argument Response Zkratka Popis příkazu CMD0 žádný R1 GO IDLE STATE reset MMC zařízení CMD1 žádný R1 SEND OP COND aktivuj svůj inicializační proces CMD9 žádný R1 SEND CSD zašli svůj CSD CMD10 žádný R1 SEND CID zašli svůj CID CMD16 [31:0] délka bloku R1 SET BLOCKLEN nastaví délku komunikačního bloku pro další operace CMD17 [31:0] adresa dat R1 READ SINGLE BLOCK načte z adresy data, počet bytů nastavuje CMD16 CMD24 [31:0] adresa dat R1 WRITE BLOCK zapíše na adresu data, počet bytů nastavuje CMD16 CMD58 žádný R3 READ OCR přečti registr OCR Tabulka 3.11: Nejdůležitější příkazy protokolu SPI 3.3.4.5 Formát zasílání příkazů Příkazový token má délku 6B a jeho struktura je následující: pozice bitu 47 46 45-40 39-8 7-1 0 šířka(bitů) 1 1 6 32 7 1 hodnota 0 1 X X X 1 popis start bit stálý bit číslo příkazu parametr CRC7 end bit Tabulka 3.12: Význam jednotlivých bitů zasílaných příkazů Pro názornost uvedu příklad: Pro načtení sektoru z adresy 0x00045000 musíme zaslat následujících 6 bytů: 0x51 0x00 0x50 0x04 0x00 0xFF 3.3.4.6 Odpovědi (responses) protokolu SPI Response R1 Karta zasílá tuto odpověď po každém přijatém příkazu kromě SEND STATUS. Délka je 1B. Nejvyšší 7.bit je vždy nulový. Ostatní bity odpovídají jednotlivým chybám, které popíše následující tabulka. Response R1b Tato odpověď je identická k R1, pouze s volitelným doplňkem o BUSY signál. Signál busy může trvat jakýkoliv počet bytů, nulová hodnota znamená, že karta je zaneprázděna. Nenulová hodnota nám sdělí, že karta je schopna přijímat další příkazy.

14 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ bit chyba definice 0 Idle stav Karta je v Idle stavu a provádí inicializaci 1 Reset mazání Mazací sekvence nebyla dokončena, protože přišel příkaz o zrušení 2 Chybný příkaz Byl přijat příkaz s neexistujím kódem 3 Chyba CRC při komunikaci Součet CRC posledního příkazu selhal 4 Erase Sequence chyba Nastala chyba při sekvenci příkazů mazání 5 Chyba adresy Byla použita nezarovnaná adresa vzhledem k délce komunikačního bloku 6 Chyba parametru Parametr příkazu byl mimo povolený rozsah Tabulka 3.13: Význam jednotlivých bitů response R1 Response R2 Karta zasílá tuto odpověď při přijmutí příkazu SEND STATUS. Response R2 je 2B dlouhý a první byte je svým složením shodný s R1. Druhý byte má následující strukturu: bit chyba definice 0 Karta je zamčena Tento bit je nastaven při zamknutí karty 1 Ochrana zápisu Tento bit je nastaven při pokusu o zapisování do chráněného sektoru 2 Neznámá chyba Během operace se vyskytla neznámá chyba 3 Chyba karty Chyba vnitřního kontroleru karty 4 ECC karty selhalo Byl použit kód opravy chyb, ale selhal 5 Porušení ochrany zápisu Příkaz se pokoušel zapisovat do chráněného bloku 6 Chyba parametru mazání Chybný výběr, sektor nebo skupina pro mazání 7 Mimo rozsah Parametr byl mimo rozsah nebo se host pokoušel změnit ROM, copy bit nebo WP bit Tabulka 3.14: Význam jednotlivých bitů druhého bytu response R2 Response R3 Karta zasílá tuto odpověď při přijmutí příkazu READ OCR. Response R3 je 5B dlouhý a první byte je svým složením shodný s R1. Další 4 byty obsahují OCR registr. Druhý byte má následující strukturu: bit význam 0-31 OCR registr 32-39 R1 response Tabulka 3.15: Význam jednotlivých bitů response R3

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 15 Data response Každý datový blok zapsaný na kartu je potvrzen pomocí odpovědi data response. Token je 1B dlouhý a jeho obsah ukazuje následující tabulka. 7 6 5 4 3 2 1 0 x x x 0 A B C 1 Tabulka 3.16: Význam jednotlivých bitů data response Pokud v bitech ABC přečteme 010 - pak byla data přijata a zapsána v pořádku 101 - data byla odmítnuta kvůli chybě CRC 110 - data byla odmítnuta kvůli chybě při zápisu 3.3.4.7 Data tokeny protokolu SPI Příkazy čtení a zápisu jsou spojeny s datovými tokeny, přes které data přijímáme či vysíláme. Datové tokeny mají následující formát. 1. byte = příznak začátku bloku Uživatelská data poslední 2.byty jsou 16-bit CRC součet Pro čtení i zápis jediného sektoru je příznak začátek bloku roven hodnotě 0xFE. Data error token Pokud selže operace čtení a karta není schopna dodat požadovaná data, pak se vysílá data error token. Je dlouhý 1B a jeho struktura má tento formát. 7 6 5 4 3 2 1 0 0 0 0 A B C D E Tabulka 3.17: Význam jednotlivých bitů data error token Pokud v bitech ABCDE přečteme na některé pozici jedničku, pak nastala jedna z chyb: A - karta je zamčena B - adresa mimo správný rozsah C - chyba opravy dat ECC D - chyba vnitřního kontroleru E - neznámá chyba

16 KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 3.4 Návrh zařízení Návrh zařízení jsem si rozdělil na několik úrovní. V první části se musím rozhodnout, jaký typ mikroprocesoru použiji. S tím souvisí i vývojová platforma, na které bude probíhat vývoj. Po výběru procesoru je nutné připojit paměťovou kartu ke sběrnici. navrhnout vhodný spojovací kabel. Bude tedy potřeba Vstupní data budou odebírána ze seriové linky, protože toto rozhraní se používá i v palubní elektronice vzducholodi. 3.4.1 Blokové schéma RS232 CPU karta MMC Obrázek 3.4: Základní blokové schéma zařízení 3.4.2 Výběr procesoru V široké nabídce mikroprocesorů jsem vybíral podle několika důležitých kritérií: dostatečný výpočetní výkon, minimálně 20MHz dostatek paměti RAM (kolem 1kB) přítomnost komunikačního rozhraní SPI (Serial Peripheral Interface) přítomnost komunikačního rozhraní UART (Universal Asynchronous Receiver Transmitter) nízká spotřeba dostupnost kvalitního vývojového prostředí pro práci v jazyku C pro mikroprocesory Těmto podmínkám téměř vyhovují Atmely řady ATmega, které mají dostatek paměti RAM, dostatek Flash paměti i požadovaná rozhraní, pouze maximální kmitočet je 16MHz. Další mikroprocesor splňující podmínky je od společnosti Silicon Laboratories, mikroprocesor C8051F350. Tento mě zaujal vysokým výkonem až 50MHz a zároveň poměrně malou spotřebou 5,8mA při 25MHz. Při snížení frekvence hodinových cyklů na 32kHz lze snížit spotřebu až na 11µA. Katalogový list [3] uvádí, že 70% instrukcí se vykoná v jednom až dvou hodinových taktech. Při mém rozhodování jsem se přikláněl k faktu, že procesor C8051F350 využívá pro svůj vývoj i elektronika na palubě vzducholodi. Zvolil jsem si mikroprocesor C8051F350 pro jeho vysoký výkon a zejména pro dostupnost vývojového zázemí. Zapůjčením jsem totiž získal okamžitě vývojový kit tohoto mikroprocesoru a odpadla pro mě náročná výroba vlastního programátoru a vývojové desky.

KAPITOLA 3. ANALÝZA A NÁVRH ŘEŠENÍ 17 Obrázek 3.5: Blokové schéma mikroprocesoru C8051F350

18 KAPITOLA 4. REALIZACE 4 Realizace 4.1 Hardwarová část 4.1.1 Připojení MMC k procesoru, příchozí data Podle tabulky 3.8 zjistíme přiřazení pinů karty v SPI módu. Na straně mikroprocesoru budeme s kartou MMC komunikovat pomocí SPI rozhraní. Příchozí data budeme přijímat po seriové lince. Procesor C8051F350 má implementovánu technologii Crossbar, která umožňuje přiřazovat piny jednotlivým funkcím. Pomocí aplikace Config2 od Silicon Laboratories je přiřazení pinů velice jednoduché a názorné. Zaškrnutím požadovaných funkcí se v dolním poli automaticky generuje kód programu, který nastavení provede. Obrázek 4.1: Přiřazení pinů procesoru funkcím pomocí programu Config2 Tímto nastavením jsem nastavil požadované vstupy a výstupy procesoru. P0.0 - SCK (SPI0), Push-Pull, Digital P0.1 - MISO (SPI0), Open-Drain, Digital P0.2 - MOSI (SPI0), Push-Pull, Digital P0.3 - NSS (SPI0), Push-Pull, Digital

KAPITOLA 4. REALIZACE 19 P0.4 - TX0 (UART0), Push-Pull, Digital P0.5 - RX0 (UART0), Open-Drain, Digital Konkrétní zapojení máme zde: +3,3V MMC P0.3 P0.2 P0.1 1 2 3 4 5 6 P0.0 7 C8051F350 Obrázek 4.2: Připojení MMC karty k mikroprocesoru 4.2 Softwarová část Programování obslužného programu zařízení jsem si rozdělil na několik logických celků. hardwarová úroveň - nastavuje základní parametry procesoru, jeho rychlosti a funkce vstupně-výstupních portů MMC úroveň - definuje funkce pro práci s paměťovou kartou, využívá některé funkce hardwarové úrovně FAT úroveň - definuje funkce pro práci se soubory, hledání volného místa k zápisu, udržování konzistentních souborů řízení zařízení - vytváří výsledné funkce zařízení, využívá funkcí spodních úrovní 4.2.1 Hardwarová úroveň V této části musím nastavit všechny důležité části mikroprocesoru. Oscilátor Procesor C8051F350 má interní programovatelný oscilátor, programovatelnou násobičku a možnost připojení externího oscilátoru. Já využívám interní oscilátor, který běží na 24,5MHz a násobičku x2. Výsledný kmitočet je 49MHz. V datasheetu [3] na str.130 nalezneme definici jednotlivých bitů registru OSCICN (Internal Oscilator Control). Nastavením hodnoty OSCICN na 0x83 spustíme interní oscilátor a děličku nastavíme na 1:1. Následuje nastavení násobičky v registru CLKMUL.

20 KAPITOLA 4. REALIZACE Nastavení I/O Na obrázku 4.1 je vidět, že toto nastavení je otázkou několika vteřin. Nastavení se týká registrů P0MDOUT (nastavení portu 0 ve výstupním modu), XBR0 a XBR1. Podrobnosti v datasheetu [3] na str.142 Rozhraní SPI SPI rozhraní může pracovat v master modu nebo slave modu, 3-signálovém modu nebo 4- signálovém modu. S paměťovou kartou pracuji v SPI modu, takže v mikroprocesoru nastavíme SPI rozhraní do 4-signálového master modu. Nesmíme zapomenout, že dokud neproběhne inicializace MMC karty, nesmíme nastavit rychlost SPI nad 400kHz. Podrobnosti v datasheetu [3] na str.181 Rozhraní USART Asynchronní, plně duplexní rozhraní UART používám pro ovládání zařízení a příjem dat, která mají být uložena. Toto seriové rozhraní se nastavuje registrem SCON0. Datový registr nese označení SBUF0. Pokud chceme data vysílat - zapisujeme do něj, pokud chceme přijímat - čteme z něj. Přenosová rychlost je generována Timerem 1 v 8-bitovém auto-reload modu. Pro požadovanou hodnotu rychlosti je nutné správně nastavit hodnotu čítače. Vzorec pro výpočet lze najít v datasheetu [3] na str.172 4.2.2 Úroveň paměťové karty MMC Pro práci s paměťovou kartou jsem si vytvořil několik základních funkcí. Nejdůležitější funkce je MMC SendCommand. Tato funkce má 3 parametry: číslo příkazu, parametr a hodnotu CRC. Čísla příkazů jsem si definoval na začátku programu pro jednodušší používání. Seznam příkazů naleznete v tabulce 3.11 #define CMD0 (0x40+0) /* GO_IDLE_STATE */ #define CMD1 (0x40+1) /* SEND_OP_COND */ #define CMD9 (0x40+9) /* SEND_CSD */ #define CMD10 (0x40+10) /* SEND_CID */ #define CMD16 (0x40+16) /* SET_BLOCKLEN */ #define CMD17 (0x40+17) /* READ_SINGLE_BLOCK */ #define CMD24 (0x40+24) /* WRITE_BLOCK */ #define CMD41 (0x40+41) /* SEND_OP_COND (ACMD) */ #define CMD55 (0x40+55) /* APP_CMD */ #define CMD58 (0x40+58) /* READ_OCR */ Parametr předávám do funkce jako proměnnou typu long, ovšem funkce MMC SendCommand musí tuto hodnotu odeslat přes SPI po bytech. Vytvořil jsem si proto vlastní datový typ pomocí deklarace typedef union. Můj vlastní typ blong obsahuje jeden klasický datový typ long a následně pole char o velikost 4 byty. Tím, že zapíšeme hodnotu do klasické proměnné typu long, máme zaroveň k dispozici i bytově adresovatelnou hodnotu v poli.

KAPITOLA 4. REALIZACE 21 Další mnou vytvořené funkce jsou pro čtení a zápis z/na kartu, MMC read a MMC write. Obě tyto funkce mají jeden parametr a tím je adresa. Předposlední funkce je MMC SetBlockLength, nemá žádné parametry - nastavuje totiž pomocí příkazu CMD16 délku komunikačního bloku na pevnou hodnotu 512B. Poslední funkce je MMC Init, která přesně kopíruje postup inicializace popsaný v analýze. 4.2.3 Úroveň souborového systému FAT Nejprve je nutné znát nejdůležitější oblasti souborového systému. Master Boot Record (MBR) Boot sektor Rezervované sektory Alokační tabulka 1 Alokační tabulka 2 Root adresář Datová oblast Tabulka 4.1: Nejdůležitější oblasti na paměťovém médiu Master Boot Record je uložen na 1.sektoru media, jehož adresa je 0x00000000. O MBR se musíme zajímat, protože obsahuje tabulku rozdělení disku. Jsou to čtyři 16-bytové záznamy, čtyři možné logické disky. Každý záznam obsahuje příznak aktivního oddílu, logickou adresu prvního sektoru oddílu a velikost oddílu. Podrobnosti lze zjistit v článku [6] V případě mého zařízení si všímám vždy pouze prvního záznamu. Nejprve musíme načíst MBR a z prvního záznamu po bytech získat adresu začátku oddílu. Tuto hodnotu vynásobíme 512 a výsledek si uložím do proměnné adresa boot. Nyní, když máme k dispozici adresu boot sektoru, můžeme ho načíst. Boot sektor je prvním sektorem oddílu a jsou v něm uloženy všechny důležité informace o nastavení oddílu. Z článku [7] zjistíme, že je nutné si pro pozdější užití zaznamenat mnoho údajů. adresa boot + offset délka v B popis 0x03 8 jmenovka disku 0x0B 2 počet bytů na sektor (512B) 0x0D 1 počet sektorů na jeden cluster 0x0E 2 počet rezervovaných sektorů, pro FAT16 by mělo být 1 0x10 1 počet tabulek, mělo by být 2 0x16 2 počet sektorů jedné FAT tabulky 0x20 4 celkový počet sektorů oddílů Tabulka 4.2: Struktura boot sektoru a důležité položky Když známe tyto údaje, můžeme nyní vypočítat adresy všech ostatních hlavních oblastí. Adresa FAT tabulky adresa_fat = adresa_boot + (bytu_na_sektor * pocet_rezervovanych_sektoru); Adresa začátku hlavního ROOT adresáře

22 KAPITOLA 4. REALIZACE adresa_root = adresa_boot + (bytu_na_sektor * (pocet_rezervovanych_sektoru + (pocet_fat * sektoru_na_fat))); Adresa začátku datové oblasti: adresa_data = adresa_root + (max_polozek_root * 32); Všechny tyto adresy si musíme zapamatovat. Nyní popíši funkce, které jsem pro úroveň FAT tabulky vytvořil: Obsluha ROOT adresáře Zde je názorný obrázek, jak mohou vypadat jednotlivé soubory v root adresáři. Obrázek 4.3: Detailní zobrazení položky souboru v root adresáři Každý soubor nebo adresář je v root adresáři reprezentován jako 32B záznam. Detailní rozpis parametrů záznamu naleznete v článku [7]. Uvedu pouze nejdůležitější části. adresa položky + offset délka v B popis 0x00 8 název položky 0x08 3 přípona položky 0x0B 1 identifikace (soubor / adresář) a atributy 0x1A 2 první cluster souboru nebo adresáře 0x1C 4 délka souboru Tabulka 4.3: Struktura boot sektoru a důležité položky Pokud mám zapsat nový soubor, pak je potřeba načíst sektor s adresou root adresáře a najít volné místo pro nový záznam. Funkce FindFreeRootEntry najde volné místo v root adresáři a předává číslo volné položky jako svoji návratovou hodnotu. Když víme, kam můžeme nový záznam uložit, můžeme pokračovat. Funkce WriteNewFile pracuje následujícím způsobem: nejprve projde celý adresář root a hledá soubory ve tvaru DATAXXX a ukládá si nejvyšší dosažené číslo

KAPITOLA 4. REALIZACE 23 na pozici volné položky zapíše název DATA (hexadecimálně 0x44 0x41 0x54 0x41) a následuje 3.místné číslo o 1 větší než nejvyšší nalezené - je tak zajištěn jedinečný název nového souboru dále se zapíše číslo nalezeného volného clusteru pro data a nakonec zapíšeme velikost souboru jako výsledek výpočtu (512B * sektoru na cluster), nejmenší rozlišitelná jednotka je cluster a tak ho zabereme celý Postupným zápisem dat se soubor zákonitě zvětšuje a je nutné udržovat v root záznamu správnou velikost. K tomuto účelu jsem napsal funkci EditFileSize, která u otevřeného souboru zvětší jeho velikost o velikost jednoho sektoru (512B). Obsluha FAT tabulky Zde je názorný obrázek, jak může vypadat alokační FAT tabulka: Obrázek 4.4: Detailní zobrazení alokační tabulky FAT FAT tabulka by se dala přirovnat k mapě použitých clusterů v datové oblasti. Každá položka FAT16 tabulky má délku 2B a každá položka představuje jeden cluster (prostor) v oblasti dat. První 2 záznamy jsou pevně dané a nemají vztah k datové oblasti. Ovšem hned další záznamy jsou již první využitelné clustery. Když položka FAT tabulky obsahuje hodnotu 0x0000, pak je cluster prázdný a můžeme ho použít. K hledání prázdných clusterů jsem napsal funkci FindFreeCluster. Hodnota 0xFFFF položky FAT tabulky představuje konec souboru - na tomto clusteru končí soubor. Pokud je v položce uvedena hodnota mezi 0x0002 a 0xFFEF, pak se jedná o využitý cluster. Pokud se vrátíme k obrázku 4.3, pak si můžeme všimnout, že u označené položky jsou modře podtrhnuty 2 byty (0x05 0x00, vyšší byty je uveden první - ve skutečnosti je hodnota 0x0005). Je to číslo prvního clusteru souboru. V obrázku 4.4 najdeme červeně orámováný blok dat a první záznam je na pozici číslo 0x0005. Je to začátek uvedeného souboru. Soubor je ovšem větší než jeden cluster a tak je na pozici 0x0005 zapsáno číslo 0x0006, to jednodušše znamená, že soubor pokračuje na 6.clusteru. Postupným procházením přes položky 0x0005, 0x0006, 0x0007, 0x0008 a 0x0009 jsme zjistili, že soubor obsadil 5 clusterů. Pokud vytvořím soubor v root adresáři, musím také do FAT tabulky zaznamenat, že jeden cluster je využitý - k tomu slouží funkce WriteFatRecordEndfile. Postupným zápisem dat se soubor zvětší tak, že přesahne jeden cluster a tak musíme na pozici původního čísla clusteru zapsat číslo pokračujícího clusteru a na pozici nového clusteru zapsat do položky FAT tabulky příznak konce souboru 0xFFFF. Toto prodloužení ve FAT tabulce provádí funkce EditFatRecord.

24 KAPITOLA 4. REALIZACE 4.2.4 Úroveň řízení zařízení Nejvyšší úroveň řízení využívá všech funkcí předešlých logických vrstev. Nyní popíši základní funkce zařízení. Po připojení napájení proběhne nastavení mikroprocesoru, inicializace MMC paměťové karty a přes seriovou linku se zašle zpráva MMC online!. Poté vypíše zprávu main> jako indikátor připravenosti přijímat příkazy. Nyní zařízení čeká na jeden z příkazů: kód příkazu funkce popis I informace přes seriové rozhraní pošle informace o zařízení a verzi firmwaru N nový soubor po přijetí tohoto příkazu vytvoří nový soubor a přejde do file modu Tabulka 4.4: Příkazy pro zařízení v hlavní režimu Když zařízení přijme příkaz N, vytvoří nový soubor ve tvaru DATAxxx.TXT a přejde do tzv. file modu a ohlásí se zprávou file> Zde zařízení očekává jeden z následujících příkazů: kód příkazu funkce popis W write data po přijetí příkazu W čeká zařízení 512B dat C close file přijetí příkazu C uzavře soubor a přejde zpět do hlavního main režimu Tabulka 4.5: Příkazy pro zařízení ve file režimu Po přijetí všech 512B dat je možné zasílat další příkaz W a data ve chvíli, kdy se opět objeví zpráva file>

KAPITOLA 5. TESTOVÁNÍ 25 5 Testování Zařízení bylo testováno přímo v aplikaci zadavatele, tedy přímo ve vzducholodi. Elektronika vzducholodi vytváří přibližně každou vteřinu zprávu o svém stavu, stavu čidel a měřidel. Tyto příchozí řetězce byly mým zařízením přijímány a ukládány. Při připojení karty k PC jsme se mohli přesvědčit, že data jsou opravdu zapsána. Obrázek 5.1: Soubor s přijatými daty Samostatné testování Zde je ukázka ručního testování, konkrétně výstup ze seriové linky doplněný o zasílané příkazy (pro snazší orientaci) a zasílaná data. * # Zarizeni zapnuto # # MMC online! # main> I StorageModul for MMC memory card, firmware 1.0alpha, Pavel Richter 2007, CTU Prague main> N file> W data: Po dlouhém č... kávalo, zda se dočkáme pokr file> W data: ačování. A jak nadpis... a nejlepší řešení hry. file> C file closed main> Po připojení paměťové karty ke čtečce je vidět kompletní obsah souboru.

26 KAPITOLA 5. TESTOVÁNÍ Obrázek 5.2: Kompletní soubor s očekávaným obsahem 5.1 Srovnání s existujícími řešeními Na britských stránkách www.active-robot.com jsem narazil na ummc Storage Solution. Obrázek 5.3: Výrobek ummc Storage Solution Je to malé zařízení schopné pracovat s paměťovými kartami typu MMC a SD, zvládá souborové systémy FAT16 a FAT32. Zařízení se ovládá přes seriové rozhraní pomocí sady definovaných příkazů a jejich parametrů. Cena tohoto zařízení je přibližně 50 liber. http://www.roguerobotics.com/store/ index.php?main_page=product_info&cpath=58&products_id=115

KAPITOLA 6. ZÁVĚR 27 6 Závěr Cíle této práce byly splněny, zařízení bylo analyzováno, navrženo a realizováno prostřednictvím vývojového kitu a komunikačního kabelu pro pamětovou kartu. Samostatná deska plošných spojů nebyla realizována z důvodu velké časové náročnosti přípravy, programování obslužného softwaru a implementace základního souborového systému. Přesto bylo zařízení testováno přímo v aplikaci, pro kterou bylo zařízení vyvíjeno. Data přijímaná ze systému vzducholodi byla úspěšně zaznamenána. Po vložení paměťové karty do čtečky byla tato data plně k dispozici pro zpracování. 6.1 Možnosti pokračování Zařízení se z vývojového kitu přesune na samostatnou desku plošných spojů. V přípravě je i zapojení externího obvodu RTC pro přesnou práci s časem a datem, vytvářené soubory by tak měly správně nastavené datum a čas založení. Dále může být rozšiřován protokol o další příkazy, např. vytvoření podadresáře, smazání souborů, zpětné čtení souborů atd.

28 KAPITOLA 6. ZÁVĚR

KAPITOLA 7. SEZNAM LITERATURY 29 7 Seznam literatury [1] SanDisk Corporation: MultiMediaCard and Reduced-Size MultiMediaCard Product Manual (produktový manuál) http://www.sandisk.com/assets/file/oem/manuals/prodmanrs-mmcv1.3.pdf [2] MultiMediaCard Association: The MultiMediaCard System Summary (manuál) http://www.mmca.org/compliance/buy spec/mmca System SummaryV41.pdf [3] Silicon Labs: C8051F350/1/2/3 8k ISP Flash MCU Family (katalogový list) http://www.silabs.com/public/documents/tpub doc/dsheet/microcontrollers /Precision Mixed-Signal/en/C8051F35x.pdf [4] International Bureau of Weights and Measures: The International System of Units (SI), STEDI Media Paris 2007, 8th edition, page 121, ISBN 92-822-2213-6 http://www1.bipm.org/utils/common/pdf/si brochure 8.pdf [5] Intel.com: What is Flash memory? (článek) http://developer.intel.com/design/flash/articles/what.htm [6] Wikipedia.org: Master boot record (článek) http://en.wikipedia.org/wiki/mbr [7] Wikipedia.org: File Allocation Table (článek) http://en.wikipedia.org/wiki/file Allocation Table

30 KAPITOLA 7. SEZNAM LITERATURY

KAPITOLA 8. SEZNAM POUŽITÝCH ZKRATEK 31 8 Seznam použitých zkratek CID Card Identification Register CLK Clock signal CS Chip Select CSD Card Specific Register ECC Error Correction Code EPROM Erasable Programmable Read-Only Memory EEPROM Electrically Erasable Programmable Read Only Memory MBR Master Boot Record MMC MultimediaCard MTBF Mean Time Between Failures OCR Operation Conditions Register RSMMC ReducedSize MultimediaCard RAM Random Access Memory RDC Research and Development Centre ROM Read-only Memory SD Secure Digital SDMI Secure Digital Music Initiative SPI Serial Pheripheral Interface

32 KAPITOLA 8. SEZNAM POUŽITÝCH ZKRATEK

KAPITOLA 9. OBSAH PŘILOŽENÉHO CD 33 9 Obsah přiloženého CD \index.html \content.html \text\ \src\ \datasheets\ výchozí stránka projektu popis obsahu CD textová část práce v TeXu a PDF adresář se zdrojovými kódy projektu adresář s používanými datasheety