Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
12.02.2016
Размер:
1.46 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»

ПОБУДОВА СИСТЕМИ ЗБЕРІГАННЯ ІНФОРМАЦІЇ НА MMC/SD FLASH-КАРТАХ ПАМ’ЯТІ

З ПІДТРИМКОЮ ФАЙЛОВОЇ СИСТЕМИ FAT16

Методичні вказівки до лабораторної роботи № 5

з курсу “ Системи запису та відтворення інформації ” для студентів базового напряму 6.170102 “Системи технічного захисту інформації”

Затверджено

на засiданнi кафедри "Захист інформації" Протокол № вiд ..2009 p.

Львів 2009

Побудова системи зберігання інформації наMMC/SD Flash-картах пам’яті з підтримкою файлової системи FAT16: Методичні вказівки до лабораторної роботи № 5 з курсу ”Системи запису та відтворення інформації” для студентів базового напряму"6.170102 “Системи технічного захисту інформації” / Укл. Я. Р. Совин - Львiв: Національний університет "Львівська політехніка", 2009. – 21 с.

Укладачі:

Я. Р. Совин, к.т.н., доцент

Вiдповiдальний за випуск:

Рецензент:

1

Мета роботи – набути вміння організовувати файловий ввід-вивід даних наFlash-носіях інформації в портативних аудіо/відеопристроях.

1. ТЕОРЕТИЧНІ ВІДОМОСТІ

Завдяки високим параметрам модулі MultiMedia Card (MMC) та Secure Digital (SD) Card

ідеально відповідають вимогам, що пред’являються до накопичувачів даних, орієнтованих на застосування в мобільних пристроях запису і відтворення інформації різного призначення.

1.1. MULTIMEDIA CARD

Всередині карти пам’яті (як MMC так і SD) міститься NAND-флеш масив і вбудований контролер, що виконує функції управління та обміну даними з зовнішніми пристроями (рис. 1).

Рис. 1.

В даний час випускаються ММС-карти пам’яті об’ємом від32 до 1024 Мбайт. Обмін даними здійснюється в послідовному форматі. Для підключення картка має всього сім металізованих контактів. Напруга живлення карти(1.8...3.6)/(2.7...3.6) В. Передача даних проводиться з тактовою частотою до 20 МГц. Габаритні розміри ММС-карт 32.0x24.0x1.4 мм.

Архітектура ММС-карт приведена на рис. 2. Крім масиву NAND-флеш пам’яті та внутрішнього контролера карти також містять спеціальні регістри, які зберігають поточний стан та налаштування карти пам’яті.

Power on detection

Рис. 2.

Для передачі команд використовується двонаправлена лінія вводу/виводуCMD/DI, для обміну даними – DAT0/DO. Тактування даних здійснюється сигналомCLK, який формується хост-процесором. Контролер ММС-карти окрім стандартного ММС-протоколу підтримує також прийом/передачу даних з використаннямSPI-інтерфейсу. Перемикання в цей режим обміну

2

даними виконується на програмному рівні.

Недоліки: порівняно невелика швидкість обміну даними.

Переваги: мініатюрні розміри, низький рівень енергоспоживання, висока надійність, порівняно невисока вартість.

1.2.SECURE DIGITAL CARD

Упорівнянні зMultiMedia Cards в картах Secure Digital число контактів збільшене до дев’яти (рис. 3). Контакти виконані у вигляді металізованих площадок. На відміну від ММСкарт інформація може передаватися не по одній лінії даних, а одночасно по декількох (всього до чотирьох DAT0-DAT3), що дозволяє збільшити швидкість обміну. Передача даних виконується

зтактовою частотою до25 МГц. Габаритні розміри 24.0x32.0x2.1 мм, маса 2 г. Струм споживання не перевищує 100 мА.

Рис. 3

Переваги: низький рівень енергоспоживання, невеликі розміри, порівняно великий об'єм пам'яті і висока швидкість запису/читання, сумісність з ММС-картами(у слот дляSD-карти можна встановлювати картку ММС, але не навпаки).

