7 лучших программ для просмотра фотографий и изображений

Как использовать карты памяти mmc/sdc | file-systems | programming

Перевод замечательной статьи, рассказывающей про тонкости применения популярных карт памяти (MMC, SD, SDHC, SDC, miniSD, microSD) в малых встраиваемых проектах на микроконтроллерах.

Карты FLASH памяти Secure Digital Memory Card (далее сокращенно SDC) являются стандартом де-факто для расширения памяти мобильных устройств. SDC были разработаны с учетом обратной совместимости с картами памяти Multi Media Card (далее сокращенно MMC). SDC-совместимое оборудование может также использовать во многих случаях и карты MMC (причем в слот для карты SD обычного размера можно установить карту MMC). Имеются также версии карт уменьшенного посадочного размера, известные как RS-MMC, miniSD и microSD, которые функционируют точно так же, как и карты большого размера. Карты MMC/SDC имеют встроенный микроконтроллер. Управление памятью flash (очистка erase, чтение, запись, обработка ошибок и выравнивание износа ячеек – wearleveling) полностью осуществляются внутри карты памяти. Данные передаются между картой памяти и внешним управляющим контроллером (host controller) в виде блоков данных по 512 байт (минимальная единица информации карты памяти), так что карту можно рассматривать как простой стандартный привод жесткого диска с точки зрения слоев ввода-вывода верхнего уровня. В настоящее время для карт памяти применяется файловая система FAT12/16 по правилам создания разделов FDISK. Файловая система FAT32 применяется только для карт памяти высокой емкости (>= 4 гигабайта).

В этой статье рассмотрены основные знания и различные тонкости, которые нужно учитывать при использовании MMC/SDC вместе с малой встраиваемой системой (small embedded system) на микроконтроллере. Автор надеется, что эта информация окажется полезной как указания по быстрому старту людям, которые начинают использовать MMC/SDC в своих собственных самодельных проектах.

Цоколевка карт памяти

На фотографии показана контактная поверхность карты памяти SDC/MMC (а также карт miniSD и microSD). MMC имеет 7 контактов, а SDC имеет 9 контактов, из которых два добавочных по сравнению с MMC. 3 контакта назначены для подключения питания (power supply), так что количество сигналов данных составляет 4 для MMC и 6 для SDC. Таким образом, обмен данными между хостом и картой осуществляется через синхронный последовательный интерфейс.

Рабочее питающее напряжение индицируется через регистр корректных операций (operation conditions register, OCR), который должен быть прочитан, чтобы удостовериться, что питающее напряжение находится в допустимом рабочем диапазоне. Однако, питающее напряжение может быть зафиксировано на уровне 3.0/3.3 вольта, потому что все карты MMC/SDC работают в диапазоне питающих напряжений от 2.7 до 3.6 вольта как минимум. Потребление тока на операциях записи может достигать нескольких десятков миллиампер, поэтому система хоста (куда подключена карта) должна обеспечить мощность питающего напряжения 100 мА для питания карты.

Режим SPI (SPI Mode)

Этот документ описывает протокол для управления картами MMC/SDC в режиме SPI (SPI mode). Режим SPI является альтернативным вариантом функционирования, который определен для использования с MMC/SDC без традиционного интерфейса хоста (native host interface). Протокол коммуникации для режима SPI прост в сравнении с обычным режимом работы (native operating mode). Карта MMC/SDC может быть подключена к микроконтроллеру хоста через стандартный интерфейс SPI или обычные порты ввода/вывода GPIO. Таким образом, режим SPI хорошо подходит для недорогих встраиваемых приложений. Специально нет необходимости пытаться использовать native mode с дешевым микроконтроллером, так как у него наверняка не окажется соответствующего native host interface. Для карт SDC режим SPI mode 0 определен как собственный режим SPI. Для MMC нет тайминга SPI, оба действия фиксации и сдвига заданы по фронту сигнала SCLK, однако это также работает в SPI mode 0 для режима SPI. Таким образом, режим SPI Mode 0 (CPHA=0, CPOL=0) является правильной установкой для интерфейса MMC/SDC, но режим SPI mode 3 также хорошо работает во многих случаях.

Команда (Command) и ответ (Response)

В режиме SPI mode направление данных на сигнальных линиях фиксировано и данные передаются через байт-ориентированное последовательное соединение. Фрейм команды от хоста к карте фиксирован по длине (6 байт) пакета, который показан ниже. Когда фрейм команды передается в карту, то обратно из карты передается ответ на команду (R1, R2 или R3). Поскольку передача данных тактируется от хоста по специальной линии SCLK (выход хоста, вход карты), хост должен продолжать читать байты пока идет прием любого допустимого ответа карты. Сигнал DI (вход карты, выход хоста) должен удерживаться на высоком уровне во время передачи чтения (путем передачи хостом 0xFF и получения принятых данных). Ответ от карты посылается обратно в течение времени ответа на команду command response time (NCR), от 0 до 8 байт для SDC, и от 1 до 8 байт для MMC. Сигнал CS (выборка карты) должен быть установлен в низкий уровень перед отправкой фрейма команды и удерживаться в нижнем уровне в течение транзакции (command, response и передача данных data transfer, если таковые имеются). Возможность проверки CRC в режиме SPI является опциональной (необязательной), однако поле CRC всегда требуется для для составления фрейма команды.

FatFS cmd

Когда карта подключена native-способом (не через SPI), то все ответы на команду передаются через специальный сигнал команд CMD, и для обычной карты (SDC/MMC/SDHC) имеются типы ответов R1, R1b, R2, R3, R7. Когда карта подключена через SPI, то ответы передаются через сигнал выхода данных карты, и количество ответов ограничено типами R1, R1b, R2, R3. Карта SDIO имеет дополнительные типы ответов R4 и R5, для получения описания команд и ответов карт SDIO см. соответствующую спецификацию стандарта по картам SDIO.

Передача потока бит ответа всегда начинается с левого (старшего) бита для соответствующего кодового слова. Длина потока бит ответа зависит от типа ответа. Начальный бит является стартовым (он всегда равен 0), за ним идет бит, обозначающий направление передачи (для карты он равен 0). Значения, показанные как X в таблицах ниже, показывают изменяемое поле бит. Все типы ответа, кроме R3, защищены контрольной суммой CRC7. Каждое кодовое слово команды заканчивается битом окончания (всегда равен 1).

[R1 (обычный ответ на команду)]

Длина этот типа ответа составляет 48 бит (6 байт). Биты 45:40 показывают индекс команды, на которую выполнен ответ, это значение интерпретируется как двоичное число (значение от 0 до 63). Состояние карты (статус) кодируется в 32 битах (описание статуса карты см. во врезке “Card Status”). Обратите внимание, что если вовлечена передача данных в карту, то может появиться сигнал занятости на линии данных после передачи каждого блока данных (касается native-подключения карты). Хост должен проверять занятость после передачи каждого блока.

Таблица 4-29. Response R1.

[R1b]

Ответ R1b идентичен ответу R1 с опциональным сигналом занятости, передаваемым по линии данных выхода карты. Карта может оказаться занятой внутренней операцией после получения команд, в зависимости от её состояния перед приемом команды. Хост должне проверять занятость карты на каждом ответе карты.

[R2 (содержимое регистров CID, CSD)]

