ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
ˇ VUT FEL katedra pocˇı´tacˇu˚ C
Bakal´aˇrsk´a pr´ace
Ukl´ ad´ an´ı dat na kartu SD/MMC prostˇ rednictv´ım jednoˇ cipov´ eho mikropoˇ c´ıtaˇ ce Pavel Richter
Vedouc´ı pr´ace: Ing. Martin Novotn´y
Studijn´ı program: Elektrotechnika a informatika strukturovan´y bakal´aˇrsk´y Obor: Informatika a v´ypoˇcetn´ı technika srpen 2007
ii
Podˇ ekov´ an´ı R´ ad bych podˇekoval vedouc´ımu bakal´aˇrsk´e pr´ ace Ing. Martinu Novotn´emu za veden´ı pr´ ace a ˇ an konzultace. D´ale bych chtˇel velice podˇekovat Bc. Zbyˇ nkovi Sob´ ˇovi za cenn´e odborn´e rady a zap˚ ujˇcen´ı v´ yvojov´eho kitu. Podˇekov´an´ı patˇr´ı tak´e m´ ym rodiˇc˚ um, pˇr´ıtelkyni a kamar´ ad˚ um za vˇseobecnou podporu, kter´a umoˇznila vznik t´eto pr´ ace. iii
iv
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou bakal´ aˇrskou pr´ aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´ avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´ akona ˇc. 121/2000 Sb., o pr´ avu autorsk´em, o pr´ avech souvisej´ıc´ıch s pr´ avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´ akon).
V Mostˇe 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´aˇrsk´ a pr´ ace se zab´ yv´ a n´ avrhem a implementac´ı zaˇr´ızen´ı s jednoˇcipov´ ym mikropoˇc´ıtaˇcem, kter´e dok´aˇze zaznamen´avat data pˇrij´ıman´ a po seriov´e lince. Zaˇr´ızen´ı ukl´ad´ a data na pamˇeˇtovou kartu typu MMC. Implementov´an je z´akladn´ı souborov´ y syst´em FAT16, po pˇripojen´ı pamˇeˇtov´e karty k PC jsou data pˇr´ıstupn´a v klasick´em souboru.
vii
viii
Obsah Seznam obr´ azk˚ u
xi
Seznam tabulek
xiii
´ 1 Uvod 1.1
1
ˇ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Projekt Vzducholod
2 Popis probl´ emu, specifikace c´ıle
1 2
2.1
Souˇcasn´ y stav probl´emu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
2.2
Vymezen´ı c´ıl˚ u a poˇzadavk˚ u bakal´aˇrsk´e pr´ ace . . . . . . . . . . . . . . . . . . .
2
3 Anal´ yza a n´ avrh ˇ reˇ sen´ı 3.1 3.2
3.3
3
Funkce zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pamˇeˇtov´a karta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
3.2.1
Technologie flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
3.2.2
Srovn´an´ı karet MMC a SD . . . . . . . . . . . . . . . . . . . . . . . . .
4
MultiMediaCard (MMC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.3.1
Z´ akladn´ı vlastnosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˇ 3.3.1.1 Zivotnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
3.3.1.2
Automatick´ y reˇzim sp´ anku . . . . . . . . . . . . . . . . . . . . Vkl´ ad´ an´ı pamˇeˇtov´e karty za bˇehu zaˇr´ızen´ı . . . . . . . . . . . .
5
Specifikace MultiMediaCard . . . . . . . . . . . . . . . . . . . . . . . . .
6
3.3.2.1
Povolen´e napˇet´ı karet a parametry spotˇreby . . . . . . . . . . .
6
3.3.2.2
Specifikace rozsah˚ u pracovn´ıho prostˇred´ı . . . . . . . . . . . .
6
3.3.2.3
Spolehlivost a ˇzivotnost . . . . . . . . . . . . . . . . . . . . . .
7
3.3.2.4
Pˇr´ıstupov´e doby a ˇcasy pˇrechod˚ u. . . . . . . . . . . . . . . . .
7
3.3.2.5
Fyzick´e parametry . . . . . . . . . . . . . . . . . . . . . . . . .
8
Popis rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.3.3.1
MultimediaCard protokol . . . . . . . . . . . . . . . . . . . . .
9
3.3.3.2
SPI protokol . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.3.3.3
Srovn´an´ı MultimediaCard protokolu a SPI protokolu . . . . . Vnitˇrn´ı registry pamˇeˇtov´e karty . . . . . . . . . . . . . . . . . ˇ Casov´ an´ı sbˇernice . . . . . . . . . . . . . . . . . . . . . . . . .
10
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3.4.1
Inicializace a pˇrechod do SPI M´odu . . . . . . . . . . . . . . .
12
3.3.4.2
Registry pˇr´ıstupn´e v SPI M´odu . . . . . . . . . . . . . . . . . .
12
3.3.4.3
Protokol SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
3.3.1.3 3.3.2
3.3.3
3.3.3.4 3.3.3.5 3.3.4
SPI M´od
ix
3
5 5
10 11
3.4
3.3.4.4
Pˇr´ıkazy (commands) protokolu SPI . . . . . . . . . . . . . . .
13
3.3.4.5
Form´ at zas´ıl´ an´ı pˇr´ıkaz˚ u . . . . . . . . . . . . . . . . . . . . . .
13
3.3.4.6
Odpovˇedi (responses) protokolu SPI . . . . . . . . . . . . . . .
13
3.3.4.7
Data tokeny protokolu SPI . . . . . . . . . . . . . . . . . . . .
15
N´avrh zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.4.1
Blokov´e sch´ema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.4.2
V´ ybˇer procesoru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
4 Realizace 4.1 4.2
18
Hardwarov´a ˇc´ ast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
4.1.1
. . . . . . . . . . . . . . . .
18
Softwarov´a ˇc´ ast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
4.2.1
. . . . . . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . .
20
. . . . . . . . . . . . . . . . . .
21
. . . . . . . . . . . . . . . . . .
24
4.2.2 4.2.3 4.2.4
Pˇripojen´ı MMC k procesoru, pˇr´ıchoz´ı data Hardwarov´a u ´roveˇ n. . . . . . . . . . . . ´ Uroveˇ n pamˇeˇtov´e karty MMC . . . . . . ´ Uroveˇ n souborov´eho syst´emu FAT . . . ´ Uroveˇ n ˇr´ızen´ı zaˇr´ızen´ı . . . . . . . . . .
5 Testov´ an´ı 5.1
25
Srovn´an´ı s existuj´ıc´ımi ˇreˇsen´ımi . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
6 Z´ avˇ er
27
6.1
27
Moˇznosti pokraˇcov´an´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7 Seznam literatury
29
8 Seznam pouˇ zit´ ych zkratek
31
9 Obsah pˇ riloˇ zen´ eho CD
33
x
Seznam obr´ azk˚ u 3.1
N´azorn´ a uk´azka spojen´ ych v´ yhod pamˇet´ı flash . . . . . . . . . . . . . . . . . .
4
3.2
8
3.3
Rozmˇery klasick´e karty MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . ˇ Casov´ an´ı DataIn a DataOut vzhledem k hodinov´emu sin´ alu . . . . . . . . . . .
11
3.4
Z´ akladn´ı blokov´e sch´ema zaˇr´ızen´ı . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3.5
Blokov´e sch´ema mikroprocesoru C8051F350 . . . . . . . . . . . . . . . . . . . .
17
4.1
Pˇriˇrazen´ı pin˚ u procesoru funkc´ım pomoc´ı programu Config2 . . . . . . . . . . .
18
4.2
Pˇripojen´ı MMC karty k mikroprocesoru . . . . . . . . . . . . . . . . . . . . . .
19
4.3
Detailn´ı zobrazen´ı poloˇzky souboru v root adres´aˇri . . . . . . . . . . . . . . . .
22
4.4
Detailn´ı zobrazen´ı alokaˇcn´ı tabulky FAT . . . . . . . . . . . . . . . . . . . . . .
23
5.1
Soubor s pˇrijat´ ymi daty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
5.2
Kompletn´ı soubor s oˇcek´avan´ ym obsahem . . . . . . . . . . . . . . . . . . . . .
26
5.3
V´ yrobek uMMC Storage Solution . . . . . . . . . . . . . . . . . . . . . . . . . .
26
xi
xii
Seznam tabulek 3.1
Rozsahy povolen´ ych napˇet´ı karet MMC . . . . . . . . . . . . . . . . . . . . . .
6
3.2
Parametry spotˇreby (pˇri pokojov´e teplotˇe) . . . . . . . . . . . . . . . . . . . . .
6
3.3
Specifikace rozsah˚ u pracovn´ıho prostˇred´ı . . . . . . . . . . . . . . . . . . . . . .
6
3.4
Spolehlivost a ˇzivotnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.5
Pˇr´ıstupov´e doby a ˇcasy pˇrechod˚ u . . . . . . . . . . . . . . . . . . . . . . . . . .
7
3.6
Fyzick´e parametry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
3.7
Funkce pin˚ u pˇri pouˇzit´ı MultimediaCard protokolu . . . . . . . . . . . . . . . .
9
3.8
Funkce pin˚ u pˇri pouˇzit´ı SPI protokolu . . . . . . . . . . . . . . . . . . . . . . .
9
Porovn´an´ı existuj´ıc´ıch protokol˚ u MMC karty . . . . . . . . . . . . . . . . . . . ˇ 3.10 Casov´ an´ı sbˇernice s konkr´etn´ımi hodnotami . . . . . . . . . . . . . . . . . . . .
10 11
3.11 Nejd˚ uleˇzitˇejˇs´ı pˇr´ıkazy protokolu SPI . . . . . . . . . . . . . . . . . . . . . . . .
13
3.12 V´ yznam jednotliv´ ych bit˚ u zas´ılan´ ych pˇr´ıkaz˚ u . . . . . . . . . . . . . . . . . . .
13
3.13 V´ yznam jednotliv´ ych bit˚ u response R1 . . . . . . . . . . . . . . . . . . . . . . .
14
3.14 V´ yznam jednotliv´ ych bit˚ u druh´eho bytu response R2 . . . . . . . . . . . . . . .
14
3.15 V´ yznam jednotliv´ ych bit˚ u response R3 . . . . . . . . . . . . . . . . . . . . . . .
14
3.16 V´ yznam jednotliv´ ych bit˚ u data response . . . . . . . . . . . . . . . . . . . . . .
15
3.17 V´ yznam jednotliv´ ych bit˚ u data error token . . . . . . . . . . . . . . . . . . . .
15
4.1
Nejd˚ uleˇzitˇejˇs´ı oblasti na pamˇeˇtov´em m´ediu . . . . . . . . . . . . . . . . . . . .
21
4.2
Struktura boot sektoru a d˚ uleˇzit´e poloˇzky . . . . . . . . . . . . . . . . . . . . .
21
4.3
Struktura boot sektoru a d˚ uleˇzit´e poloˇzky . . . . . . . . . . . . . . . . . . . . .
22
4.4
Pˇr´ıkazy pro zaˇr´ızen´ı v hlavn´ı reˇzimu . . . . . . . . . . . . . . . . . . . . . . . .
24
4.5
Pˇr´ıkazy pro zaˇr´ızen´ı ve file reˇzimu
24
3.9
. . . . . . . . . . . . . . . . . . . . . . . . .
xiii
xiv
´ KAPITOLA 1. UVOD
1
´ 1 Uvod Tato bakal´ aˇrsk´ a pr´ ace se zab´ yv´ a n´ avrhem mikroprocesorov´eho zaˇr´ızen´ı a vytvoˇren´ım obsluˇzn´eho programu (firmwaru) pro dan´ y mikroprocesor tak, aby zaˇr´ızen´ı bylo schopn´e zaznamen´avat data pˇrich´ azej´ıc´ı ze seriov´e linky na robustnˇejˇs´ı pamˇeˇtov´e medium, jako je napˇr. pamˇeˇtov´a karta. Kontakt s vedouc´ım pr´ ace mˇe pˇrivedl ke skuteˇcn´emu zadavateli tohoto zaˇr´ızen´ı, k projektu ˇ kter´ Vzducholod, y existuje jiˇz pˇres dva roky pod z´aˇstitou V´ yzkumn´eho a v´ yvojov´eho centra ˇ RDC (Research and Development Centre) pˇri CVUT. RDC centrum si klade za c´ıl vytvoˇrit a rozv´ıjet komunitu lid´ı se spoleˇcn´ ymi z´ajmy, s moˇznost´ı dalˇs´ıho vzdˇel´ an´ı a u ´ˇcasti v n´ arodn´ıch a mezin´ arodn´ıch projektech. ˇ je jedn´ım z hlavn´ıch a d˚ Projekt Vzducholod uleˇzit´ ych projekt˚ u.
1.1
ˇ Projekt Vzducholod
ˇ V bˇreznu roku 2005 byla studenty CVUT fakulty strojn´ı a elektrotechnick´e zah´ ajena stavba prototypu ˇsestimetrov´e vzducholodˇe BIGGIE. Konstrukce spadala do kategorie neztuˇzen´ ych, 3 jej´ı objem byl 10m . V roce 2006 zaˇcala tato skupina s n´ azvem AirshipClub.com se stavbou nov´e, jeˇstˇe vˇetˇs´ı vzducholodˇe BIGGIE09. Pˇri stavbˇe t´eto vzducholodˇe byl kladen d˚ uraz na zv´ yˇsen´ı nosnosti, vyˇsˇs´ı stabilitu a lepˇs´ı ovl´ad´ an´ı za horˇs´ıch povˇetrnostn´ıch podm´ınek. ˇ m´ Nov´a vzducholod a d´elku 9m, pr˚ umˇer 2.3m a nosnost 12kg. Pohon je realizov´an dvˇema stˇr´ıdav´ ymi elektromotory. Gondola m´ a rozmˇery 630x260mm a jej´ı konstrukce je dvoupatrov´a. Nosn´ y balon je opˇet plnˇen heliem a je tvoˇren z vrchn´ıho pl´ aˇstˇe a vnitˇrn´ı duˇse. Gondola nese pohonn´e baterie, palubn´ı baterie, regul´ atory pro pohon a d´ ale blok zaˇr´ızen´ı pro pos´ıl´an´ı dat pˇres GSM, GPS syst´em, v´ yˇskomˇer, tlakomˇer a kompas. Gondola nese tak´e palubn´ı poˇc´ıtaˇc a experiment´ alnˇe dalˇs´ı elektronick´a zaˇr´ızen´ı, napˇr. digit´ aln´ı fotoapar´at. Pozemn´ı ˇr´ıd´ıc´ı server potˇrebuje komunikovat s CPU vzducholodi tak, aby mu mohl pˇred´ avat ˇ ıd´ıc´ı pˇr´ıkazy mus´ı b´ ˇr´ıd´ıc´ı pˇr´ıkazy a naopak pˇrij´ımat namˇeˇren´ a data. R´ yt pˇreneseny co nejdˇr´ıve, zat´ımco ostatn´ı data mohou b´ yt zpoˇzdˇena. Pˇri ztr´ atˇe komunikace ˇci jin´ ych nepˇredv´ıdateln´ ych ud´ alostech by bylo dobr´e ukl´adat vˇsechna data pˇr´ımo na palubˇe vzducholodi tak, aby bylo moˇzno s nimi pracovat po pˇrist´ an´ı. Zaˇr´ızen´ı vyvinut´e v r´ amci t´eto bakal´aˇrsk´e pr´ ace takov´ y poˇzadavek spln´ı.
´ KAPITOLA 2. POPIS PROBLEMU, SPECIFIKACE C´ILE
2
2 Popis probl´ emu, specifikace c´ıle 2.1
Souˇ casn´ y stav probl´ emu
ˇ pˇres GSM nebo radiov´ Komunikace se vzducholod´ı nyn´ı prob´ıh´ a bud y pˇrenos. V pˇr´ıpadˇe ztr´ aty ˇ nen´ t´eto komunikace se veˇsker´ a namˇeˇren´ a data a rozhodnut´ı o chov´an´ı vzducholodi avratnˇe ztrat´ı. Je tedy nutn´e zaˇr´ıdit i ukl´ad´ an´ı dat na palubˇe samotn´e vzducholodi. Zaˇr´ızen´ı by mˇelo pracovat jako ˇcern´ a skˇr´ıˇ nka.
2.2
Vymezen´ı c´ıl˚ u a poˇ zadavk˚ u bakal´ aˇ rsk´ e pr´ ace
• v´ ybˇer vhodn´eho mikroprocesoru • studium a anal´ yza pamˇeˇtov´e karty • n´ avrh hardwarov´e ˇc´ asti zaˇr´ızen´ı • studium a anal´ yza souborov´eho syst´emu FAT • implementace firmware zaˇr´ızen´ı, pr´ ace se soubory, pˇrij´ım´ an´ı a ukl´ad´ an´ı dat • testov´an´ı
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
3
3 Anal´ yza a n´ avrh ˇ reˇ sen´ı 3.1
Funkce zaˇ r´ızen´ı
Hlavn´ım u ´kolem tohoto zaˇr´ızen´ı je ukl´ad´ an´ı dat na pamˇeˇtovou kartu. Abychom mohli data z pamˇeˇtov´e karty pˇreˇc´ıst v klasick´e ˇcteˇcce, mus´ıme data nˇejak´ ym zp˚ usobem tˇr´ıdit. Pro sv´e zaˇr´ızen´ı jsem navrhl jednoduch´ y ovl´adac´ı automat, kter´ y pˇrij´ım´ a jedno-bytov´e pˇr´ıkazy. Po pˇripojen´ı nap´ ajen´ı inicializuje zaˇr´ızen´ı pamˇeˇtovou kartu, vyˇsle pˇres seriovou linku potvrzen´ı a dostane se do z´ akladn´ıho reˇ zimu. V z´akladn´ım reˇzimu pˇrij´ım´ a zaˇr´ızen´ı pˇr´ıkazy: • I - zasl´ an´ı informac´ı o zaˇr´ızen´ı a verzi obsluˇzn´eho programu • N - zaloˇzen´ı nov´eho souboru Kaˇzd´ y z tˇechto pˇr´ıkaz˚ u je reprezentov´an jedn´ım bytem, tedy velk´ ym p´ısmenem I (hexadecim´ alnˇe 0x49) a velk´ ym p´ısmenem N (hexadecim´ alnˇe 0x4E). Pˇrijet´ım pˇr´ıkazu N pro zaloˇzen´ı nov´eho souboru se spust´ı procedura, kter´a do hlavn´ıho adres´aˇre karty zap´ıˇse nov´ y soubor s n´ azvem DATAxxx.txt, kde xxx pˇredstavuje trojcifern´e ˇc´ıslo. Toto ˇc´ıslo bude s kaˇzd´ ym nov´ ym souborem o 1 vˇetˇs´ı. Prvn´ı vytvoˇren´ y soubor bude m´ıt n´ azev DATA001.TXT Se zaloˇzen´ım nov´eho souboru se zaˇr´ızen´ı tak´e dostane do file reˇ zimu a poˇsle potvrzen´ı pˇres seriovou linku. Ve file reˇzimu bude zaˇr´ızen´ı oˇcek´avat pouze 2 pˇr´ıkazy: • W - z´ apis dat • C - uzavˇren´ı souboru a n´ avrat do z´akladn´ıho reˇzimu Pˇr´ıkaz z´apisu dat je reprezentov´an jedn´ım bytem, velk´ ym p´ısmenem W (hexadecim´ alnˇe 0x57). Po pˇrijet´ı pˇr´ıkazu bude zaˇr´ızen´ı ˇcekat na pˇrijet´ı pˇresnˇe 512B dat. Z´ apis dat bude moˇzno opakovat opˇet pˇr´ıkazem W a dalˇs´ım blokem dat. Kaˇzd´ ym pˇr´ıkazem W se soubor zvˇetˇs´ı o 512B pˇrijat´ ych dat. V´ ysledn´ y soubor bude sloˇzen kontinu´ alnˇe z pˇrijat´ ych blok˚ u. Pˇr´ıkaz uzavˇren´ı souboru reprezentuje byte s velk´ ym p´ısmenem C (hexadecim´ alnˇe 0x43). Po pˇrijet´ı pˇr´ıkazu bude souˇcasn´ y soubor uzavˇren a zaˇr´ızen´ı se dostane opˇet do z´akladn´ıho reˇzimu, kde lze vytvoˇrit dalˇs´ı soubor. Zaˇr´ızen´ı bude vyˇzadovat pˇripojen´ı seriovou linkou s nastaven´ım rychlosti 9600 baud˚ u, 8 datov´ ymi bity, 1 stop bitem a ˇz´ adnou paritou.
3.2
Pamˇ eˇ tov´ a karta
Pamˇeˇtov´a karta je velmi mal´e, pˇrenositeln´e z´aznamov´e m´edium, vyroben´e technologi´ı flash. V´ yrobci tˇechto karet se specializuj´ı na jejich malou velikost, velk´ y prostor pro uloˇzen´ı dat, n´ızkou spotˇrebu a n´ızkou cenu. Pamˇeˇtov´a karta typu flash je ide´ aln´ı u ´loˇzn´e m´edium pro pˇrenosn´e, bateriovˇe nap´ ajen´e elektronick´e zaˇr´ızen´ı. Pamˇeˇtov´e karty jsou v dneˇsn´ı dobˇe vyr´ abˇeny v r˚ uzn´ ych rychlostech. Nˇekter´e karty nesou ve sv´e specifikaci pouze u ´daj ”pˇrenosov´a rychlost 12MB/s”. U takov´eho oznaˇcen´ı ovˇsem m˚ uˇzeme b´ yt klam´ani marketingov´ ym oddˇelen´ım, kter´e ˇcasto zneuˇz´ıv´a neznalosti kupuj´ıc´ıch. Jednotka MB totiˇz spr´avnˇe vyjadˇruje 1 000 000 B (podle pˇredpony mega z mezin´ arodn´ı tabulky SI), ale
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
4
kupuj´ıc´ı pˇredpoklad´a, ˇze je to 1 048 576 B, tedy 1024 x 1024. Hodnota 1 048 576 se ovˇsem znaˇc´ı MiB1 . Rozd´ıl mezi 12 MB/s a 12 MiB/s tedy m˚ uˇze znamenat 2 582 912 byt˚ u, coˇz je pˇres 20%. Mezin´arodn´ı u ´ˇrad pro v´ahy a m´ıry BIPM silnˇe doporuˇcuje uˇz´ıvat tyto IEC prefixy jako alternativu pro prefixy, kter´e nejsou v SI soustavˇe.[4] Nˇekteˇr´ı v´ yrobci pouˇz´ıvaj´ı oznaˇcen´ı rychlosti karty jako n´ asobek z´akladn´ı pˇrenosov´e rychlosti urˇcen´e historicky jako rychlost pˇrenosu dat prvn´ıch CD disk˚ u. Tato rychlost je 150 KiB/s. U pamˇeˇtov´e karty s oznaˇcen´ım 200x vypoˇcteme pˇrenosovou rychlost jako: 200 x 150 KiB/s = 30 000 KiB/s = 29,3 MiB/s Existuj´ı tak´e r˚ uzn´e verze karet. Pamˇeˇtov´e karty MMC maj´ı tyto verze: full-size MMC, MMCplus, MMCmobile, RSMMC, MMCmicro Pamˇeˇtov´e karty SD maj´ı tyto verze: full-size SD, Mini SD, Micro SD, SDHC 3.2.1
Technologie flash
Flash pamˇeti v sobˇe kombinuj´ı v´ yhody nˇekolika typ˚ u pamˇet´ı. Nejd˚ uleˇzitˇejˇs´ımi vlastnostmi je trval´e uloˇzen´ı dat (odpojen´ı nap´ ajen´ı nezp˚ usob´ı ztr´ atu dat jako u RAM) a typ m´edia solidstate, tedy pamˇeˇt zcela bez pohybliv´ ych ˇc´ast´ı. Flash pamˇeti maj´ı n´ızk´e nap´ ajec´ı napˇet´ı, velmi malou spotˇrebu, jsou odoln´e v˚ uˇci vnˇejˇs´ımu prostˇred´ı, vibrac´ım, n´ araz˚ um atd. Pˇrednost´ı je tak´e velmi kr´atk´a vybavovac´ı a z´ apisov´a doba Flash pamˇeˇt je zvl´aˇstn´ım typem pamˇeti EEPROM, kter´a m˚ uˇze b´ yt programov´ana a maz´ ana v bloc´ıch.
EPROM EEPROM zapisovatelné
stálé
FLASH
DRAM
velko kapacitní
ROM
Obr´azek 3.1: N´azorn´ a uk´azka spojen´ ych v´ yhod pamˇet´ı flash
Z´ ajemce o detailn´ı vnitˇrn´ı fungov´an´ı pamˇet´ı flash mohu odk´azat na ˇcl´anek [5] 3.2.2
Srovn´ an´ı karet MMC a SD
Mnoho rozd´ıl˚ u mezi tˇemito kartami nenajdeme. Fyzick´e rozmˇery jsou t´emˇeˇr shodn´e. Karty MMC jsou o 0,7 mm tenˇc´ı neˇz karty SD a interface karet MMC m´ a pouze 7 pin˚ u oproti 9 pin˚ um u SD karet. Kart´ am MMC chyb´ı mechanick´ y pˇrep´ınaˇc pro ochranu z´apisu. Karty SD maj´ı nav´ıc implementov´anu technologii SDMI pro ochranu copyrightu zvukov´ ych nahr´avek. 1
1MiB = 1024 KiB [ˇcteme mebibyte] a 1KiB = 1024 B [ˇcteme kibibyte]
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
5
Pro svoji dalˇs´ı pr´ aci jsem se zamˇeˇril na karty typu MMC, nicm´enˇe karty typu SD by mˇely b´ yt kompatibiln´ı. Pamˇeˇtov´a karta typu MMC m´ a menˇs´ı poˇcet pin˚ u u interface a absenci modernˇejˇs´ıch ochran obsahu. V´ yrobce karet MMC tak´e zaruˇcuje kompatibilitu novˇejˇs´ıch verz´ı se starˇs´ımi, zat´ımco v´ yrobce karet SD zamˇeˇruje sv˚ uj v´ yvoj na nov´ y typ karty s n´ azvem SecureDigital HighCapacity (zkr´acenˇe SDHC), kter´ y nen´ı zpˇetnˇe kompatibiln´ı.
3.3
MultiMediaCard (MMC)
3.3.1
Z´ akladn´ı vlastnosti
Z produktov´eho manu´ alu [2] m˚ uˇzeme sepsat obecn´e vlastnosti: • dva rozsahy nap´ ajen´ı • podpora ˇsirok´eho rozsahu pracovn´ı frekvence: 0-20MHz, 0-26MHz nebo 0-50MHz • maxim´ aln´ı rychlost pˇrenosu 416Mbit˚ u/s • implementov´ana ochrana dat pomoc´ı hesla • implementov´ana korekce chyb • implementov´an jednoduch´ y mechanizmus maz´ an´ı • pln´ a zpˇetn´ a kompatibilita s pˇredchoz´ımi verzemi MultimediaCard • dvˇe podporovan´e v´ yrobn´ı velikosti: – pln´ a velikost (24mm x 32mm x 1,4mm) – redukovan´ a velikost (24mm x 18mm x 1,4mm) 3.3.1.1
ˇ Zivotnost
Pamˇeˇtov´e karty SanDisk MultimediaCard maj´ı typickou ˇzivotnost 100 000 z´apis˚ u pro kaˇzd´ y ˇ ˇ sektor. Cten´ı je jiˇz z principu neomezen´e. Vzhledem k ˇzivotnosti produkt˚ u, kde se pamˇetov´e karty pouˇz´ıvaj´ı, je karta vyuˇzita jenom zlomek jej´ı moˇzn´e doby. 3.3.1.2
Automatick´ y reˇ zim sp´ anku
Velkou v´ yhodou je vlastnost, kter´ y umoˇzn ˇuje kartˇe pˇrej´ıt do reˇzimu sp´ anku zcela samostatnˇe. Pokud jsou zpracov´any vˇsechny pˇr´ıkazy hostitelsk´eho zaˇr´ızen´ı, pak do nˇekolika milisekund pˇrech´ az´ı karta sama do reˇzimu sp´ anku. Jakmile se objev´ı dalˇs´ı pˇr´ıkaz, pˇrejde opˇet do pohotovostn´ıho reˇzimu. Vˇse je plnˇe automatick´e a t´ım je maxim´alnˇe sn´ıˇzena spotˇreba karty. 3.3.1.3
Vkl´ ad´ an´ı pamˇ eˇ tov´ e karty za bˇ ehu zaˇ r´ızen´ı
Vloˇzen´ı karty za bˇehu hostitelsk´eho zaˇr´ızen´ı je samozˇrejmˇe moˇzn´e, ale je potˇreba, aby k tomu byl uzp˚ usoben konektor. Je nutn´e, aby piny na m´ıstˇe nap´ ajen´ı byly delˇs´ı neˇz ostatn´ı. Pˇri vkl´ ad´ an´ı karty se tedy nejprve ke kartˇe pˇripoj´ı nap´ ajen´ı a aˇz pot´e dalˇs´ı piny, datov´e vodiˇce apod.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
6 3.3.2 3.3.2.1
Specifikace MultiMediaCard Povolen´ e napˇ et´ı karet a parametry spotˇ reby
komunikace pˇr´ıstup k pamˇeti
High Voltage MMC 2,7 - 3,6 2,7 - 3,6
Dual Voltage MMC 1,65 - 1,95; 2,7 - 3,6 1,65 - 1,95; 2,7 - 3,6
Tabulka 3.1: Rozsahy povolen´ ych napˇet´ı karet MMC
operace ˇcten´ı z´ apis reˇzim sleep
maxim´aln´ı odbˇer pˇri napˇet´ı 3,6V 50 mA 60 mA 150 µA
Tabulka 3.2: Parametry spotˇreby (pˇri pokojov´e teplotˇe)
3.3.2.2
Specifikace rozsah˚ u pracovn´ıho prostˇ red´ı teplota vlhkost akustick´ y hluk vibrace n´ araz nadmoˇrsk´ a v´ yˇska
operaˇcn´ı i klidov´a operaˇcn´ı i klidov´a operaˇcn´ı i klidov´a operaˇcn´ı i klidov´a operaˇcn´ı i klidov´a
-25◦ C aˇz 85◦ C 8% aˇz 95%, ne kondenzuj´ıc´ı 0dB max. 15 G (ˇspiˇcka-ˇspiˇcka) max. 1000G max. 80 000 stop (pˇres 24km)
Tabulka 3.3: Specifikace rozsah˚ u pracovn´ıho prostˇred´ı
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.3.2.3
7
Spolehlivost a ˇ zivotnost MTBF preventivn´ı u ´drˇzba datov´a spolehlivost v´ ydrˇz
> 1 000 000 000 hodin ˇz´ adn´ a < 1 neopraviteln´a chyba na 1014 pˇreˇcten´ ych bit˚ u typicky 100 000 z´apisov´ ych a mazac´ıch cykl˚ u
Tabulka 3.4: Spolehlivost a ˇzivotnost Zkratka MTBF znamen´a Mean Time Between Failures, tedy oˇcek´avan´ a stˇredn´ı doba v hodin´ ach bez chyb. 3.3.2.4
Pˇ r´ıstupov´ e doby a ˇ casy pˇ rechod˚ u
Tyto hodnoty jsou platn´e pro rozsah nap´ ajec´ıho napˇet´ı 2,7 - 3,6V a okoln´ı teplotu od -25◦ C do 85◦ C. ˇcas pˇr´ıstupov´a doba - ˇcten´ı bloku pˇr´ıstupov´a doba - z´ apis bloku doba pˇrechodu do stavu Ready po pˇr´ıkazu CMD1 doba pˇrechodu ze stavu Sleep do Ready
typicky 0,5ms 0,5ms 50ms 1ms
Tabulka 3.5: Pˇr´ıstupov´e doby a ˇcasy pˇrechod˚ u
maxim´alnˇe 100ms 240ms 500ms 2ms
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
8 3.3.2.5
Fyzick´ e parametry specifikace hmotnost d´elka ˇs´ıˇrka tlouˇsˇtka
MultimediaCard maxim´alnˇe 1,8g (typicky pod 1g) 32mm (+-0,1mm) 24mm (+-0,08mm) 1.4 mm (+-0,1mm)
Tabulka 3.6: Fyzick´e parametry
Obr´azek 3.2: Rozmˇery klasick´e karty MMC
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.3.3
9
Popis rozhran´ı
Pamˇeˇtov´a karta m´ a na jedn´e stranˇe 7 pin˚ u. Piny maj´ı sv´e funkce pˇriˇrazeny podle toho, jak´ y protokol vyuˇz´ıv´ame.
3.3.3.1
MultimediaCard protokol pin 1 2 3 4 5 6 7
oznaˇ cen´ı typ RSV NC CMD I/O, PP, OD VSS1 S VDD S CLK I VSS2 S DAT0 I/O, PP
popis nepˇripojen nebo vˇzdy log.1 ˇ pˇr´ıkaz / odpovˇed uzemnˇen´ı 1 nap´ ajec´ı napˇet´ı hodiny uzemnˇen´ı 2 datov´ y vodiˇc
Tabulka 3.7: Funkce pin˚ u pˇri pouˇzit´ı MultimediaCard protokolu
Pˇri pouˇzit´ı standardn´ıho protokolu MultimediaCard jsou vyuˇz´ıv´any 3 komunikaˇcn´ı a 4 podp˚ urn´e vodiˇce. Vodiˇc CMD se pouˇz´ıv´a obousmˇernˇe na zas´ıl´an´ı pˇr´ıkaz˚ u a pˇrij´ım´ an´ı odpovˇedi. Host a karta pracuj´ı ve dvou reˇzimech: open-drain a push-pull. Datov´ y vodiˇc s oznaˇcen´ım DAT se pouˇz´ıv´a tak´e obousmˇernˇe. Host a karta pracuj´ı v reˇzimu push-pull. Hodinov´ y sign´ al CLK je vys´ıl´ an ve smˇeru od hosta ke kartˇe, pracuje v reˇzimu push-pull.
3.3.3.2
SPI protokol pin 1 2 3 4 5 6 7
oznaˇ cen´ı CS DataIN VSS1 VDD CLK VSS2 DataOUT
typ I I S S I S O
popis v´ ybˇer ˇcipu (aktivn´ı v log. 0) data ve smˇeru od zaˇr´ızen´ı ke kartˇe uzemnˇen´ı 1 nap´ ajec´ı napˇet´ı hodiny uzemnˇen´ı 2 data ve smˇeru od karty k zaˇr´ızen´ı
Tabulka 3.8: Funkce pin˚ u pˇri pouˇzit´ı SPI protokolu
Pˇri pouˇzit´ı protokolu SPI jsou vyuˇz´ıv´any 3 z´akladn´ı komunikaˇcn´ı vodiˇce a nav´ıc sign´ al CS. Sign´ al CS je zkratkou pro Chip Select, pouˇz´ıv´a se pro v´ ybˇer aktivn´ıho zaˇr´ızen´ı. Tento sign´ al mus´ı b´ yt aktivn´ı po celou dobu komunikace. Obousmˇern´e sign´ aly CMD a DAT jsou v tomto pˇr´ıpadˇe nahrazeny dvˇema jednosmˇern´ ymi sign´ aly. Sign´ al DataIN pˇrij´ım´ a data od hostitelsk´eho zaˇr´ızen´ı a DataOUT vys´ıl´a data smˇerem k hostitelsk´emu zaˇr´ızen´ı. Hodinov´ y sign´ al CLK je opˇet kartou pouze pˇrij´ım´ an.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
10 3.3.3.3
Srovn´ an´ı MultimediaCard protokolu a SPI protokolu
MultiMediaCard Mode 3-dr´ atov´a seriov´a sbˇernice (clock, command, data) aˇz 64k karet adresovateln´ ych bus protokolem aˇz 30 karet stohovateln´ ych na jedn´e fyzick´e sbˇernici lehk´a identifikace a pˇridˇelov´an´ı adresy pro jednotliv´e karty ochrana CRC proti chyb´am pˇri pˇrenosu dat sekvenˇcn´ı a single/multiple block ˇcten´ı/z´apis pˇr´ıkazy
SPI Mode 3-dr´ atov´a seriov´a sbˇernice (clock, dataIn, dataOut) + aktivace CS v´ ybˇer karty hardwarovˇe CS sign´ alem kaˇzd´ a karta potˇrebuje vlastn´ı CS sign´ al nen´ı dostupn´e, v´ ybˇer karty hardwarov´ ym CS sign´ alem voliteln´e, standardn´ı mod je bez kontroly chyb pouze single/multiple block ˇcten´ı/z´apis pˇr´ıkazy
Tabulka 3.9: Porovn´an´ı existuj´ıc´ıch protokol˚ u MMC karty
Ve sv´em zaˇr´ızen´ı budu pouˇz´ıvat pouze jedinou kartu MMC. Hardwarov´a aktivace pomoc´ı sign´ alu CS je tedy nejjednoduˇsˇs´ı zp˚ usob, jak pamˇeˇtovou kartu oˇzivit. Ochrann´ y kod CRC pro pˇrenos dat nen´ı nutn´e v m´em pˇr´ıpadˇe pouˇz´ıvat, pouze by jeho v´ ypoˇcet zp˚ usoboval prodlevu. Pˇr´ıkazy pro ˇcten´ı a z´ apis pouze jednoho bloku dat jsou tak´e vyhovuj´ıc´ı a proto jsem zvolil pro komunikaci s pamˇeˇtovou kartou SPI m´ od. Celkovˇe je pro komunikaci s jednoˇcipov´ ym mikropoˇc´ıtaˇcem vhodnˇejˇs´ı. D´ale se budu zab´ yvat pouze t´ımto protokolem.
3.3.3.4
Vnitˇ rn´ı registry pamˇ eˇ tov´ e karty
Pamˇeˇtov´a karta obsahuje nˇekolik speci´ aln´ıch registr˚ u. Registry OCR, CID a CSD nesou informace o nastaven´ı karty. Registr RCA se pouˇz´ıv´a pro uchov´an´ı relativn´ı adresy pr´ avˇe prob´ıhaj´ıc´ıho pˇrenosu. Registr OCR OCR je zkratkou pro Operation Conditions Register, tedy registr pracovn´ıch podm´ınek. Je v nˇem uloˇzena informace v jak´ ych napˇeˇtov´ ych intervalech je karta schopna pracovat. Nav´ıc nese tento registr i tzv.status bit, kter´ y se nastav´ı automaticky na hodnotu log.1, kdyˇz u ´spˇeˇsnˇe probˇehne inicializaˇcn´ı sekvence. Registr CID CID je zkratkou pro Card Identification Register, tedy registr identifikace karty. Hodnota tohoto registru je d´ ana pˇri v´ yrobˇe karty tak, aby byla jej´ı 16 bytov´a hodnota jedineˇcn´ a. Konkr´etn´ı v´ yznamy bit˚ u nen´ı tˇreba zn´ at, lze si je snadno dohledat v produktov´em manu´ alu [1], sekce 3.5.2 Registr CSD CSD je zkratkou pro Card Specific Register. Obsahuje d˚ uleˇzit´a data pro pr´ aci s kartou. Nˇekter´e bity registru jsou pouze pro ˇcten´ı, jin´a jsou jednou ˇci v´ıcekr´at programovateln´ a. Uchov´avan´e informace napˇr.: maxim´ aln´ı pˇrenosov´a rychlost, maxim´aln´ı d´elka pˇrenosov´eho bloku, velikost pamˇeti, copy flag, oznaˇcen´ı pouˇzit´eho souborov´eho syst´emu a CRC kontroln´ı souˇcet pro cel´ y registr CSD (je nutn´e ho pˇrepoˇc´ıtat pˇri kaˇzd´e zmˇenˇe obsahu).
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
11
Status registr Tento 32bitov´ y registr obsahuje chybov´e, stavov´e a bity podm´ınek. Napˇr. chybn´ y rozsah parametru pˇr´ıkazu, chybn´ a adresa, chybn´a d´elka pˇrenosov´eho bloku, chyba CRC souˇctu, nezn´ am´ a chyba, ale i aktu´aln´ı stav karty nebo pˇr´ıznak pˇripravenosti na pˇr´ıjem dat. Pˇresn´e hodnoty naleznete v tabulce 3-28 v [1] 3.3.3.5
ˇ Casov´ an´ı sbˇ ernice
ˇ Obr´azek 3.3: Casov´ an´ı DataIn a DataOut vzhledem k hodinov´emu sin´ alu
Parametr Symbol Clock Freq.Data Transfer Mode fP P Clock Freq.Identification Mode fOD Clock Low Time tW L Clock High Time tW H Clock Rise Time tT LH Clock Fall Time tT HL Vstupy CMD, DAT vztaˇzen´e k CLK Input Setup Time tISU Input Hold Time tIH V´ ystupy CMD, DAT vztaˇzen´e k CLK Output Setup Time tOSU Output Hold Time tODLY
Min 0 0 10 10 — —
Max 20 400 — — 10 10
Jednotka MHz kHz ns ns ns ns
3 3
— —
ns ns
5 5
— —
ns ns
ˇ Tabulka 3.10: Casov´ an´ı sbˇernice s konkr´etn´ımi hodnotami
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
12 3.3.4
SPI M´ od
SPI m´ od je druh´ ym, voliteln´ ym m´ odem, kter´ y m´ a karta MMC k dispozici. Je koncipov´an pro komunikaci po SPI sbˇernici, kterou m´ a vˇetˇsina jednoˇcipov´ ych poˇc´ıtaˇc˚ u. Typ komunikaˇcn´ıho m´ odu lze po pˇripojen´ı napˇet´ı vybrat pouze jednou, bˇehem prvn´ıho reset pˇr´ıkazu. Jedin´a cesta, jak vr´atit ˇr´ızen´ı MMC m´ odu je proces odpojen´ı a pˇripojen´ı napˇet´ı. Nejsou zde ˇz´adn´e broadcastov´e pˇr´ıkazy, v´ ybˇer karty se prov´ad´ı pˇriveden´ım aktivn´ı logick´e hodnoty na sign´ al CS. 3.3.4.1
Inicializace a pˇ rechod do SPI M´ odu
Po pˇripojen´ı nap´ ajen´ı se karta dostane do MMC m´ odu. Pro pˇrechod do SPI m´ odu je nutn´e: • na v´ ybˇerov´ y sign´ al CS pˇriv´est neaktivn´ı u ´roveˇ n • prov´est 80 hodinov´ ych cykl˚ u sbˇernice SPI • na v´ ybˇerov´ y sign´ al CS pˇriv´est aktivn´ı u ´roveˇ n a zaslat kartˇe pˇr´ıkaz CMD0. V tuto chv´ıli karta pˇrech´ az´ı do SPI m´ odu. • nyn´ı mus´ıme ˇcekat na response typu R1 pro CMD0, hodnota response mus´ı b´ yt 0x01, jin´a hodnota indikuje chybu • zaslat pˇr´ıkaz CMD1 a oˇcek´avat response R1, hodnota mus´ı b´ yt nyn´ı 0x00, pokud nen´ı, zasl´ an´ı pˇr´ıkazu CMD1 se opakuje • po pˇrijet´ı spr´avn´e R1 response m˚ uˇze zaˇc´ıt pˇrenos dat D˚ uleˇzit´a pozn´ amka: Dokud nejsou u ´spˇeˇsnˇe provedeny tyto body, nemˇela by rychlost SPI sbˇernice pˇresahnout 400kHz. Po t´eto inicializace je moˇzn´e rychlost zv´ yˇsit. 3.3.4.2
Registry pˇ r´ıstupn´ e v SPI M´ odu
V SPI m´ odu jsou pˇr´ıstupn´e pouze registry OCR, CSD a CID. Jejich popis je v sekci 3.3.3.4 3.3.4.3
Protokol SPI
Veˇsker´ a komunikace je na rozd´ıl od MultiMediaCard m´ odu zarovn´ana na 8 bit˚ u, tedy 1B. Podobnˇe jako MultiMediaCard protokol se SPI protokol skl´ ad´ a z: • pˇr´ıkaz˚ u - commands • odpovˇed´ı - responses • blok˚ u dat - data blocks Hostitelsk´e zaˇr´ızen´ı kontroluje celou komunikaci. Vybran´a karta vˇzdy odpov´ıd´ a response tokenem na pˇrijat´ y pˇr´ıkaz. Na kaˇzd´ y pˇrijat´ y blok dat odpov´ıd´ a karta speci´aln´ım data response tokenem. SPI protokol je inicializov´an v m´ odu bez ochrany kontroln´ım souˇctem CRC, pˇresto je nutn´e prvn´ı pˇr´ıkaz pˇri inicializaci, tedy CMD0 vybavit platn´ ym CRC souˇctem. Ten je ovˇsem pˇredem zn´ am´ y, uveden´ y i ve specifikaci.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE 3.3.4.4 ˇ ıslo C´ pˇ r´ıkazu CMD0 CMD1
13
Pˇ r´ıkazy (commands) protokolu SPI Argument
Response
Zkratka
Popis
ˇz´ adn´ y ˇz´ adn´ y
R1 R1
GO IDLE STATE
CMD9 CMD10 CMD16
ˇz´ adn´ y ˇz´ adn´ y [31:0] d´elka bloku
R1 R1 R1
SEND CSD SET BLOCKLEN
CMD17
[31:0] adresa dat
R1
READ SINGLE BLOCK
CMD24
[31:0] adresa dat
R1
WRITE BLOCK
CMD58
ˇz´ adn´ y
R3
READ OCR
SEND OP COND
SEND CID
reset MMC zaˇr´ızen´ı aktivuj sv˚ uj inicializaˇcn´ı proces zaˇsli sv˚ uj CSD zaˇsli sv˚ uj CID nastav´ı d´elku komunikaˇcn´ıho bloku pro dalˇs´ı operace naˇcte z adresy data, poˇcet byt˚ u nastavuje CMD16 zap´ıˇse na adresu data, poˇcet byt˚ u nastavuje CMD16 pˇreˇcti registr OCR
Tabulka 3.11: Nejd˚ uleˇzitˇejˇs´ı pˇr´ıkazy protokolu SPI
3.3.4.5
Form´ at zas´ıl´ an´ı pˇ r´ıkaz˚ u
Pˇr´ıkazov´ y token m´ a d´elku 6B a jeho struktura je n´ asleduj´ıc´ı: pozice bitu ˇ s´ıˇ rka(bit˚ u) hodnota popis
47 1 0 start bit
46 1 1 st´ al´ y bit
45-40 6 X ˇc´ıslo pˇr´ıkazu
39-8 32 X parametr
7-1 7 X CRC7
0 1 1 end bit
Tabulka 3.12: V´ yznam jednotliv´ ych bit˚ u zas´ılan´ ych pˇr´ıkaz˚ u Pro n´ azornost uvedu pˇr´ıklad: Pro naˇcten´ı sektoru z adresy 0x00045000 mus´ıme zaslat n´ asleduj´ıc´ıch 6 byt˚ u: 0x51 0x00 0x50 0x04 0x00 0xFF 3.3.4.6
Odpovˇ edi (responses) protokolu SPI
Response R1 ˇ po kaˇzd´em pˇrijat´em pˇr´ıkazu kromˇe SEND STATUS. D´elka je 1B. Karta zas´ıl´ a tuto odpovˇed Nejvyˇsˇs´ı 7.bit je vˇzdy nulov´ y. Ostatn´ı bity odpov´ıdaj´ı jednotliv´ ym chyb´am, kter´e pop´ıˇse n´ asleduj´ıc´ı tabulka. Response R1b ˇ je identick´a k R1, pouze s voliteln´ Tato odpovˇed ym doplˇ nkem o BUSY sign´ al. Sign´ al busy m˚ uˇze trvat jak´ ykoliv poˇcet byt˚ u, nulov´a hodnota znamen´a, ˇze karta je zanepr´azdˇena. Nenulov´a hodnota n´ am sdˇel´ı, ˇze karta je schopna pˇrij´ımat dalˇs´ı pˇr´ıkazy.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
14 bit 0 1
chyba Idle stav Reset maz´ an´ı
2 3 4 5
Chybn´ y pˇr´ıkaz Chyba CRC pˇri komunikaci Erase Sequence chyba Chyba adresy
6
Chyba parametru
definice Karta je v Idle stavu a prov´ad´ı inicializaci Mazac´ı sekvence nebyla dokonˇcena, protoˇze pˇriˇsel pˇr´ıkaz o zruˇsen´ı Byl pˇrijat pˇr´ıkaz s neexistuj´ım k´odem Souˇcet CRC posledn´ıho pˇr´ıkazu selhal Nastala chyba pˇri sekvenci pˇr´ıkaz˚ u maz´ an´ı Byla pouˇzita nezarovnan´a adresa vzhledem k d´elce komunikaˇcn´ıho bloku Parametr pˇr´ıkazu byl mimo povolen´ y rozsah
Tabulka 3.13: V´ yznam jednotliv´ ych bit˚ u response R1
Response R2 ˇ pˇri pˇrijmut´ı pˇr´ıkazu SEND STATUS. Response R2 je 2B dlouh´ Karta zas´ıl´a tuto odpovˇed ya prvn´ı byte je sv´ ym sloˇzen´ım shodn´ y s R1. Druh´ y byte m´ a n´ asleduj´ıc´ı strukturu: bit 0 1 2 3 4 5 6 7
chyba Karta je zamˇcena Ochrana z´ apisu
definice Tento bit je nastaven pˇri zamknut´ı karty Tento bit je nastaven pˇri pokusu o zapisov´an´ı do chr´ anˇen´eho sektoru Nezn´am´ a chyba Bˇehem operace se vyskytla nezn´ am´ a chyba Chyba karty Chyba vnitˇrn´ıho kontroleru karty ECC karty selhalo Byl pouˇzit k´od opravy chyb, ale selhal Poruˇsen´ı ochrany z´ apisu Pˇr´ıkaz se pokouˇsel zapisovat do chr´ anˇen´eho bloku Chyba parametru maz´ an´ı Chybn´ y v´ ybˇer, sektor nebo skupina pro maz´ an´ı Mimo rozsah Parametr byl mimo rozsah nebo se host pokouˇsel zmˇenit ROM, copy bit nebo WP bit Tabulka 3.14: V´ yznam jednotliv´ ych bit˚ u druh´eho bytu response R2
Response R3 ˇ pˇri pˇrijmut´ı pˇr´ıkazu READ OCR. Response R3 je 5B dlouh´ Karta zas´ıl´a tuto odpovˇed y a prvn´ı byte je sv´ ym sloˇzen´ım shodn´ y s R1. Dalˇs´ı 4 byty obsahuj´ı OCR registr. Druh´ y byte m´ a n´ asleduj´ıc´ı strukturu: bit 0 - 31 32 - 39
v´ yznam OCR registr R1 response
Tabulka 3.15: V´ yznam jednotliv´ ych bit˚ u response R3
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
15
Data response Kaˇzd´ y datov´ y blok zapsan´ y na kartu je potvrzen pomoc´ı odpovˇedi data response. Token je 1B dlouh´ y a jeho obsah ukazuje n´ asleduj´ıc´ı tabulka. 7 x
6 x
5 x
4 0
3 A
2 B
1 C
0 1
Tabulka 3.16: V´ yznam jednotliv´ ych bit˚ u data response Pokud v bitech ABC pˇreˇcteme • 010 - pak byla data pˇrijata a zaps´ ana v poˇra´dku • 101 - data byla odm´ıtnuta kv˚ uli chybˇe CRC • 110 - data byla odm´ıtnuta kv˚ uli chybˇe pˇri z´apisu 3.3.4.7
Data tokeny protokolu SPI
Pˇr´ıkazy ˇcten´ı a z´ apisu jsou spojeny s datov´ ymi tokeny, pˇres kter´e data pˇrij´ım´ ame ˇci vys´ıl´ ame. Datov´e tokeny maj´ı n´ asleduj´ıc´ı form´at. • 1. byte = pˇr´ıznak zaˇc´ atku bloku • Uˇzivatelsk´a data • posledn´ı 2.byty jsou 16-bit CRC souˇcet Pro ˇcten´ı i z´ apis jedin´eho sektoru je pˇr´ıznak zaˇca ´tek bloku roven hodnotˇe 0xFE. Data error token Pokud selˇze operace ˇcten´ı a karta nen´ı schopna dodat poˇzadovan´ a data, pak se vys´ıl´a data error token. Je dlouh´ y 1B a jeho struktura m´ a tento form´at. 7 0
6 0
5 0
4 A
3 B
2 C
1 D
0 E
Tabulka 3.17: V´ yznam jednotliv´ ych bit˚ u data error token Pokud v bitech ABCDE pˇreˇcteme na nˇekter´e pozici jedniˇcku, pak nastala jedna z chyb: • A - karta je zamˇcena • B - adresa mimo spr´avn´ y rozsah • C - chyba opravy dat ECC • D - chyba vnitˇrn´ıho kontroleru • E - nezn´ am´ a chyba
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
16
3.4
N´ avrh zaˇ r´ızen´ı
N´avrh zaˇr´ızen´ı jsem si rozdˇelil na nˇekolik u ´rovn´ı. V prvn´ı ˇc´asti se mus´ım rozhodnout, jak´ y typ mikroprocesoru pouˇziji. S t´ım souvis´ı i v´ yvojov´a platforma, na kter´e bude prob´ıhat v´ yvoj. Po v´ ybˇeru procesoru je nutn´e pˇripojit pamˇeˇtovou kartu ke sbˇernici. Bude tedy potˇreba navrhnout vhodn´ y spojovac´ı kabel. Vstupn´ı data budou odeb´ır´ ana ze seriov´e linky, protoˇze toto rozhran´ı se pouˇz´ıv´a i v palubn´ı elektronice vzducholodi. 3.4.1
Blokov´ e sch´ ema
RS232
CPU
karta MMC
Obr´azek 3.4: Z´ akladn´ı blokov´e sch´ema zaˇr´ızen´ı
3.4.2
V´ ybˇ er procesoru
V ˇsirok´e nab´ıdce mikroprocesor˚ u jsem vyb´ıral podle nˇekolika d˚ uleˇzit´ ych krit´eri´ı: • dostateˇcn´ y v´ ypoˇcetn´ı v´ ykon, minim´alnˇe 20MHz • dostatek pamˇeti RAM (kolem 1kB) • pˇr´ıtomnost komunikaˇcn´ıho rozhran´ı SPI (Serial Peripheral Interface) • pˇr´ıtomnost komunikaˇcn´ıho rozhran´ı UART (Universal Asynchronous Receiver Transmitter) • n´ızk´a spotˇreba • dostupnost kvalitn´ıho v´ yvojov´eho prostˇred´ı pro pr´ aci v jazyku C pro mikroprocesory Tˇemto podm´ınk´am t´emˇeˇr vyhovuj´ı Atmely ˇrady ATmega, kter´e maj´ı dostatek pamˇeti RAM, dostatek Flash pamˇeti i poˇzadovan´ a rozhran´ı, pouze maxim´aln´ı kmitoˇcet je 16MHz. Dalˇs´ı mikroprocesor splˇ nuj´ıc´ı podm´ınky je od spoleˇcnosti Silicon Laboratories, mikroprocesor C8051F350. Tento mˇe zaujal vysok´ ym v´ ykonem aˇz 50MHz a z´aroveˇ n pomˇernˇe malou spotˇrebou 5,8mA pˇri 25MHz. Pˇri sn´ıˇzen´ı frekvence hodinov´ ych cykl˚ u na 32kHz lze sn´ıˇzit spotˇrebu aˇz na 11µA. Katalogov´ y list [3] uv´ad´ı, ˇze 70% instrukc´ı se vykon´ a v jednom aˇz dvou hodinov´ ych taktech. Pˇri m´em rozhodov´an´ı jsem se pˇrikl´anˇel k faktu, ˇze procesor C8051F350 vyuˇz´ıv´a pro sv˚ uj v´ yvoj i elektronika na palubˇe vzducholodi. Zvolil jsem si mikroprocesor C8051F350 pro jeho vysok´ y v´ ykon a zejm´ena pro dostupnost v´ yvojov´eho z´azem´ı. Zap˚ ujˇcen´ım jsem totiˇz z´ıskal okamˇzitˇe v´ yvojov´ y kit tohoto mikroprocesoru a odpadla pro mˇe n´ aroˇcn´ a v´ yroba vlastn´ıho program´atoru a v´ yvojov´e desky.
´ ´ ˇ SEN ˇ ´I KAPITOLA 3. ANALYZA A NAVRH RE
Obr´azek 3.5: Blokov´e sch´ema mikroprocesoru C8051F350
17
18
KAPITOLA 4. REALIZACE
4 Realizace 4.1
Hardwarov´ aˇ c´ ast
4.1.1
Pˇ ripojen´ı MMC k procesoru, pˇ r´ıchoz´ı data
Podle tabulky 3.8 zjist´ıme pˇriˇrazen´ı pin˚ u karty v SPI m´ odu. Na stranˇe mikroprocesoru budeme s kartou MMC komunikovat pomoc´ı SPI rozhran´ı. Pˇr´ıchoz´ı data budeme pˇrij´ımat po seriov´e lince. Procesor C8051F350 m´ a implementov´anu technologii Crossbar, kter´a umoˇzn ˇuje pˇriˇrazovat piny jednotliv´ ym funkc´ım. Pomoc´ı aplikace Config2 od Silicon Laboratories je pˇriˇrazen´ı pin˚ u velice jednoduch´e a n´ azorn´e. Zaˇskrnut´ım poˇzadovan´ ych funkc´ı se v doln´ım poli automaticky generuje k´od programu, kter´ y nastaven´ı provede.
Obr´azek 4.1: Pˇriˇrazen´ı pin˚ u procesoru funkc´ım pomoc´ı programu Config2 T´ımto nastaven´ım jsem nastavil poˇzadovan´e vstupy a v´ ystupy procesoru. P0.0 P0.1 P0.2 P0.3
-
SCK MISO MOSI NSS
(SPI0), (SPI0), (SPI0), (SPI0),
Push-Pull, Open-Drain, Push-Pull, Push-Pull,
Digital Digital Digital Digital
19
KAPITOLA 4. REALIZACE P0.4 P0.5
-
TX0 (UART0), Push-Pull, Digital RX0 (UART0), Open-Drain, Digital
Konkr´etn´ı zapojen´ı m´ ame zde:
+3,3V
MMC
1 2 3 4 5 6 7
P0.3 P0.2 P0.1 P0.0
C8051F350
Obr´azek 4.2: Pˇripojen´ı MMC karty k mikroprocesoru
4.2
Softwarov´ aˇ c´ ast
Programov´an´ı obsluˇzn´eho programu zaˇr´ızen´ı jsem si rozdˇelil na nˇekolik logick´ ych celk˚ u. • hardwarov´a u ´roveˇ n - nastavuje z´akladn´ı parametry procesoru, jeho rychlosti a funkce vstupnˇe-v´ ystupn´ıch port˚ u • MMC u ´roveˇ n - definuje funkce pro pr´ aci s pamˇeˇtovou kartou, vyuˇz´ıv´a nˇekter´e funkce hardwarov´e u ´rovnˇe • FAT u ´roveˇ n - definuje funkce pro pr´ aci se soubory, hled´ an´ı voln´eho m´ısta k z´apisu, udrˇzov´an´ı konzistentn´ıch soubor˚ u • ˇr´ızen´ı zaˇr´ızen´ı - vytv´aˇr´ı v´ ysledn´e funkce zaˇr´ızen´ı, vyuˇz´ıv´a funkc´ı spodn´ıch u ´rovn´ı 4.2.1
Hardwarov´ au ´ roveˇ n
V t´eto ˇc´asti mus´ım nastavit vˇsechny d˚ uleˇzit´e ˇc´asti mikroprocesoru. Oscil´ ator Procesor C8051F350 m´ a intern´ı programovateln´ y oscil´ ator, programovatelnou n´ asobiˇcku a moˇznost pˇripojen´ı extern´ıho oscil´ atoru. J´ a vyuˇz´ıv´am intern´ı oscil´ ator, kter´ y bˇeˇz´ı na 24,5MHz a n´ asobiˇcku x2. V´ ysledn´ y kmitoˇcet je 49MHz. V datasheetu [3] na str.130 nalezneme definici jednotliv´ ych bit˚ u registru OSCICN (Internal Oscilator Control). Nastaven´ım hodnoty OSCICN na 0x83 spust´ıme intern´ı oscil´ ator a dˇeliˇcku nastav´ıme na 1:1. N´asleduje nastaven´ı n´ asobiˇcky v registru CLKMUL.
20
KAPITOLA 4. REALIZACE
Nastaven´ı I/O Na obr´ azku 4.1 je vidˇet, ˇze toto nastaven´ı je ot´azkou nˇekolika vteˇrin. Nastaven´ı se t´ yk´ a registr˚ u P0MDOUT (nastaven´ı portu 0 ve v´ ystupn´ım modu), XBR0 a XBR1. Podrobnosti v datasheetu [3] na str.142 Rozhran´ı SPI SPI rozhran´ı m˚ uˇze pracovat v master modu nebo slave modu, 3-sign´ alov´em modu nebo 4sign´ alov´em modu. S pamˇeˇtovou kartou pracuji v SPI modu, takˇze v mikroprocesoru nastav´ıme SPI rozhran´ı do 4-sign´ alov´eho master modu. Nesm´ıme zapomenout, ˇze dokud neprobˇehne inicializace MMC karty, nesm´ıme nastavit rychlost SPI nad 400kHz. Podrobnosti v datasheetu [3] na str.181 Rozhran´ı USART Asynchronn´ı, plnˇe duplexn´ı rozhran´ı UART pouˇz´ıv´am pro ovl´ad´ an´ı zaˇr´ızen´ı a pˇr´ıjem dat, kter´a maj´ı b´ yt uloˇzena. Toto seriov´e rozhran´ı se nastavuje registrem SCON0. Datov´ y registr nese oznaˇcen´ı SBUF0. Pokud chceme data vys´ılat - zapisujeme do nˇej, pokud chceme pˇrij´ımat ˇcteme z nˇej. Pˇrenosov´a rychlost je generov´ana Timerem 1 v 8-bitov´em auto-reload modu. Pro poˇzadovanou hodnotu rychlosti je nutn´e spr´avnˇe nastavit hodnotu ˇc´ıtaˇce. Vzorec pro v´ ypoˇcet lze naj´ıt v datasheetu [3] na str.172 4.2.2
´ Uroveˇ n pamˇ eˇ tov´ e karty MMC
Pro pr´ aci s pamˇeˇtovou kartou jsem si vytvoˇril nˇekolik z´akladn´ıch funkc´ı. Nejd˚ uleˇzitˇejˇs´ı funkce je MMC SendCommand. ˇ ısla pˇr´ıkaz˚ Tato funkce m´ a 3 parametry: ˇc´ıslo pˇr´ıkazu, parametr a hodnotu CRC. C´ u jsem si definoval na zaˇc´ atku programu pro jednoduˇsˇs´ı pouˇz´ıv´an´ı. Seznam pˇr´ıkaz˚ u naleznete v tabulce 3.11 #define #define #define #define #define #define #define #define #define #define
CMD0 (0x40+0) /* GO_IDLE_STATE */ CMD1 (0x40+1) /* SEND_OP_COND */ CMD9 (0x40+9) /* SEND_CSD */ CMD10 (0x40+10) /* SEND_CID */ CMD16 (0x40+16) /* SET_BLOCKLEN */ CMD17 (0x40+17) /* READ_SINGLE_BLOCK */ CMD24 (0x40+24) /* WRITE_BLOCK */ CMD41 (0x40+41) /* SEND_OP_COND (ACMD) */ CMD55 (0x40+55) /* APP_CMD */ CMD58 (0x40+58) /* READ_OCR */
Parametr pˇred´ av´am do funkce jako promˇennou typu long, ovˇsem funkce MMC SendCommand mus´ı tuto hodnotu odeslat pˇres SPI po bytech. Vytvoˇril jsem si proto vlastn´ı datov´ y typ pomoc´ı deklarace typedef union. M˚ uj vlastn´ı typ blong obsahuje jeden klasick´ y datov´ y typ long a n´ aslednˇe pole char o velikost 4 byty. T´ım, ˇze zap´ıˇseme hodnotu do klasick´e promˇenn´e typu long, m´ ame zaroveˇ n k dispozici i bytovˇe adresovatelnou hodnotu v poli.
21
KAPITOLA 4. REALIZACE
Dalˇs´ı mnou vytvoˇren´e funkce jsou pro ˇcten´ı a z´apis z/na kartu, MMC read a MMC write. Obˇe tyto funkce maj´ı jeden parametr a t´ım je adresa. Pˇredposledn´ı funkce je MMC SetBlockLength, nem´ a ˇz´adn´e parametry - nastavuje totiˇz pomoc´ı pˇr´ıkazu CMD16 d´elku komunikaˇcn´ıho bloku na pevnou hodnotu 512B. Posledn´ı funkce je MMC Init, kter´a pˇresnˇe kop´ıruje postup inicializace popsan´ y v anal´ yze. 4.2.3
´ Uroveˇ n souborov´ eho syst´ emu FAT
Nejprve je nutn´e zn´ at nejd˚ uleˇzitˇejˇs´ı oblasti souborov´eho syst´emu. Master Boot Record (MBR) Boot sektor Rezervovan´e sektory Alokaˇcn´ı tabulka 1 Alokaˇcn´ı tabulka 2 Root adres´aˇr Datov´a oblast Tabulka 4.1: Nejd˚ uleˇzitˇejˇs´ı oblasti na pamˇeˇtov´em m´ediu Master Boot Record je uloˇzen na 1.sektoru media, jehoˇz adresa je 0x00000000. O MBR se mus´ıme zaj´ımat, protoˇze obsahuje tabulku rozdˇelen´ı disku. Jsou to ˇctyˇri 16-bytov´e z´aznamy, ˇctyˇri moˇzn´e logick´e disky. Kaˇzd´ y z´ aznam obsahuje pˇr´ıznak aktivn´ıho odd´ılu, logickou adresu prvn´ıho sektoru odd´ılu a velikost odd´ılu. Podrobnosti lze zjistit v ˇcl´anku [6] V pˇr´ıpadˇe m´eho zaˇr´ızen´ı si vˇs´ım´ am vˇzdy pouze prvn´ıho z´aznamu. Nejprve mus´ıme naˇc´ıst MBR a z prvn´ıho z´aznamu po bytech z´ıskat adresu zaˇc´atku odd´ılu. Tuto hodnotu vyn´ asob´ıme 512 a v´ ysledek si uloˇz´ım do promˇenn´e adresa boot. Nyn´ı, kdyˇz m´ ame k dispozici adresu boot sektoru, m˚ uˇzeme ho naˇc´ıst. Boot sektor je prvn´ım sektorem odd´ılu a jsou v nˇem uloˇzeny vˇsechny d˚ uleˇzit´e informace o nastaven´ı odd´ılu. Z ˇcl´anku [7] zjist´ıme, ˇze je nutn´e si pro pozdˇejˇs´ı uˇzit´ı zaznamenat mnoho u ´daj˚ u. adresa boot + offset 0x03 0x0B 0x0D 0x0E 0x10 0x16 0x20
d´elka v B 8 2 1 2 1 2 4
popis jmenovka disku poˇcet byt˚ u na sektor (512B) poˇcet sektor˚ u na jeden cluster poˇcet rezervovan´ ych sektor˚ u, pro FAT16 by mˇelo b´ yt 1 poˇcet tabulek, mˇelo by b´ yt 2 poˇcet sektor˚ u jedn´e FAT tabulky celkov´ y poˇcet sektor˚ u odd´ıl˚ u
Tabulka 4.2: Struktura boot sektoru a d˚ uleˇzit´e poloˇzky Kdyˇz zn´ ame tyto u ´daje, m˚ uˇzeme nyn´ı vypoˇc´ıtat adresy vˇsech ostatn´ıch hlavn´ıch oblast´ı. Adresa FAT tabulky adresa_fat = adresa_boot + (bytu_na_sektor * pocet_rezervovanych_sektoru); Adresa zaˇc´ atku hlavn´ıho ROOT adres´aˇre
22
KAPITOLA 4. REALIZACE
adresa_root = adresa_boot + (bytu_na_sektor * (pocet_rezervovanych_sektoru + (pocet_fat * sektoru_na_fat))); Adresa zaˇc´atku datov´e oblasti: adresa_data = adresa_root + (max_polozek_root * 32); Vˇsechny tyto adresy si mus´ıme zapamatovat. Nyn´ı pop´ıˇsi funkce, kter´e jsem pro u ´roveˇ n FAT tabulky vytvoˇril: Obsluha ROOT adres´ aˇ re Zde je n´ azorn´ y obr´ azek, jak mohou vypadat jednotliv´e soubory v root adres´aˇri.
Obr´azek 4.3: Detailn´ı zobrazen´ı poloˇzky souboru v root adres´aˇri
Kaˇzd´ y soubor nebo adres´aˇr je v root adres´aˇri reprezentov´an jako 32B z´aznam. Detailn´ı rozpis parametr˚ u z´aznamu naleznete v ˇcl´ anku [7]. Uvedu pouze nejd˚ uleˇzitˇejˇs´ı ˇc´asti. adresa poloˇzky + offset 0x00 0x08 0x0B 0x1A 0x1C
d´elka v B 8 3 1 2 4
popis n´ azev poloˇzky pˇr´ıpona poloˇzky identifikace (soubor / adres´aˇr) a atributy prvn´ı cluster souboru nebo adres´aˇre d´elka souboru
Tabulka 4.3: Struktura boot sektoru a d˚ uleˇzit´e poloˇzky Pokud m´ am zapsat nov´ y soubor, pak je potˇreba naˇc´ıst sektor s adresou root adres´aˇre a naj´ıt voln´e m´ısto pro nov´ y z´ aznam. Funkce FindFreeRootEntry najde voln´e m´ısto v root adres´aˇri a pˇred´ av´a ˇc´ıslo voln´e poloˇzky jako svoji n´ avratovou hodnotu. Kdyˇz v´ıme, kam m˚ uˇzeme nov´ y z´ aznam uloˇzit, m˚ uˇzeme pokraˇcovat. Funkce WriteNewFile pracuje n´ asleduj´ıc´ım zp˚ usobem: • nejprve projde cel´ y adres´aˇr root a hled´ a soubory ve tvaru DATAXXX a ukl´ad´ a si nejvyˇsˇs´ı dosaˇzen´e ˇc´ıslo
KAPITOLA 4. REALIZACE
23
• na pozici voln´e poloˇzky zap´ıˇse n´ azev DATA (hexadecim´ alnˇe 0x44 0x41 0x54 0x41) a n´ asleduje 3.m´ıstn´e ˇc´ıslo o 1 vˇetˇs´ı neˇz nejvyˇsˇs´ı nalezen´e - je tak zajiˇstˇen jedineˇcn´ y n´ azev nov´eho souboru • d´ ale se zap´ıˇse ˇc´ıslo nalezen´eho voln´eho clusteru pro data • a nakonec zap´ıˇseme velikost souboru jako v´ ysledek v´ ypoˇctu (512B * sektoru na cluster), nejmenˇs´ı rozliˇsiteln´ a jednotka je cluster a tak ho zabereme cel´ y Postupn´ ym z´ apisem dat se soubor z´akonitˇe zvˇetˇsuje a je nutn´e udrˇzovat v root z´aznamu spr´avnou velikost. K tomuto u ´ˇcelu jsem napsal funkci EditFileSize, kter´a u otevˇren´eho souboru zvˇetˇs´ı jeho velikost o velikost jednoho sektoru (512B). Obsluha FAT tabulky Zde je n´ azorn´ y obr´ azek, jak m˚ uˇze vypadat alokaˇcn´ı FAT tabulka:
Obr´azek 4.4: Detailn´ı zobrazen´ı alokaˇcn´ı tabulky FAT
FAT tabulka by se dala pˇrirovnat k mapˇe pouˇzit´ ych cluster˚ u v datov´e oblasti. Kaˇzd´ a poloˇzka FAT16 tabulky m´ a d´elku 2B a kaˇzd´ a poloˇzka pˇredstavuje jeden cluster (prostor) v oblasti dat. Prvn´ı 2 z´ aznamy jsou pevnˇe dan´e a nemaj´ı vztah k datov´e oblasti. Ovˇsem hned dalˇs´ı z´aznamy jsou jiˇz prvn´ı vyuˇziteln´e clustery. Kdyˇz poloˇzka FAT tabulky obsahuje hodnotu 0x0000, pak je cluster pr´ azdn´ y a m˚ uˇzeme ho pouˇz´ıt. K hled´ an´ı pr´ azdn´ ych cluster˚ u jsem napsal funkci FindFreeCluster. Hodnota 0xFFFF poloˇzky FAT tabulky pˇredstavuje konec souboru - na tomto clusteru konˇc´ı soubor. Pokud je v poloˇzce uvedena hodnota mezi 0x0002 a 0xFFEF, pak se jedn´a o vyuˇzit´ y cluster. Pokud se vr´at´ıme k obr´ azku 4.3, pak si m˚ uˇzeme vˇsimnout, ˇze u oznaˇcen´e poloˇzky jsou modˇre podtrhnuty 2 byty (0x05 0x00, vyˇsˇs´ı byty je uveden prvn´ı - ve skuteˇcnosti je hodnota 0x0005). Je to ˇc´ıslo prvn´ıho clusteru souboru. V obr´ azku 4.4 najdeme ˇcervenˇe or´ amov´an´ y blok dat a prvn´ı z´aznam je na pozici ˇc´ıslo 0x0005. Je to zaˇc´atek uveden´eho souboru. Soubor je ovˇsem vˇetˇs´ı neˇz jeden cluster a tak je na pozici 0x0005 zaps´ ano ˇc´ıslo 0x0006, to jednoduˇsˇse znamen´a, ˇze soubor pokraˇcuje na 6.clusteru. Postupn´ ym proch´ azen´ım pˇres poloˇzky 0x0005, 0x0006, 0x0007, 0x0008 a 0x0009 jsme zjistili, ˇze soubor obsadil 5 cluster˚ u. Pokud vytvoˇr´ım soubor v root adres´aˇri, mus´ım tak´e do FAT tabulky zaznamenat, ˇze jeden cluster je vyuˇzit´ y - k tomu slouˇz´ı funkce WriteFatRecordEndfile. Postupn´ ym z´ apisem dat se soubor zvˇetˇs´ı tak, ˇze pˇresahne jeden cluster a tak mus´ıme na pozici p˚ uvodn´ıho ˇc´ısla clusteru zapsat ˇc´ıslo pokraˇcuj´ıc´ıho clusteru a na pozici nov´eho clusteru zapsat do poloˇzky FAT tabulky pˇr´ıznak konce souboru 0xFFFF. Toto prodlouˇzen´ı ve FAT tabulce prov´ad´ı funkce EditFatRecord.
24 4.2.4
KAPITOLA 4. REALIZACE ´ Uroveˇ nˇ r´ızen´ı zaˇ r´ızen´ı
Nejvyˇsˇs´ı u ´roveˇ n ˇr´ızen´ı vyuˇz´ıv´a vˇsech funkc´ı pˇredeˇsl´ ych logick´ ych vrstev. Nyn´ı pop´ıˇsi z´akladn´ı funkce zaˇr´ızen´ı. Po pˇripojen´ı nap´ ajen´ı probˇehne nastaven´ı mikroprocesoru, inicializace MMC pamˇeˇtov´e karty a pˇres seriovou linku se zaˇsle zpr´ ava ”MMC online!”. Pot´e vyp´ıˇse zpr´ avu ”main>” jako indik´ ator pˇripravenosti pˇrij´ımat pˇr´ıkazy. Nyn´ı zaˇr´ızen´ı ˇcek´a na jeden z pˇr´ıkaz˚ u: k´od pˇr´ıkazu I N
funkce informace nov´ y soubor
popis pˇres seriov´e rozhran´ı poˇsle informace o zaˇr´ızen´ı a verzi firmwaru po pˇrijet´ı tohoto pˇr´ıkazu vytvoˇr´ı nov´ y soubor a pˇrejde do file modu
Tabulka 4.4: Pˇr´ıkazy pro zaˇr´ızen´ı v hlavn´ı reˇzimu Kdyˇz zaˇr´ızen´ı pˇrijme pˇr´ıkaz N, vytvoˇr´ı nov´ y soubor ve tvaru DATAxxx.TXT a pˇrejde do tzv. file modu a ohl´ as´ı se zpr´ avou ”file>” Zde zaˇr´ızen´ı oˇcek´av´a jeden z n´ asleduj´ıc´ıch pˇr´ıkaz˚ u: k´od pˇr´ıkazu W C
funkce write data close file
popis po pˇrijet´ı pˇr´ıkazu W ˇcek´a zaˇr´ızen´ı 512B dat pˇrijet´ı pˇr´ıkazu C uzavˇre soubor a pˇrejde zpˇet do hlavn´ıho main reˇzimu
Tabulka 4.5: Pˇr´ıkazy pro zaˇr´ızen´ı ve file reˇzimu Po pˇrijet´ı vˇsech 512B dat je moˇzn´e zas´ılat dalˇs´ı pˇr´ıkaz W a data ve chv´ıli, kdy se opˇet objev´ı zpr´ ava ”file>”
´ ´I KAPITOLA 5. TESTOVAN
25
5 Testov´ an´ı Zaˇr´ızen´ı bylo testov´ano pˇr´ımo v aplikaci zadavatele, tedy pˇr´ımo ve vzducholodi. Elektronika vzducholodi vytv´aˇr´ı pˇribliˇznˇe kaˇzdou vteˇrinu zpr´ avu o sv´em stavu, stavu ˇcidel a mˇeˇridel. Tyto pˇr´ıchoz´ı ˇretˇezce byly m´ ym zaˇr´ızen´ım pˇrij´ım´ any a ukl´ad´ any. Pˇri pˇripojen´ı karty k PC jsme se mohli pˇresvˇedˇcit, ˇze data jsou opravdu zaps´ ana.
Obr´azek 5.1: Soubor s pˇrijat´ ymi daty
Samostatn´ e testov´ an´ı Zde je uk´azka ruˇcn´ıho testov´an´ı, konkr´etnˇe v´ ystup ze seriov´e linky doplnˇen´ y o zas´ılan´e pˇr´ıkazy (pro snazˇs´ı orientaci) a zas´ılan´ a 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´ em ˇ c ...... k´ avalo, zda se doˇ ck´ ame pokr file> W data: aˇ cov´ an´ ı. A jak nadpis ...... a nejlepˇ s´ ı ˇ reˇ sen´ ı hry. file> C file closed main> Po pˇripojen´ı pamˇeˇtov´e karty ke ˇcteˇcce je vidˇet kompletn´ı obsah souboru.
´ ´I KAPITOLA 5. TESTOVAN
26
Obr´azek 5.2: Kompletn´ı soubor s oˇcek´avan´ ym obsahem
5.1
Srovn´ an´ı s existuj´ıc´ımi ˇ reˇ sen´ımi
Na britsk´ ych str´ ank´ach www.active-robot.com jsem narazil na uMMC Storage Solution.
Obr´azek 5.3: V´ yrobek uMMC Storage Solution
Je to mal´e zaˇr´ızen´ı schopn´e pracovat s pamˇeˇtov´ ymi kartami typu MMC a SD, zvl´ad´ a souborov´e syst´emy FAT16 a FAT32. Zaˇr´ızen´ı se ovl´ad´ a pˇres seriov´e rozhran´ı pomoc´ı sady definovan´ ych pˇr´ıkaz˚ u a jejich parametr˚ u. Cena tohoto zaˇr´ızen´ı je pˇribliˇznˇe 50 liber. http://www.roguerobotics.com/store/ index.php?main_page=product_info&cPath=58&products_id=115
´ ER ˇ KAPITOLA 6. ZAV
27
6 Z´ avˇ er C´ıle t´eto pr´ ace byly splnˇeny, zaˇr´ızen´ı bylo analyzov´ano, navrˇzeno a realizov´ano prostˇrednictv´ım v´ yvojov´eho kitu a komunikaˇcn´ıho kabelu pro pamˇetovou kartu. Samostatn´a deska ploˇsn´ ych spoj˚ u nebyla realizov´ana z d˚ uvodu velk´e ˇcasov´e n´ aroˇcnosti pˇr´ıpravy, programov´an´ı obsluˇzn´eho softwaru a implementace z´akladn´ıho souborov´eho syst´emu. Pˇresto bylo zaˇr´ızen´ı testov´ano pˇr´ımo v aplikaci, pro kterou bylo zaˇr´ızen´ı vyv´ıjeno. Data pˇrij´ıman´ a ze syst´emu vzducholodi byla u ´spˇeˇsnˇe zaznamen´ana. Po vloˇzen´ı pamˇeˇtov´e karty do ˇcteˇcky byla tato data plnˇe k dispozici pro zpracov´an´ı.
6.1
Moˇ znosti pokraˇ cov´ an´ı
Zaˇr´ızen´ı se z v´ yvojov´eho kitu pˇresune na samostatnou desku ploˇsn´ ych spoj˚ u. V pˇr´ıpravˇe je i zapojen´ı extern´ıho obvodu RTC pro pˇresnou pr´ aci s ˇcasem a datem, vytv´aˇren´e soubory by tak mˇely spr´avnˇe nastaven´e datum a ˇcas zaloˇzen´ı. D´ale m˚ uˇze b´ yt rozˇsiˇrov´an protokol o dalˇs´ı pˇr´ıkazy, napˇr. vytvoˇren´ı podadres´aˇre, smaz´ an´ı soubor˚ u, zpˇetn´e ˇcten´ı soubor˚ u atd.
28
´ ER ˇ KAPITOLA 6. ZAV
KAPITOLA 7. SEZNAM LITERATURY
29
7 Seznam literatury [1] SanDisk Corporation: MultiMediaCard and Reduced-Size MultiMediaCard Product Manual (produktov´ y manu´ al) http://www.sandisk.com/Assets/File/OEM/Manuals/ProdManRS-MMCv1.3.pdf [2] MultiMediaCard Association: The MultiMediaCard System Summary (manu´ al) http://www.mmca.org/compliance/buy spec/MMCA System SummaryV41.pdf [3] Silicon Labs: C8051F350/1/2/3 8k ISP Flash MCU Family (katalogov´ y 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? (ˇ cl´ anek) http://developer.intel.com/design/flash/articles/what.htm [6] Wikipedia.org: Master boot record (ˇ cl´ anek) http://en.wikipedia.org/wiki/Mbr [7] Wikipedia.org: File Allocation Table (ˇ cl´ anek) http://en.wikipedia.org/wiki/File Allocation Table
30
KAPITOLA 7. SEZNAM LITERATURY
ˇ YCH ´ KAPITOLA 8. SEZNAM POUZIT ZKRATEK
8 Seznam pouˇ zit´ ych 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
31
32
ˇ YCH ´ KAPITOLA 8. SEZNAM POUZIT ZKRATEK
ˇ ˇ EHO ´ KAPITOLA 9. OBSAH PRILO ZEN CD
33
9 Obsah pˇ riloˇ zen´ eho CD \index.html
v´ ychoz´ı str´ anka projektu
\content.html
popis obsahu CD
\text\
textov´a ˇc´ast pr´ ace v TeXu a PDF
\src\
adres´aˇr se zdrojov´ ymi k´ody projektu
\datasheets\
adres´aˇr s pouˇz´ıvan´ ymi datasheety