Окрім SD-карт випускаються також miniSD-карти, що мають габаритні розміри всього 21.5x20.0x1.4 мм. Об’єм пам’яті карт цього типу становить від64 до 512 Мбайт, максимальна швидкість читання 7.8, запису – 5.5 Мбайт/с.

MiniSD-карти мають одинадцять контактів. Зважаючи на різну ширину карт, неможливо безпосередньо встановити картуminiSD в слот, призначений для SD-карт, а лише з використанням спеціальних адаптерів.

1.3. Інтерфейс MMC/SD-карт пам’яті

Розташування контактних площадок SD-карти пам’яті представлено на рис. 4.

3

Рис. 4.

Номер

Назва

Призначення

 

 

Призначення

 

 

виводу

(SD Mode)

 

 

(SPI Mode)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– Chip Select. Лінія вибору

карти. Операції

1

DAT3/

 

 

Лінія даних 3

CS

CS

 

обміну даними з картою відбуваються при CS = 0.

 

 

 

 

 

Вхід.

 

 

2

CMD/DI

Лінія команд

Master Out Slave In (MOSI). Лінія

прийому

(Data

Input) даних від хост-контролера. Вхід.

 

 

 

 

 

 

 

3

GND

Земля

Земля.

 

 

4

VCC

Живлення

Живлення.

 

 

5

CLK

Тактові імпульси

 

Тактові імпульси. Вхід.

 

 

6

GND

Земля

Земля.

 

 

7

DAT0/DO

Лінія даних 0

Master In Slave Out (MISO). Лінія

передачі

(Data

Output) даних в хост-контролер. Вихід.

 

 

 

 

 

 

 

8

DAT1/IRQ

Лінія даних 1

NC (Not Connected) – не використовується. Вхід.

9

DAT2/NC

Лінія даних 2

NC (Not Connected) – не використовується. Вхід.

 

 

 

 

 

 

 

 

 

 

SD-карти пам’яті є сумісні з MMC-картами в режимі SPI (рис. 5).

 

 

 

 

Рис. 5.

 

 

 

 

 

 

 

Номер

Відповідність між виводами MMC- і SD-карт в режимі SPI

виводу

 

MMC-карта

 

SD-карта

1

 

 

(Chip Select)

 

DAT3/

 

(Chip Select)

CS

CS

 

 

 

 

4

 

 

 

2

CMD/DI (Command/ Data Input)

CMD/DI (Command/ Data Input)

3

GND

GND

4

VCC

VCC

5

CLK (Clock)

CLK (Clock)

6

GND

GND

7

DAT0/DO (Data Output)

DAT0/DO (Data Output)

8

NA

DAT1

9

NA

DAT2

Пам’ять MMC/SD-карт розбита на сектори розміром 512 байт (переважно), подібно як це зроблено у жорстких дисках (рис. 6). Запис і читання здійснюється також секторами.

Sector № 00

Sector № 01

Sector № 02

Sector № 31 998

Sector № 31 999

Рис. 6.

1.4. Управління MMC/SD-картами

MMC карти можуть працювати в двох режимах обміну – MultiMediaCard Protocol і SPI Protocol. SD карти можуть працювати в трьох режимах обміну– SD 1-bit Protocol, SD 4-bit Protocol і SPI Protocol. Надалі будемо розглядати саме SPI-інтерфейс, оскільки він підтримується обома типами карт і є простим в реалізації для мікроконтролерів.

Підключення MMC/SD-карт до мікроконтролера в режиміSPI-інтерфейсу та напрями передачі інформації наведено на рис. 7.

5

Рис. 7.

Для обміну даними з картою пам’яті черезSPI-інтерфейс хост-МК встановлює сигнал

вибірки CS в активний низький рівень(логічний 0). Далі хост-МК формує тактові імпульси на лінії CLK . По кожному тактовому імпульсу МК передає карті1 біт інформації по лінії DI та зчитує 1 біт з лінії DO . Прийом і передача здійснюється за переднім фронтом імпульсів CLK. Тобто прийом і передача ведуться паралельно (рис. 8).