Длина этого ответа составляет 136 бит. Содержимое регистра CID (идентификатор карты) посылается в ответ на команды CMD2 и CMD10. Содержимое регистра CSD (параметры карты) передается в ответ на команду CMD9. Передаются только биты [127…1] регистров CID и CSD, зарезервированный бит [0] этих регистров заменяется конечным битом ответа.

Таблица 4-30. Response R2.

[R3 (регистр OCR)]

Длина этого ответа составляет 48 бит. Содержимое регистра OCR (operation conditions register) посылается в ответ на команду ACMD41.

Таблица 4-31. Response R3.

[R6 (Published RCA)]

Для карты, подключенной через SPI, этот тип ответа не используется, потому что в этом режиме подключения команда CMD3 не поддерживается.

Длина ответа R6 составляет 48 бит. Биты 45:40 показывают индекс команды, на которую произведен ответ – в этом случае индекс будет равен 000011 (вместе с битом 5 битов статуса это будет означать = CMD3). 16 MSB старших бит в поле аргумента (Argument) используются для передачи номера Published RCA.

Таблица 4-32. Response R6.

[R7 (Card interface condition)]

Это состояние интерфейса карты, длина ответа 48 бит. Поддерживаемое напряжение карты посылается в ответ на команду CMD8. Биты 19..16 показывают диапазон рабочих напряжений, которые может поддерживать карта. Карта, которая приняла предоставленное напряжение, вернет ответ R7. В этом ответе карта эхом передаст обратно диапазон напряжения и маску битов проверки (check pattern), переданный в аргументе команды.

Таблица 4-33. Response R7.

В таблице 4-34 показан формат поля ‘voltage accepted’ в R7.

Таблица 4-34. Поле Voltage Accepted в ответе R7.

Ответ формата R1 содержит 32-битное поле, которое называется card status (состояние карты). Это поле предназначено для передачи информации о состоянии карты (которая может быть сохранена в локальном регистре статуса) к хосту. Если не указано нечто иное, записи в статусе всегда относятся к ранее выданной команде. Таблица 4-35 определяет различные записи статуса. Поля типа (Type) и условия очистки (Clear Condition) обозначены сокращениями следующим образом:

Type (тип)

E: бит ошибки (Error).
S: бит статуса (Status).
R: детектирована и установлена информация для актукального ответа на команду.
X: детектирована и установлена информация во время выполнения команды. Хост может получить статус выдачей команды с ответом R1.

Clear Condition (условие очистки)

A: информация соответствует текущему состоянию карты.
B: всегда относится к предыдущей команде. Прием допустимой команды очистит это (с задержкой на одну команду).
C: очищено чтением.

Таблица 4-35. Card Status.

БитыИдентификаторTypeЗначениеОписаниеClear Condition
31OUT_OF_RANGEE R X0: нет ошибки,
1: ошибка
Аргумент команды вышел за пределы допустимого диапазона для этой карты.C
30ADDRESS_ERRORE R X0: нет ошибки,
1: ошибка
Ошибочно выровненный адрес, который не соответствует длине блока, который использовался в команде.C
29BLOCK_LEN_ERRORE R X0: нет ошибки,
1: ошибка
Длина передаваемого блока не допустима для этой карты, или количество передаваемых байт не соответствует длине блока.C
28ERASE_SEQ_ERRORE R0: нет ошибки,
1: ошибка
Произошла ошибка в последовательности команд стирания.C
27ERASE_PARAME R X0: нет ошибки,
1: ошибка
Произошел недопустимый выбор записываемых блоков для стирания.C
26WP_VIOLATIONE R X0: не защищена,
1: защищена
Устанавливается, когда хост попытался выполнить запись в защищенный блок либо на временно защищенную от записи, либо на постоянно защищенную от записи карту.C
25CARD_IS_LOCKEDS X0: карта не заблокирована,
1: карта заблокирована
Если установлен, то сигнализирует, что карта заблокирована хостом.A
24LOCK_UNLOCK_FAILEDE R X0: нет ошибки,
1: ошибка
Устанавливается, когда была детектирована ошибка пароля в команде блокировки/разблокировки карты.C
23COM_CRC_ERRORE R0: нет ошибки,
1: ошибка
Ошибка CRC предыдущей команды.B
22ILLEGAL_COMMANDE R0: нет ошибки,
1: ошибка
Команда недопустима для текущего состояния карты.B
21CARD_ECC_FAILEDE R X0: успешное завершение,
1: ошибка
Была применена внутренняя ECC, но произошла ошибка для корректных данных.C
20CC_ERRORE R X0: нет ошибки,
1: ошибка
Ошибка внутреннего контроллера карты.C
19ERRORE R X0: нет ошибки,
1: ошибка
Во время выполнения операции произошла общая или неизвестная ошибка.C
18Зарезервировано
17
16CSD_OVERWRITEE R X0: нет ошибки,
1: ошибка
Произошла одна из следующих ошибок:
– Секция только для чтения CSD не соответствует содержимому карты.
– Попытка реверса копирования (копирование в место источника), или ошибка защиты от записи.
C
15WP_ERASE_SKIPE R X0: нет защиты от записи,
1: защита от записи
Устанавливается, когда была очищена только часть адресного пространства – из-за наличия защищенных от записи блоков, или очищалась карта, временно или постоянно защищенная от записи.C
14CARD_ECC_DISABLEDS X0: разрешено,
1: запрещено
Была выполнена команда без внутреннего ECC.A
13ERASE_RESETS R0: очищено,
1: установлено
Была очищена последовательность стирания перед выполнением, потому что была принята команда выхода из последовательности стирания.C
12:9CURRENT_STATES X0: idle
1: ready
2: ident
3: stby
4: tran
5: data
6: rcv
7: prg
8: dis
9..14:зарезервировано
15: зарезервировано для режима I/O
Состояние карты, когда принимается команда. Если выполнение команды приводит к изменению состояния карты, это увидит хост в отвт на следующую команду. Эти 4 бита интерпретируются как двоичное число со значением в диапазоне от 0 до 15.B
8READY_FOR_DATAS X0: нет готовности,
1: готовность к данным
Соответствует сигнализации по шине, что буфер пуст.A
7:6Зарезервировано
5APP_CMDS R0: запрещено,
1: разрешено
Карта ожидает ACMD, или показывается, что команда была интерпретирована как ACMD.C
4Зарезервировано для карты SD I/O.
3AKE_SEQ_ERROR (специфика приложения SD Memory Card)E R0: нет ошибки,
1: ошибка
Ошибка в последовательности аутентикации.C
2Зарезервировано для команд, специфичных для приложения.
1:0Зарезервировано для режима тестирования производителя.

Для каждой команды, на которую приходит ответ R1, в следующей таблице определены биты в статусе, на которые влияет эта команда. Символ ‘x’ в таблице обозначает, что бит ошибки/статуса может быть установлен в ответ на соответствующую команду.

Таблица 4-36. Взаимосвязь между полями статуса карты и командами.

Примечания:

(1) Ответ на команду CMD3 это ответ R6, который включает в себя только биты 23, 22, 19 и 12:9 из информации Card Status.
(2) Эта команда была определена в версии 1.10.