Рис. 8.

Протокол MMC/SD-карт є протоколом типу"команда-відповідь". Всі команди посилає хост-МК. MMC/SD-карти відсилають відповідь на команду (Response), а також можуть посилати токени (Token), які вказують початок даних або причину помилки.

Команди позначаються CMDXX, де ХХ – номер команди. Команди передаються пакетами по 6 байт. Перший байт команди завжди містить біти 01, далі йде 6-бітний номер команди. Наступні 4 байти – аргумент команди (першим передається старший байт). Останній байт містить 7-бітний CRC та стоповий біт рівний 1. Команди пересилаються через лінію MOSI. В режимі SPI-інтерфейсу біти CRC не використовуються і можуть містити будь-які значення.

Формат SD-команд

 

Байт 1

Байти 2-5

Байт 6

 

0

1

Команда

Аргумент команди (старший байт перший)

CRC

1

При роботі MMC/SD-карт в режимі SPI доступні близько 15 команд, що дозволяють поперше отримати повну інформацію про тип і поточний стан карти, по-друге проводити запис і читання даних. Розглянемо лише 5 команд, за допомогою яких можна читати та записувати дані з MMC/SD-карт блоками.

Табл. Основні команди MMC/SD-карт

Номер

Аргумент

Позначення

Опис

6

команди

 

 

 

 

 

 

 

 

 

CMD0

відсутній

 

GO_IDLE_STATE

Скидання.

Код

команди 0x40,

0x00,

 

 

0x00, 0x00, 0x00, 0x95.

 

 

 

 

 

 

 

 

 

 

CMD1

відсутній

 

SEND_OP_COND

Ініціалізація. Код

команди 0x41,

0x00,

 

 

0x00, 0x00, 0x00, 0xFF.

 

 

 

 

 

 

 

 

 

 

CMD16

[31:0] довжина блоку

SET_BLOCKLEN

Встановити розмір блоку. Код команди

 

0x50, Size, Size, Size, Size, 0xFF.

 

 

 

 

 

 

 

 

CMD17

[31:0] адреса

блока

READ_SINGLE_BLOCK

Прочитати

блок

даних

розміром,

вказаним

SET_BLOCK_LEN.

Код

 

 

 

 

команди 0x51, Adr, Adr, Adr, Adr, 0xFF

CMD24

[31:0] адреса

блока

WRITE_SINGLE_BLOCK

Записати блок даних розміром, вказаним

 

SET_BLOCK_LEN. 0x58, Adr, Adr, Adr,

 

 

 

 

Adr, 0xFF.

 

 

 

 

 

На кожну розглянуту вище команду карти видають відповідь типуR1. Відповідь R1 складається з одного байта, старший біт байту завжди рівний 0. Інші біти – прапорці помилок (1

– є помилка, 0 – немає).

Response R1

Байт Біт

Призначення

7 Start Bit. Завжди рівний0.

6Parameter Error. Аргумент команди поза допустимими межами для даної карти.

5Address Error. Помилкова адреса.

4Erase Sequence Error. Помилка в команді стирання.

13 CRC Error. Остання прийнята команда не пройшла перевіркуCRC.

2Illegal Command. Виявлений неприпустимий номер команди.

1

Erase Reset. Стирання не виконане, так як операція перервана до завершення

виконання.

 

0

In Idle State. Карта знаходиться в сплячому режимі і виконується процес ініціалізації.

 

Ініціалізація карти

Перед роботою карту необхідно правильно ініціалізувати. Для цього через декілька мілісекунд після подачі живлення потрібно подати в карту SPIпо -інтерфейсу не менше74

тактових імпульсів по лінійCLK і почекати ще 1 мс. Весь цей час на лінії CS повинна бути логічна "1". Тепер карта готова до прийому команд. Для переводу карти в режимSPI треба відправити команду CMD0 (Скидання). Команда CMD0 має вигляд: 0x40, 0x00, 0x00, 0x00, 0x00, 0x95. Далі слід посилати холості байти, доки не отримаємо відповіді R1 = 0x01 (рис. 9).