SD Status содержит биты статуса, которые относятся к проприетарным функциям карт памяти SD, и они могут быть полезны для будущего использования в зависимости от приложения. Размер SD Status – один блок данных из 512 бит. Содержимое этого регистра передается хосту через шину данных (DAT) вместе с 16-битной CRC. SD Status отправляется к хосту по шине DAT как ответ на команду ACMD13 (CMD55, которая следует с CMD13). ACMD13 может быть отправлена в карту только в состоянии tran_state (карта выбрана). Ниже описана структура SD Status.

:/>  Как узнать ключ продукта Windows 10 — Все способы определения

Для типа (Type) и условий очистки (Clear Condition) используются те же сокращения, какие были показаны во врезке “Card Status” выше.

Таблица 4-37. SD Status.

БитыИдентификаторTypeЗначениеОписаниеClear Condition
511:510DAT_BUS_WIDTHS R00: 1 (по умолчанию),
01: зарезервировано,
10: 4 бита,
11: зарезервировано
Показывает текущую определенную шинину шины, как это было задано командой SET_BUS_WIDTH.A
509SECURED_MODES R0: не в режиме защиты,
1: в режиме защиты
Показывает, находится ли карта в защищенном режиме (см. SD Security Specification).A
508:496Зарезервировано
495:480SD_CARD_TYPES R00xxh: карта SD Memory, как это определено в стандарте Ver1.01-2.00. В настоящее время определены следующие карты: 0000 это обычные карты SD RD/RW, 0001 это карты SD ROM.В будущем 8 младших бит будет использовано для определения различных вариаций карт SD Memory (каждый бит определит разные типы SD). Старшие 8 бит будут использоваться для определения карт SD, которые не соответствуют текущей спецификации SD Physical Layer.A
479:448SIZE_OF_PROTECTED_AREAS RРазмер защищенной области.См. описание ниже.A
447:440SPEED_CLASSS RКласс скорости карты.См. описание ниже.A
439:432PERFORMANCE_MOVES RБыстродействие при перемещении данных в шагах по 1 мегабайту/сек.См. описание ниже.A
431:428AU_SIZES RРазмер AU (единица данных, allocation unit).См. описание ниже.A
427:424Зарезервировано
423:408ERASE_SIZES RКоличество AU для стирания за 1 операцию.См. описание ниже.A
407:402ERASE_TIMEOUTS RЗначение таймаута для очистки областей, указанных через UNIT_OF_ERASE_AU.См. описание ниже.A
401:400ERASE_OFFSETS RФиксированное значение смещения, добавляемое для времени стирания.См. описание ниже.A
399:312Зарезервировано
311:0Зарезервировано для производителя.    

SIZE_OF_PROTECTED_AREA. Установка этого поля отличается для стандартных карт (Standard Capacity Card) и карт большой емкости (High Capacity Card). В случае Standard Capacity Card емкость защищенной области вычисляется следующим образом:

Protected Area (размер защищенной области) = SIZE_OF_PROTECTED_AREA_* MULT * BLOCK_LEN

Здесь SIZE_OF_PROTECTED_AREA указывается в единицах MULT*BLOCK_LEN.

В случае High Capacity Card емкость защищанной области указывается в этом поле так:

Protected Area (размер защищенной области) = SIZE_OF_PROTECTED_AREA

Здесь SIZE_OF_PROTECTED_AREA указывается в байтах.

SPEED_CLASS. Это 8-битное поле показывает класс скорости (Speed Class), и значение можно вычислить через Pw/2.

Таблица 4-38. Поле кода Speed Class.

PERFORMANCE_MOVE. Это 8-битное поле показывае Pm, и это значение может быть установлено с шагом 1 [MB/sec]. Если карта не использует move RU, то Pm должно считаться бесконечностью. Установка в FFh означает бесконечность.

Таблица 4-39. Поле Performance Move.

AU_SIZE. Это 4-битное поле показывает разер AU, и это значение может быть выбрано в степенях 2, умноженное на 16 KB.

Таблица 4-40. Поле AU_SIZE.

Максимальный размер AU зависит от емкости карты, что определено в таблице 4-41. Карта может установить любой размер AU между размером RU и максимальным размером AU.

Таблица 4-41. Максимальный размер AU.

Указания по применению: хост должне использовать максимальный размер AU (4 MB), чтобы определить размер буфера хоста. Хост может обрабатывать несколько AU, скомбинированных в один юнит.

ERASE_SIZE. Это 16-битное поле показывает NERASE. Когда стерто NERASE AU, знаение таймаута указывается через ERASE_TIMEOUT (см. ниже ERASE_TIMEOUT). Хост должен определить правильное количество AU для стирания, чтобы хост мог корректно отобразить состояние прогресса операции стирания. Если это поле установлено в 0, то вычисление таймаута стирания не поддерживается.

Таблица 4-42. Поле размера стирания (Erase Size).

ERASE_TIMEOUT. Это 6-битное поле показывает время TERASE, и это значение означает таймаут стирания от смещения, когда стирается несколько AU, как задано ERASE_SIZE. Диапазон ERASE_TIMEOUT можно определить до 63 секунд, и производитель карты может выбрать любую комбинацию ERASE_SIZE и ERASE_TIMEOUT в зависимости от реализации карты. Как только был определен ERASE_TIMEOUT, он определяет ERASE_SIZE. Хост может определить таймаут для любого количества стираемых AU. Для вычисления таймаута стирания см. пункт 4.14 даташита [8]. Если поле ERASE_SIZE установлено в 0, тр это поле должно быть установлено в 0.

Таблица 4-43. Поле Erase Timeout.

ERASE_OFFSET. Это 2-битное поле показывает смещение TOFFSET, и можно выбрать одно из 4 значений. Смещение стирания подстраивает строку путем параллельного перемщения на верхнюю сторону. Подробнее см. рис. 4-11 и выражение (6) в пункте 4.14 даташита [8]. Это поле бесполезно, если поля ERASE_SIZE и ERASE_TIMEOUT установлены в 0.

Таблица 4-44. Поле Erase Offset.

Набор команд SPI (SPI Command Set)

Каждая команда выражена в сокращении типа GO_IDLE_STATE или CMD, число в индексе команды равно величине от 0 до 63. В таблице ниже описаны только команды, которые обычно используют для стандартных операций чтения записи (generic read/write) и инициализации карты. Подробности по каждой команде см. в спецификации от MMCA и SDCA.

Ответ SPI (SPI Response)

FatFS cresp

Имеется три формата ответа на команду, R1, R2 и R3, в зависимости от индекса команды. Байт ответа R1 возвращается в на большинство команд. Битовые поля ответа R1 показаны на рисунке, значение 0x00 означает успешное завершение команды. Когда происходит любая ошибка, будет установлен соответствующий бит статуса в ответе. Ответ R3 (R1 и завершающее 32-битное значение OCR) применяется только для CMD58.

Некоторым командам нужно больше времени NCR и они отвечают R1b. Это ответ R1, за которым идет флаг занятости (DO удерживается в низком уровне, пока продолжается внутренний процесс). Контроллер хоста должен ждать окончания процесса, пока DO не перейдет в состояние высокого уровня (пока не будет принято 0xFF).

Процедура инициализации в режиме SPI

После сброса после включения питания карта MMC/SDC входит в рабочий режим native (это не SPI). Чтобы перейти в режим SPI, нужно провести следующую процедуру, наподобие показанной на рисунке.

FatFS-sdinit

Включение питания (установка карты в слот)

После того, как напряжение питания возрастет до 2.2 вольт, нужно подождать как минимум миллисекунду. Установите тактовую частоту SPI (clock rate) между 100 кГц и 400 кГц. Установите сигналы DI и CS в состояние высокого уровня, и выведите 74 или большее количество импульсов тактов на сигнале SCLK. Карта войдет в режим работы native, и будет готова к приему команд native.

Программный сброс (Software Reset)

Пошлите команду CMD0 с установленным в низкий уровень сигналом CS для сброса карты. Карта при активной выборке CS (активный уровень 0) успешно примет команду CMD0. Если сигнал CS в низком уровне, то карта войдет в режим SPI и ответит R1 с установленным битом ожидания (In Idle State bit 0x01). Поскольку CMD0 должна быть отправлена как команда native, то поле CRC должно содержать корректное значение. Когда карта войдет в режим SPI, функция CRC будет запрещена и CRC не будет проверяться картой, поэтому подпрограмма передачи команды может передавать жестко закодированное значение CRC, которое будет достоверно только для команды CMD0 и для команды CMD8 с аргументом ноль. Опция CRC может быть также переключена командой CMD59.

Инициализация

В состоянии ожидания (idle state) карта принимает только команды CMD0, CMD1, ACMD41,CMD58 и CMD59. Все другие команды будут отброшены. В этот момент прочитайте регистр OCR и проверьте рабочее напряжение карты – оно должно быть в допустимом диапазоне. Если напряжение питание от системы находится не в рабочем диапазоне, работа с картой должна быть запрещена. Имейте в виду, что все карты работают при напряжении питания как минимум в диапазоне от 2.7 до 3.6 вольт. Карта начнет свою инициализацию, когда будет принята команда CMD1. Для определения окончания процесса инициализации, контроллер хоста должен отправить команду CMD1 и проверить ответ в ожидании окончания инициализации. Когда карта будет успешно инициализирована, бит ожидания (In Idle State bit) в ответе R1 будет очищен (R1 изменится с 0x01 на 0x00). Процесс инициализации может занять сотни миллисекунд (карты большого объема может потребовать больше времени), так что объем карты может быть учтен для определения таймаута ожидания. После того, как бит In Idle State будет очищен, могут быть восприняты обычные команды чтения/записи.

Поскольку для SDC рекомендуется использовать ACMD41 вместо CMD1, попробуйте сначала использовать команду ACMD41, и если она будет отклонена, то используйте CMD1 – это идеальный способ поддержать оба типа карт.

Тактовая частота SPI должна быть изменена на максимально быструю, как только возможно – для того, чтобы достигнуть максимальной скорости чтения/записи. Поле TRAN_SPEED в регистре CSD показывает максимальную тактовую частоту карты. В большинстве случаев максимальная тактовая частота 20 МГц для карт MMC и 25 МГц для карт SDC. Имейте в виду, что тактовая частота может быть зафиксирована на значении 20/25 МГц в режиме SPI, потому что нет использования открытого стока для тактов, которое ограничивает максимальную тактовую частоту.

Начальная длина блока чтения/записи может быть установлена в значение 1024 для карт на 2 гигабайта, поэтому размер блока должен быть переинициализирован в значение 512 командой CMD16 для работы с файловой системой FAT.

Как использовать SDC Ver2 и карты высокой емкости

После того как карта войдет в состояние ожидание по команде CMD0, передайте команду CMD8 с аргументом 0x000001AA и корректной CRC перед началом процесса инициализации. Если команда CMD8 будет отброшена с ошибкой недопустимой команды (illegal command error 0x05), то карта версии SDC V1 или MMC. Когда команда CMD8 принята, то будет возвращен ответ R7 (R1(0x01) и завершающие 32 бита данных). Младшие 12 бит в возвращаемой величине 0x1AA означают, что карта версии SDC V2 и может работать в диапазоне напряжения от 2.7 до 3.6 вольт. Если это не так, то работа с картой должна быть запрещена. Затем запустите инициализацию командой ACMD41 с установленным HCS (бит 30). После завершения инициализации прочитайте регистр OCR и проверьте CCS (бит 30). Если он установлен, последующие операции чтения/записи данных, которые описаны далее, будут отправляться с командой адреса блока вместо адреса байта. Размер блока всегда фиксирован на величине 512 байт.

Чем отличается использование карт SD от карт SDHC

Карты SD поддерживают размер максимум 2048 мегабайта (2 гигабайта), а карты SDHC имеют емкость намного больше, есть карты SDHC размером до 32 гигабайт. Аппаратно подключение карт SD и SDHC ничем не отличается, используются те же ножки и сигналы. Разница только в инициализации карты, и в передаче адреса блока данных. В картах SD адресация побайтная (передается адрес начала блока), а в картах SDHC адресация посекторная (передается номер сектора), размер сектора 512 байта. Адрес в любом случае 32-битный и для карт SD, и для карт SDHC. Секторный адрес может быть получен из байтового адреса сдвигом на 9 вправо (деление на 512). И наоборот, байтовый адрес может быть получен из секторного сдвигом на 9 влево (умножение на 512). Пример работы с картами SD и SDHC под управлением библиотек EFSL/FatFS см. в разделе Ссылки.

Передача данных

На рисунке показан пакет данных (Data Packet) и ответ данных (Data Response)

FatFS data

В транзакции передачи данных один или большее количество блоков данных будет отправлено/принято после ответа на команду (command response). Блок данных передается как пакет данных, который состоит из токена (Token), блока данных (Data Block) и CRC. Формат пакета данных показан на рисунке, где видны три токена данных. В качестве токена конца транзакции (Stop Tran token), который означает окончание записи нескольких блоков, выступает одиночный байт без блока данных и CRC.

Чтение одного блока, одиночное чтение (Single Block Read)

FatFS rs

Аргумент указывает размещение начала чтения в единицах либо байтов, либо блоков. Адрес сектора, указываемый на верхнем слое, должен быть преобразован по правильной шкале единиц. Когда команда CMD17 принята, начинается операция чтения, и прочитанный блок данных будет отправлен контроллеру хоста. После того, как будет детектирован допустимый токен данных, контроллер хоста примет следующее за ним поле данных и два байта CRC. Байты CRC должны быть сброшены, даже если они не нужны. Если во время операции чтения произошла любая ошибка, то будет возвращен токен ошибки (error token) вместо пакета данных.

Многоблочное чтение (Multiple Block Read)

FatFS rm

Команда Multiple Block Read читает сразу несколько блоков последовательно друг за другом по указанному адресу. Когда количество передаваемых блоков в этой команде не указано, транзакция начнется как чтение нескольких блоков с неопределенным завершением (open-ended multiple block read), и операция чтения будет продолжаться до тех пор, пока не будет остановлена командой CMD12. Байт, принятый сразу за командой CMD12, является пустым заполняющим (stuff byte), и он должен быть отброшен перед приемом ответа на команду CMD12.

:/>  Служба аудио не отвечает windows 10 как исправить

Запись одного блока, одиночная запись (Single Block Write)

FatFS ws

Когда команда записи принята, контроллер хоста отправляет в карту пакет данных после промежутка в байт (byte space). Формат пакета тот же самый, что и у команды Block Read. Поле CRC может содержать в себе любое (даже недостоверное) значение, за исключением того случая, когда работа CRC разрешена. Когда пакет данных отправлен, то сразу за ним следует ответ карты Data Response. За data response идет флаг занятости (busy flag), который нужен для поддержки операции записи (карте нужно некоторое время, чтобы осуществить запись в свою память). Многие карты не могут поменять размер блока записи, и в этом случае он фиксирован на значении 512.