Рис. 9.

Далі потрібно послати командуCMD1 (Ініціалізація) до тих пір, поки не отримаємо у відповідь байт R1 = 0х00 (рис. 10). Це означатиме, що карта готова до роботи. Тепер можна посилати інші команди (CMD16, CMD17 і т. п.).

7

Рис. 10.

Читання/запис даних

Для читання одного блоку (сектора) мікроконтролер виставляє сигнал 0 на лінію CS . Далі посилає команду CMD17 (READ_SINGLE_BLOCK). Потім хост читає дані по шині SPI поки у відповідь карта не видасть токен зі значенням0хFE. Після отримання відповіді0хFE хост-МК зчитує з карти 512 байт даних та 2 контрольні байти CRC (розраховані для твірного поліному x16 + x12 + x5 +1 ). Їх вміст в режиміSPI можна ігнорувати, але прочитати потрібно

обов’язково! Після закінчення обміну потрібно подати 1 на лінію CS (рис. 11).

Рис. 11.

У випадку виникнення помилки в процесі читання карта видає спеціальний токен, який містить код помилки (рис. 12).

CS

 

 

Від хоста

 

 

 

 

 

 

 

 

Наступна

 

 

 

 

 

 

 

 

 

 

команда

 

 

до карти

 

 

 

Від карти

 

Від карти

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

до хоста

 

до хоста

 

 

 

DataIn

Command

 

 

 

 

 

 

Command

 

 

CMD17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DataOut

 

 

 

Responce

 

Data Error

 

 

 

 

 

 

 

Token

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 12.

 

 

 

 

 

 

 

 

 

 

Read Error Token

 

 

 

Байт

 

Біт

 

 

 

 

 

 

Призначення

 

 

 

 

 

7

 

Завжди

рівний0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

Завжди

рівний0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

Завжди

рівний0.

 

 

 

 

 

 

1

 

 

 

 

 

 

4

 

Card Locked. Карта блокована - доступ не дозволений, так як карта захищена паролем.

 

 

 

 

 

 

 

 

 

 

 

3

 

Out of Range. Аргумент команди поза допустимими межами.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

2

Card ECC Failed. Алгоритм ЕСС (Error Correction Code) не зміг відновити дані.

 

 

 

 

 

 

1

Card Controller Error. Збій внутрішнього контролера.

 

 

 

 

 

 

0

Unspecified Error. Невідома помилка - збій з невідомої причини.

 

 

 

 

 

 

 

 

 

 

Для запису одного блоку (сектора) мікроконтролер виставляє сигнал 0 на лінію CS . Далі посилає команду CMD24 (WRITE_SINGLE_BLOCK). Потім хост-МК зчитує відповідь від карти типу R1. Якщо помилок немає (R1 = 0x00) хост передає токен початку даних зі значенням 0хFE. Після цього хост-мікроконтролер передає в карту512 байт даних та2 контрольні байти. Контрольні байти в режимі SPI можуть мати довільне значення, але передати потрібно обов'язково. Далі хост очікує відповіді від карти, яка має наступний формат:

Біт 7

Біт 6

Біт 5

Біт 4

Біт 3-1

Біт 0

 

 

 

 

 

 

х

х

х

0

Status

1

 

 

 

 

 

 

Status = 010 – Дані прийняті;

Status = 101 – Дані відкинуті через помилку CRC; Status = 110 – Дані відкинуті через помилку запису.

Отримавши значення ххх00101 хост-мікроконтролер очікує відповіді від карти типу R1 = 0х00. Отримання цієї відповіді означає, що карта пам’яті успішно завершила операцію запису і

готова до наступних операцій. Після закінчення обміну потрібно подати 1 на лінію CS (рис. 13).

Рис. 13.

Як правило, на MMC/SD-карти пам’яті встановлюється файлова система(переважно FAT16, для карт великого об’єму– FAT32). Тому на хост-мікроконтролер додатково покладаються функції читання/запису файлів, а не просто секторів (рис. 14).

Рис. 14.

9

Соседние файлы в папке MMC_SD_FAT16