В соответствии с принципом режима SPI сигнал CS должен удерживаться в активном состоянии (лог. 0), однако имеется исключение из этого правила. Когда карта занята, контроллер хоста может убрать выборку CS, чтобы освободить шину SPI, которая может использоваться для других устройств SPI. Карта снова опустит сигнал DO в лог. 0, когда карта будет выбрана, во время работы внутренней операции записи. Поэтому предварительная проверка занятости (перед командой и пакетом данных) вместо ожидания после команды записи может устранить ненужные потери времени. В дополнение к инициализации внутреннего процесса после подтверждения байтом data response, это означает необходимость восьми тактов для инициализации внутренней операции записи. Состояние сигнала CS во время этих 8 тактов не имеет значения, так как может быть сделано освобождение шины, описанное далее.

Многоблочная запись (Multiple Block Write)

FatFS wm

Команда Multiple Block Write записывает несколько блоков последовательно друг за другом, начиная с указанного адреса. Когда количество передаваемых блоков не указано перед этой командой, транзакция начнется как многоблочная запись с неопределенным завершением (open-ended multiple block write), при которой запись будет продолжаться, пока не будет прервана токеном остановки транзакции (Stop Tran token). Флаг занятости появится на сигнале DO в байте после токена Stop Tran. Для SDC транзакция многоблочной записи должна быть завершена токеном Stop Tran независимо от того, как была начата транзакция – с заданным количеством блоков или неопределенным (pre-defined или open-ended).

Чтение регистров CSD и CID

Чтение CSD и CID происходит так же, как и Single Block Read, за исключением того, что отсутствует поле длины блока. CSD и CID отправляются хосту как 16-байтовый блок данных. Подробности по CMD, CID и OCR см. в спецификации MMC/SDC.

Обзор ненагруженной шины и горячего подключения карты

FatFS dip

Любые сигналы, которые могут оказаться в подвешенном (ненагруженном) состоянии, должны быть притянуты к низкому или высокому уровню с помощью резистора. Это обычное правило проектирования для устройств с полевыми транзисторами (MOS devices). Поскольку сигналы DI и DO в обычном состоянии находятся в высоком уровне, они должны быть подтянуты через резисторы к положительной шине питания (pulled-up). В соответствие со спецификацией SDC/MMC рекомендуется использовать номиналы pull-up резисторов от 50 кОм до 100 кОм. однако сигнал тактирования SCLK не упоминается в спецификации SDC/MMC, потому что он всегда является выходом контроллера хоста. Если возможен случай нахождения этого сигнала в третьем состоянии, то он должен быть подтянут в свое нормальное низкое логическое состояние.

MMC/SDC поддерживают “горячее” (при включенном питании) подключение и отключение, однако схема хоста должна быть соответствующим образом спроектирована, чтобы избежать некорректного функционирования. Например, если напряжение питания системы хоста (Vcc) напрямую подключено к сокету карты, то произойдет провал напряжения Vcc в момент подключения карты – из-за тока зарядки конденсатора фильтра, встроенного в карту. Этот момент иллюстрирует осциллограмма ‘A’ на рисунке – напряжение проваливается на 600 милливольт. Этого провала достаточно, чтобы мог сработать триггер детектора пропадания напряжения питания, который имеется во многих микроконтроллерных системах (brown out detector). Осциллограмма ‘B’ показывает, как установка индуктивности блокирует бросок тока, и спад напряжения уменьшается до 200 милливольт. Конденсатор с низкими потерями (low ESR), такой как OS-CON, может еще лучше погасить скачок напряжения, как показано на осциллограмме ‘C’. Однако low ESR конденсатор может вызвать генерацию в микросхеме стабилизатора LDO (Low Drop Out, аналоговый стабилизатор с малым допустимым напряжением падения на нем).

Обзор конфигурации с несколькими ведомыми устройствами (Multi-slave)

FatFS-do diag

На шине SPI каждое ведомое (slave) устройство должно быть выбрано отдельным сигналом CS, благодаря чему к одной шине SPI может быть подключено множество устройств. Стандартное ведомое устройство SPI управляет/освобождает свой сигнал DO асинхронно по сигналу CS, чтобы сигнал DO мог быть совместно использован на шине SPI несколькими устройствами. Однако MMC/SDC управляют/освобождают сигнал DO синхронно с SCLK. Это означает, что имеется возможность конфликта на шине MMC/SDC и любого другого ведомого устройства SPI, подключенного к той же шине. На рисунке показано время управления/освобождения MMC/SDC (сигнал DO подтянут к уровню 1/2 Vcc, чтобы было видно состояние шины). Таким образом, чтобы MMC/SDC освободила сигнал DO, устройство мастера (контроллер хоста) должен отправить дополнительный байт после того, как убран сигнал CS с карты.

Оптимизация производительности записи (Write Performance)

Большинство MMC/SDC реализованы на основе NAND Flash Memory. Память NAND flash эффективнее по стоимости, и может быстрее читать/записывать большой объем данных, но с другой стороны, эта память неэффективна, если нужно перезаписать только часть данных. Обычно память flash требует очистить уже записанные данные перед тем как можно записать туда новые данные, и минимальная единица блока очистки (так называемый erase block) больше, чем размер блока записи. Обычная память NAND flash имеет размер блока 512/16K байт для операции записи/очистки, и последние карты большого объема имеют чип с большим размером блока (2K/128K). Это означает, что в карте реализована перезапись всего блока очистки, даже если нужно записать только один сектор (512 байт).

Тест на быстродействие (Benchmark)

Производительность чтения/записи некоторых карт MMC/SDC с недорогим 8-битным MCU (ATmega64, тактовая частота 9.2 МГц) была протестирована в предположении использования встроенной системы с ограниченным размером памяти. Из-за размера памяти операции write() и read() работают за один раз с блоком 2048 байт. Получен следующий результат: запись 77 кбайт/сек, чтение 328 кбайт/сек с картой памяти 128 мегабайт SDC, запись 28 кбайт/сек, чтение 234 кбайт/сек с картой памяти 512 мегабайт SDC и запись 182 кбайт/сек, чтение 312 кбайт/сек с картой памяти 128 мегабайт MMC.

Таким образом, быстродействие записи хуже всего была на карте 512 мегабайт SDC, в три раза меньше, чем у 128 мегабайт SDC. Обычно производительность чтения/записи устройств mass storage увеличивается пропорционально плотности записи, однако иногда появляется противоположная тенденция, как в данном случае. Карта MMC показывает в несколько раз лучшую производительность, чем SDC. Позже были протестированы некоторые SDC от различных поставщиков, и было обнаружено, что PQI SDC были быстрее, чем Hitachi MMC, однако Panasonic и Toshiba были наихудшими в плане быстродействия.

Размер блока очистки (Erase Block Size)

С целью анализа подробностей операции записи время занятости (количество циклов опроса) после отправки записываемых данных выводилось в консоль низкоуровневой функцией записи диска. Несколько чисел в строке показывают блоки данных и токен Stop Tran, которые были выданы в транзакции записи нескольких блоков (multiple block write transaction).

В результате анализа обнаружилось различие внутреннего процесса записи между 128 мегабайт SDC и 512 мегабайт SDC. 128 мегабайт SDC перезаписывают erase block по окончании транзакции multiple block write. 512 мегабайт SDC похоже имеют буфер 4K байт, и перезаписывают erase block на каждой границе 4K байт. Поэтому нельзя сравнить эти карты напрямую, однако время обработки перезаписи составило 3800 циклов для карт 128 мегабайт SDC, и 30000 циклов для 512 мегабайт SDC, что в 8 раз больше. Судя по результатам, 128 мегабайт SDC использует чип с блоком меньше, чем у чипа 512 мегабайт SDC, либо используется чип MLC. Само собой, большой блок очистки ухудшает производительность при частичных перезаписях блока. На картах 512 мегабайт SDC быстро работает только область памяти 512K байт в начале памяти. Это можно определить по времени записи в процедуре close(). Возможно, что эта верхняя область имеет специальную организацию для размещения каталога FAT – для ускорения работы файловой системы.

Улучшение производительности при записи

FatFS appnotes f6

Чтобы избежать “бутылочного горлышка” и увеличить скорость записи, нужно использовать как можно большее количество блоков на одну транзакцию записи. Конечно, все слои между приложением и носителем данных должны поддерживать возможность multiple sector write. Для низкоуровневой функции записи SDC/MMC нужно знать количество секторов записи до начала самой записи, чтобы инициировать эффективный внутренний процесс записи. Этот метод называется `pre-defined multiple block write’ (предварительно заданный размер блока записи). Команды предварительного определения отличаются между MMC (CMD23) и SDC (ACMD23).

Карты памяти изначально разбиты на разделы и отформатированы для выравнивания allocation unit (кластер) на границу erase block. Когда карта заново разбивается на разделы или переформатируется на устройстве, которое ничего не знает о структуре MMC/SDC (это может быть обыкновенный компьютер PC), то эта оптимизация ломается, и производительность записи может быть потеряна. Я пробовал переформатировать 512MB SDC в системе FAT32 на PC, и скорость записи, измеренная на копировании файла, снизилась. Таким образом, переформатирование карт лучше делать на специальных устройствах, совместимых с внутренней структурой MMC/SDC, а не на PC.

[Ссылки]

1

.

MMCA – Multimedia Card Association
2

.

SDA – SD Card Association
3

.

SDHC Physical Layer Spec.
4

.

About SPI

(статья про интерфейс SPI).

5

.

Generic FAT file system module

 (модуль стандартной файловой системы FAT) с примером кода для управления картами

MMC/SDSC/SDHC
6

.

Как использовать карты памяти MMC/SDC

(оригинал статьи на английском языке).

7

.

130916rwav-boot-public.zip

– пример работы с картами памяти SD и SDHC.

8

. SD_Physical_Layer_Spec.pdf – SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00 September 25, 2006.

Ошибки flashtool

Программа FlashTool активно применяется пользователями, которые хотят выполнить прошивку своего мобильного оборудования. Продукт позволяет увеличить производительность устройства, добиться поддержки новых игр. Несмотря на кажущуюся простоту использования этого приложения, порой у юзеров возникают сложности. Ошибки FlashTool – явление достаточно распространенное, но выход есть. У нас представлена таблица, где собраны часто встречающиеся неточности, проявляющиеся в ходе выполнения прошивки на устройстве. Расшифровка ошибок Флештул поможет понять, как их устранить и воспользоваться всеми функциями программы.

Код ошибкиНаименование
1002 или 0x3EAS_INVALID_ARGUMENTS
Описание ошибки 1002 и ее решение

Некорректный Scatter файл. Например, в файле scatter отключены блоки PRELOADER и DSP_BL
1003 или 0x3EBS_COM_PORT_OPEN_FAIL
Описание ошибки 1003 и ее решение

Проблема с портом. Например, ошибка может появиться, если в BIOS отключены COM порты. Даже если COM порт виртуальный, а физический USB. В этом случае вы не увидите оборудование на которое ставятся драйверы PRELOADER. Проблема может быть в кабеле USB, в этом случае замените кабель. Если неисправен USB порт компьютера, то необходимо переткнуть кабель в другой порт. Теоретически, может возникать в режиме UART USB порта. Порт был виден, его выбрали в настройках Flash Tool, программа записала его в INI файл, после чего систему перегрузили с отключенным портом, и сразу же запустили Flash Tool, не выбирая порт.. Когда после прохода красной полосы до 100% в результате прошивки, кнопки операций снова становятся доступными для нажатия, но ни сообщения об ошибке, ни окошка с зеленым кругом не появляется возникнет данная ошибка, или аналогичная ей, код которой 1013 . В этом состоянии Flash Tool не закрывает COM порт, и попытка снова запустить любую операцию, переподключив устройство, вызовет ошибку. Если программа перешла в такое неопределенное состояние, то нужно закрыть ее и запустить заново
1011 или 0x3F3S_NOT_ENOUCH_STORAGE_SPACE
Описание ошибки 1011 и ее решение

Возникает в том случае, если размер одной из частей прошивки превышает размер отведенного ему пространства. Обычно это блок ядра или рекавери. Данная ошибка иногда возникает на недоработанных версиях Flash Tool. Замените используемую версии прошивальщика
1012 или 0x3F4S_NOT_ENOUGH_MEMORY
Описание ошибки 1012 и ее решение

Воспользуйтесь более свежей версией прошивальщика
1013 или 0x3F5S_COM_PORT_OPEN_FAIL
Описание ошибки 1013 и ее решение

Ошибка аналогична ошибке 1003. Решения нужно искать по тому же принципу. Может помочь смена версии прошивальщика, или прошивка устройства с отключенной батареей
1018 или 0x3FAS_UNKNOWN_TARGET_BBCHIP
Описание ошибки 1018 и ее решение

Воспользуйтесь более свежей версией прошивальщика
1022 или 0x3FES_UNSUPPORTED_VER_OF_DA
Описание ошибки 1022 и ее решение

Воспользуйтесь более свежей версией прошивальщика
1040 или 0x410S_UNSUPPORTED_OPERATION
Описание ошибки 1040 и ее решение

Scatter файл не подходит для устройства. Например в названии файла содержится номер версии 6777, а устройство версии 6555
1041 или 0x411CHS_ERR
Описание ошибки 1041 и ее решение

Необходимо перейти во вкладку Help, нажать Open Logs Folder и удалить все логи. Перейти в папку с прошивкой и удалить файл Checksum.ini
2004 или 0x7D4S_BROM_DOWNLOAD_DA_FAIL
Описание ошибки 2004 и ее решение

Проблема может заключаться в версии флэштула. Загрузите версию в конце которой есть обозначение SEC. Ошибка может возникнуть, если в операционной системе установлено множество USB драйверов для разных устройств. Воспользуйтесь программой USBDeview для удаления установленных USB драйверов и выполните прошивку через Flash Tool. Может помочь подключение устройства с зажатой клавишей громкости или -. Если вышеперечисленные способы не помогают, после того как появится ошибка, необходимо сразу закрыть окно с ошибкой и тут же нажать кнопку download еще раз
2005 или 0x7D5S_BROM_CMD_STARTCMD_FAIL
Описание ошибки 2005 и ее решение

Ошибка может возникать на устройствах MTD, если при выборе режима Download на блоках PRELOADER или DSP_BL не установлена галочка. Необходимо использовать подходящую версию Flash Tool, например v2.xxx для телефонов MT6573, или выключить режим DA Download All.. При выборе режима Download на блоках PRELOADER или DSP_BL установлена галочка, необходимо ее снять с этих блоков. Если эти блоки необходимо прошить, то подсоединить телефон в режиме BOOTROM. При выборе ReadBack, Format или MemoryTest нужно подключить устройство в режиме BOOTROM. Можно попробовать прошить устройство с отключенной батареей
2020 или 0x7E4S_BROM_CHKSUM16_MEM_RESULT_DIFF
Описание ошибки 2020 и ее решение

В настройках Flash Tool принудительно выставить галочку, указав тем самым, что устройство без батареи. После этого подключить устройство через тест поинт, но уже с батареей
2035 или 0x7F3S_BROM_CMD_JUMP_DA_FAIL
Описание ошибки 2035 и ее решение

После нажатия кнопки Download подключить к компьютеру выключенное устройство с предварительно зажатыми кнопками громкости
3001 или 0xBB9S_DA_EXT_RAM_ERROR
Описание ошибки 3001 и ее решение

Возможно ошибка связана с подключением. Проверьте кабель, переподключите кабель в другой порт USB
3012 или 0xBC4NAND_FLASH_NOT_FOUND
Описание ошибки 3012 и ее решение

Проблема связана с определением флеш памяти устройства. Воспользуйтесь другой версией прошивальщика, т.к. по мере выпуска разных версий обновляется информация о флеш памяти. Если не помог вышеуказанный вариант, попробуйте прошить устройство на другом компьютере, т.к. бывают проблемы, которые не позволяют корректно определить память на конкретной машине
3013 или 0xBC5S_DS_SOC_CHECK_FAIL
Описание ошибки 3013 и ее решение

Возможно, что в настройках прошивки Flash Tool не стоит галочка на Uboot . Uboot – загрузчик операционной системы и драйверов для инициализации основного оборудования, таких как дисплей, процессор, GPIO. Ошибка может возникать в том случае, если в строке пути, по которому расположена программа или прошивка, присутствует кириллица или некорректные символы, иероглифы. Допустимо размещение программы и файла прошивки только по тому пути, который полностью состоит из латинских символов. Пример, показывающий некорректное размещение файлов: C:UsersПользовательDesktopПрошивкиПрошивка планшета
3054 или 0xBEES_DA_NFB_BOOTLOADER_NOT_EXIST
Описание ошибки 3054 и ее решение

Воспользуйтесь другой версией прошивальщика. Попробуйте заменить версию прошивальщика с пятой на третью версию
3066 или 0xBFAS_DA_HANDSET_FAT_INFO_NOT_FOUND
Описание ошибки 3066 и ее решение

Возникает при автоматическом форматировании. Необходимо задать адреса форматирования вручную
3144 или 0xC48S_DA_EMMC_FLASH_NOT_FOUND
Описание ошибки 3144 и ее решение

Ошибка возникает, если есть проблемы с аппаратной частью устройства. Также может возникать в том случае, если Scatter файл не подходит к устройству. Например, в названии присутствует emmc, а устройство на самом деле с MTD флэш. Есть вероятность того, что проблема решится, если воспользоваться другим компьютером и операционной системой. Предпочтительно использовать компьютер с операционной системой Windows XP со вновь установленными драйверами
3149 или 0xC4DS_DA_SDMMC_WRITE_FAILED
Описание ошибки 3149 и ее решение

Воспользуйтесь другой версией прошивальщика. Если прошиваете 3 версией, попробуйте 5 версию, либо наоборот. Выберите режим Format all download. Необходимо переустановить драйвера для устройства и добиться того, чтобы в диспетчере устройств устройство правильно отображалось как MTK USB PORT. Запустите Flash Tool, снимите галочки со всех пунктов, кроме PRELOADER и прошейте в режиме Download. Если прогрес идёт но в конце возникает ошибка, то убеждаемся что прошивать будем только PRELOADER. В верхней части окна Flash Tool, рядом с кнопкой Download, нажмите кнопку Format. Откроется окно настроек форматирования с режимами форматирования Auto и Manual. В режиме Auto есть две настройки, поставить галочку на верхний пункт и нажать OK. Начнётся форматирование. После окончания форматирования, снова прошить PRELOADER. После удачной прошивки PRELOADER, прошить устройство полностью
3168 или 0xC60S_CHIP_TYPE_NOT_MATCH
Описание ошибки 3168 и ее решение

Некорректный scatter файл. Используйте Scatter файл от вашего устройства
4001 или 0xFA1S_FT_DA_NO_RESPONSE
Описание ошибки 4001 и ее решение

Смените порт USB и перенесите Flash Tool в корень диска. Возможно, в Download Agent нет информации о ЦП/флэш, поэтому воспользуйтесь более свежей версией прошивальщика. Ошибка может быть аппаратной, например при вышедшей из строя флеш-памяти
4008 или 0xFA8S_FT_DOWNLOAD_FAIL
Описание ошибки 4008 и ее решение

Воспользуйтесь другой версией прошивальщика. Есть вероятность, что поможет замена версии на более старую. Проблема может быть в кабеле USB, в этом случае замените кабель или порт USB. Возможно в процессе прошивки сел аккумулятор. Зарядите устройство и попробуйте выполнить прошивку заново. Можно попробовать вытащить из устройства аккумулятор и попробовать прошить без него. Попробуйте выполнить форматирование устройства
4009 или 0xFA9S_FT_READBACK_FAIL
Описание ошибки 4009 и ее решение

Кроме ошибок чтения в самом устройстве, ошибка может наблюдаться в случае ошибок в файловой системе компьютера. Например, недостаточно места на диске, либо файл невозможно перезаписать т.к. он заблокирован. Для того, чтобы понять причину, необходимо смотреть в лог Flash Tool
4010 или 0xFAAS_FT_FORMAT_FAIL
Описание ошибки 4010 и ее решение

Рекомендуется сменить версию прошивальщика на 5 версию, крайне желательно начать с версии 5.1352.01 и попытаться прошить аппарат через режим Firmware upgrade. Прошивка должна быть оригинальной для аппарата и содержать все блоки. Попробуйте сменить кабель для прошивки на более качественный
4032 или 0xFC0S_FT_ENABLE_DRAM_FAIL
Описание ошибки 4032 и ее решение

Ошибка может возникнуть при прошивке на аппарате с процессором MT6589. Для ее устранения, отформатируйте устройство через кнопку Format. Не делайте форматирование, если у вас аппарат на процессоре MT6575 или 6577. После форматирования, прошейте устройство со всеми галочками, нажав кнопку Download. Можно попробовать переустанавить драйверы и выполнить форматирование повторно. Выполнить прошивку, если предыдущая попытка была неудачной. Если ничего не помогло, то попробуйте сменить версию прошивальщика. Рекомендуется начать с версии 5.1352.01. Ошибка связана с неверным блоком PRELOADER. Необходимо найти родной PRELOADER и прошить его. Если прошивка стандартным методом не приносит результата, то возможно придется прошивать аппарат через тестпоинт. Появлению данной ошибки может способствовать низкий заряд батареи. Можно попробовать решить проблему замкнув 4 и 5 контакт на разъеме USB
4037 или 0xFC5S_FT_FS_READ_FAIL 0xFC5
Описание ошибки 4037 и ее решение

Ошибка может возникать в том случае, если в строке пути, по которому расположена программа или прошивка, присутствует кириллица или некорректные символы, иероглифы. Допустимо размещение программы и файла прошивки только по тому пути, который полностью состоит из латинских символов. Пример, показывающий некорректное размещение файлов: C:UsersПользовательDesktopПрошивкиПрошивка планшета
4050 или 0xFD2S_FT_NEED_DOWNLOAD_ALL_FAIL
Описание ошибки 4050 и ее решение

Возникает в том случае, если не совпадают размеры блоков в PMT и в Scatter файле. В общем случае эта ошибка устраняется загрузкой всех блоков, после этого размер в PMT должен поменяться на правильный. Можно попробовать сменить версию прошивальщика
4058 или 0xFDAS_FT_GET_MEMORY_FAIL
Описание ошибки 4058 и ее решение

Ошибка возникает при наличии проблем с флеш-памятью. Не рекомендуется решать проблему самостоятельно. Варианты устранения ошибки: прогрев чипа флеш-памяти паяльным феном при высокой температуре, примерно 400 градусов по цельсию. Вероятно, придется произвести замену чипа с донорской платы, либо на новый
5002 или 0x138AS_INVALID_DA_FILE
Описание ошибки 5002 и ее решение

При настройке Flash Tool Download Agent необходимо выбирать прилагающийся к данной версии прошивальщика. Выбор других агентов приводит к данной ошибке
5007 или 0x138FS_FTHND_FILE_IS_NOT_LOADED_YET
Описание ошибки 5007 и ее решение

Ошибка обычно возникает в том случае, если в программе Flash Tool стоит галочка на блоке, к которому некорректно указан путь, либо отсутствует. Для ее устранения, необходимо указать корректный путь к нужному блоку прошивки. Также при возникновении данной ошибки, воспользуйтесь другой версией прошивальщика, например v5.1352.01
5054 или 0x13BES_DL_GET_DRAM_SETTINGS_FAIL
Описание ошибки 5054 и ее решение

Ошибка заключается в том, что программе Flash Tool не удалось получить настройки оперативной памяти устройства. Может возникнуть в том случае, если был выполнен полный сброс через Flash Tool. Также ошибка может происходить при обмене данными между Download Agent и устройством. При некорректной работе драйвера сбой при передаче может произойти лишь в том случае, если у вас операционная система Windows XP с сервис-паком ниже третьего. Необходимо установить третий сервис-пак. В старших версиях драйвер usbser.sys обновлениям не подвергался и в переустановке не будет смысла
5066 или 0x13CAS_DL_PC_BL_INVALID_GFH_FILE_INFOR
Описание ошибки 5066 и ее решение

Некорректный Scatter файл. Может возникнуть в том случае, если выбрали Scatter из папки с неподготовленными для Flash Tool файлами. Необходимо выбрать корретный Scatter файл
5069 или 0x13CDS_DL_PMT_ERR_NO_SPACE
Описание ошибки 5069 и ее решение

Ошибка вероятнее всего возникает из-за особенности флеш-памяти. Случается так, что форматирование, даже низкоуровневое, не дает никакого эффекта. Т.е во флеш-памяти все остается как есть. Если делать Format, то может появиться ошибка 1037 и при этом выводится сообщение, с необходимостью выполнить Download для создания таблиц разделов. Firmware Upgrade выполнить не удается, из-за ошибки 1037. Можно сделать Download только PRELOADER. Загрузка любого другого раздела выдаст ошибку 5069. От версии Scatter, размера раздела FAT не зависит. Можно выполнить Manual Format, но в пределах UA Size. После форматирования, попытка залить любой раздел снова сводится к ошибке 5069
6045 или 0x179DS_SECURITY_SECURE_USB_DL_IMAGE_SIGN_HEADER_NOT_FOUND
Описание ошибки 6045 и ее решение

Рекомендуется сменить версию прошивальщика на 5 версию, крайне желательно начать с версии 5.1352.01
6104 или 0x17D8S_SECURITY_SECURE_USB_DL_DA_RETURN_INVALID_TYPE
Описание ошибки 6104 и ее решение

Рекомендуется сменить версию прошивальщика на 5 версию, крайне желательно начать с версии 5.1352.01
6124 или 0x17ECS_SECURITY_INVALID_PROJECT (6124), MSP ERROE CODE: 0 x 00
Описание ошибки 6124 и ее решение

Есть вероятность того, что ошибка пропадет после прошивки родного PRELOADER через кнопку Download. После этого выполнить прошивку модифицированного Recovery и полную прошивку
6126 или 0x17EES_SECURITY_SECRO_HASH_INCORRECT
Описание ошибки 6126 и ее решение

Ошибка часто встречается на аппаратах Huawei G610, Huawei G700, LG L60 Dual и на текущий момент не решаема в домашних условиях. Последствия: периодическая перезагрузка, в устройстве остаются удаленные файлы, при проверке памяти на запись возникает ошибка. Причина в том, что устройство имеет залоченный загрузчик, из-за чего необходимо прошить разлоченный SEC_RO для разблокировки и дальнейшей перепрошивки. Сводится все к тому, что именно при прошивке SEC_RO возникает эта ошибка. Рекомендуется заменить память в сервисе
8038 или 0x1F66SP FLASH TOOL ERROR/PMT changed for the ROM; it must be downloaded
Описание ошибки 8038 и ее решение

Для устранения ошибки необходимо использовать режим Firmware upgrade. Внимание! Прошивка должна быть конкретно для прошиваемого устройства и содержать абсолютно ВСЕ блоки, которые обычно есть в стоковых прошивках
8045 или 0x1F6DSP FLASH TOOL ERROR
Описание ошибки 8045 и ее решение

Ошибка похожа на 8038, но на практике правка Scatter-файла не помогает. Для решения проблемы можно обратиться в сервисный центр для прошивки аппарата через программатор. В домашних условиях иногда срабатывает вариант прошивки через кнопку Download со всеми установленными галочками. Также можно попробовать сменить версию прошивальщика на 5 версию, крайне желательно начать с версии 5.1352.01. Проблема может быть аппаратная
8200 или 0x2008SP FLASH TOOL ERROR
Описание ошибки 8200 и ее решение

Ошибка возникает если вы пытаетесь прошить аппарат на одной платформе, прошивкой от другого. Например у вас MT6577, а вы пытаетесь прошить прошивкой от аппарата на MT6575. Можно попробовать сменить версию прошивальщика на 5 версию, крайне желательно начать с версии 5.1352.01
8417 или 0x20E1SP FLASH TOOL ERROR: The load scatter file is invalid!
Описание ошибки 8417 и ее решение

Ошибка может возникать в том случае, если в строке пути, по которому расположена программа или прошивка, присутствует кириллица или некорректные символы, иероглифы. Допустимо размещение программы и файла прошивки только по тому пути, который полностью состоит из латинских символов. Пример, показывающий некорректное размещение файлов: C:UsersПользовательDesktopПрошивкиПрошивка планшета
:/>  Проверяем Windows на ошибки

Программы для просмотра фотографий

Оставьте комментарий

Adblock
detector