• Программирование eMMC

 

Дата последнего изменения: 2020-03-26


Автор: .

В статье рассматриваются особенности применения микросхем стандарта eMMC, разновидности этих микросхем, даны рекомендации по программированию на программаторах ChipStar.

СОДЕРЖАНИЕ:

1. Что такое микросхема eMMC?

Фактически микросхема eMMC (Embedded MultiMediaCard) — это накопитель MMC (MultiMediaCard), выполненный в виде микросхемы. Не сильно вдаваясь в детали внутренней структуры, можно сказать, что eMMC представляет собой одну или несколько микросхем NAND под управлением микроконтроллера, который обеспечивает внешний интерфейс eMMC и берет на себя достаточно неприятные функции управления микросхемами NAND: исправление ошибок и управление плохими блоками. О практических сложностях исправления ошибок и управления плохими блоками NAND мы уже писали. А при использовании eMMC разработчик оказывается избавленным от необходимости создания сложного программного обеспечения, процессор прибора может быть загружен другими задачами.

eMMC представляет собой не микросхему в традиционном понимании, а микросборку, в которой в одном корпусе собраны несколько кристаллов зачастую разных (!) производителей.

eMMC — это не единственное название для подобных микросхем. Встречаются названия: eNAND, moviNAND, NANDrive. Кроме eMMC есть еще другие варианты накопителей, основанные на идеях полного управления NAND: OneNAND, UFS.

2. Особенности микросхем eMMC

Микросхема eMMC представляет собой накопитель, который может быть сконфигурирован для использования сложной внутренней структуры (различные области и разделы), в том числе возможно ограничить (зашифровать) доступ к отдельным разделам. В задачи программатора не входит "взлом" микросхемы и получение информации из защищенных областей. Микросхема считывает "как есть", а задача интерпретации содержимого, если это необходимо, целиком ложится на пользователя. В общем случае (при отсутствии защиты) скопировать микросхему можно только на точно такую чистую микросхему того же производителя. В остальных случаях считанную информацию, возможно, нужно будет каким-либо образом интерпретировать и корректировать.

Микросхема eMMC может быть считана и записана программатором так же, как любая другая микросхема. Поскольку программное обеспечение программатора поддерживает многозадачность, в том числе одновременное чтение разных разделов микросхемы, пользователь может просматривать одни части или области микросхемы, в то время как другие еще считываются:

Рисунок: eMMC

У eMMC очень большой объем основной области памяти, поэтому, несмотря на достаточно быстрое чтение микросхемы программатором (до 5 мегабайт в секунду), полное чтение может занять несколько минут. Пока программатор считывает основную область микросхемы, можно переключиться на другие закладки редактора и быстро прочитать и просмотреть специальные регистры микросхемы.

3. Специальные регистры eMMC

В соответствии со стандартом JEDEC все микросхемы eMMC имеют следующие регистры:

  • CID (Chip IDentification) — регистр идентификации микросхемы;
  • CSD (Chip Specific Data) — регистр управления микросхемой;
  • ECSD (Extended CSD register) — расширенный регистр управления микросхемой.

Отдельные части регистров размером от одного бита до нескольких байтов описывают свойства микросхемы или управляют определенными свойствами этой микросхемы. В этом смысле регистры eMMC функционально схожи с регистрами конфигурации (fuses) микроконтроллеров, представление которых очень удобно реализовано в редакторе ChipStar. Однако регистры eMMC по размеру значительно больше, поэтому в программаторе иx представление реализовано несколько иным образом.

Для специальных регистров закладка обычного двоичного редактора дополнена справа редактором свойств (как показано ниже на примере регистра CID).

Рисунок: eMMC

  1. Зона обычного двоичного редактора. Здесь информация отображается в HEX формате и может быть изменена (даже для неизменяемых областей);
  2. Зона обычного двоичного редактора, соответствующая выделенной ячейке (slice) специального регистра;
  3. Название ячейки регистра в соответствии с eMMC JEDEC;
  4. Адрес в байтах начала ячейки регистра в шестнадцатеричном формате;
  5. Адрес начала ячейки регистра в битах или байтах (указано в заголовке колонки), значения десятичные:
    • Для битового формата значения адреса поля представлены в виде: <начало_бит>:<конец_бит>
    • Для байтового формата значения адреса поля представлены в виде: <начало_байт>.<бит>:<конец_байт>.<бит>
  6. Мнемоническое обозначение ячейки регистра в соответствии с eMMC JEDEC;
  7. Тип памяти ячейки регистра:
    • DNU — ячейка не используется или её нельзя использовать;
    • RO — ячейка только для чтения;
    • WO — ячейка только для записи (записанное значение неизвестно, всегда показывается как "0");
    • OTP — однократно программируемая ячейка (ее значение больше нельзя будет изменить);
    • RAM — ячейка управления (меняется постоянно, после отключения питания значение не сохраняется);
    • Пусто — нормальная многократно записываемая и стираемая ячейка.
  8. Значение ячейки в HEX формате;
  9. Текущее положение курсора редактора в байтах, адрес в байтах начала текущей ячейки регистра.

В регистре CID все поля являются ячейками только для чтения.

Перемещение курсора редактора и редактора свойств синхронизированы. Редактировать данные можно как в редакторе свойств, так и в обычном редакторе, причем обычный редактор не поддерживает ограничения редактирования ячеек, которые наложены на редактор свойств в зависимости от типа ячейки. Таким образом, в двоичном редакторе можно отредактировать всё, даже то, что редактировать не нужно. Поэтому начинающим пользователям настоятельно рекомендуем использовать только редактор свойств.

На рисунке ниже показан пример регистра CSD. У этого регистра часть полей уже можно изменить:

Рисунок: eMMC

  1. Ячейка нормального типа. Можно редактировать и многократно перезаписывать.
  2. Однократно программируемая ячейка (ее значение больше нельзя будет изменить).
  3. Неизменяемая ячейка. Только для чтения.

Обратите внимание, что бит COPY регистра CSD предварительно записан при поставке чистой микросхемы розничному покупателю. Это мера защиты авторских прав. Стереть этот бит невозможно. Часть ячеек регистра перезаписываемая, например, изменяя значение ячейки TWP (временная защита от записи) защиту можно устанавливать или снимать. А вот ячейка PWP (постоянная защита от записи) однократно программируемая. Установка бита PWP в единицу превратит микросхему eMMC в постоянное запоминающее устройство – вы уже больше не сможете стереть или перезаписать ее!

На рисунке ниже показан пример регистра ECSD:

Рисунок: eMMC

  1. Ячейка управления. Нас такие не интересуют.
  2. Ячейка только для записи (записанное значение неизвестно, всегда показывается как"0"), как правило, это тоже ячейка управления и нас не интересует.
  3. На сиреневом фоне в редакторе показаны области, которые назначены каким-либо ячейкам.
  4. Обычным текстом показаны области, не имеющие никакого назначения в стандарте eMMC JEDEC.

Регистр ECSD содержит большое разнообразие ячеек разных типов и размеров. Часть областей регистра зарезервирована для будущего использования. Не все ячейки ECSD, описанные в стандарте eMMC JEDEC, могут быть реализованы в конкретной микросхеме. Если ячейку перезаписать не удается, возможно, что ее просто нет. В то же время могут быть реализованы какие-либо другие функциональные ячейки в зарезервированных областях. За подробной информацией следует обратиться к документации производителя конкретной микросхемы.

Об особенностях записи регистров eMMC программатором читайте ниже.

4. Режимы работы шины данных eMMC

Микросхемы стандарта eMMC поддерживают следующие три конфигурации шины данных: 1-битную, 4-битную и 8-битную. В программаторе реализованы только две из них, что вполне достаточно для практического применения. При чтении рекомендуется использовать 8-битный режим, так как он более быстрый.

Рисунок: eMMC

Меню "Анализ eMMC CID/CSD" вызвает считывание содержимого CID/CSD, его интерпретацию и верификацию на соответствие выбранной микросхеме:

Рисунок: eMMC

5. Проверка контактирования

При программировании микросхем eMMC, как и для всех остальных, выполняется проверка качества контактирования в панельке. Подробно о том, как это происходит, можно почитать в документе "Методика проверки контактирования", доступном в кабинете пользователя программатора. Проверка контактирования проводится перед всеми операциями с микросхемой, кроме чтения идентификатора: чтение, стирание, запись, верификация. Если проверка прошла успешно, окно, показанное ниже, не открывается.

Рисунок: eMMC

Однако вы можете вызвать проверку контактирования вручную, тогда это окно будет показано всегда. Можно кликнуть по изображениям контактов, чтобы увидеть назначения контактов микросхемы и их взаимосвязи внутри адаптера. Микросхемы типа eMMC могут быть прочитаны и записаны в двух режимах шины данных: 8 бит и 1 бит. Если сигналы к линиям данным D1-D7 не имеют контакта с микросхемой, программа автоматически переключится в режим однобитной шины, и микросхема может быть успешно прочитана и записана, только медленнее. В этом случае каждый раз будет выдаваться предупреждение об отсутствии контакта, которое можно игнорировать.

Примечание: У программаторов ChipStar-Janus аппаратные возможности проверки контактирования отсутствуют.

6. Как самостоятельно добавить отсутствующую в базе микросхему

Подробно о самостоятельном добавлении разных микросхем вы можете прочитать в соответствующей статье. Поскольку вся необходимая информация о программировании микросхемы eMMC содержится в регистрах CID, CSD и ECSD самой микросхемы, а доступ к чтению этих регистров унифицирован и подробно описан в стандарте eMMC JEDEC, добавление микросхемы не представляет никаких трудностей.

Cначала необходимо выбрать шаблон корпуса микросхемы: BGA/153, BGA/169 или ICPA (для внутрисхемного программирования), как показано на рисунке ниже.

Рисунок: eMMC

Затем достаточно нажать кнопку "Автозаполнение согласно eMMC JEDEC" и вся необходимая для программирования информация будет считана:

Рисунок: eMMC

Останется только ввести название микросхемы в поле "Микросхема" и можно работать.

7. Запись микросхемы и защита регистров CSD и ECSD

Если вы выберете чтение микросхемы (стандартная процедура чтения), то программа считает основную память и все три специальных регистра.

При сохранении в файл и при его последующем открытии вся структура закладок редактора восстанавливается.

Если вы попытаетесь записать микросхему, откроется стандартное окно подтверждения записи с несколькими закладками. Закладка "Области" определяет соответствие областей (т.е. какие области из исходных файлов в какие области микросхемы будут записаны):

Рисунок: eMMC

Программа назначает области по умолчанию, однако вы их можете переназначить. Обратите внимание, что область CID не назначена. Это происходит потому, что регистр CID полностью состоит из полей только для чтения и его запись невозможна.

На закладке "Операции" можно управлять выполнением различных этапов при записи микросхемы. Обычно программа по умолчанию включает все операции. Однако для некоторых микросхем, включая eMMC, все немного по-другому:

Рисунок: eMMC

По умолчанию запись CSD и ECSD регистров будет выключена. Это сделано из соображений максимальной безопасности, поскольку данные регистры содержат однократно программируемые ячейки, и их изменение необратимо. Для защиты от необдуманных действий программа по умолчанию не включает запись таких регистров. Если вы абсолютно уверены, что вам нужно записать какой-либо из этих регистров, вручную включите соответствующую операцию, как показано на рисунке ниже:

Рисунок: eMMC

Кроме того, программа дополнительно запросит подтверждение выполнения, если была включена запись однократно программируемой области. Таким образом реализована трехуровневая защита от непреднамеренного повреждения микросхемы.

8. Выборочное чтение и запись регистров микросхемы

Кроме стандартной процедуры чтения, когда считываются все области микросхемы, в программе ChipStar реализовано выборочное чтение только одной области:

Рисунок: eMMC

Выборочное чтение может быть очень полезным при работе с такими микросхемами, как eMMC накопитель. При выборочном чтении можно быстро считать и сохранить, и, при необходимости, записать только одну область микросхемы. Например, мы считали только область регистра CSD, как показано на рисунке выше. Затем, если мы решим записать такой файл в микросхему, закладка "Области" диалога подтверждения записи будет выглядеть так:

Рисунок: eMMC

Программа поймет и правильно назначит единственную область исходного файла на соответствующую область целевой микросхемы. Но, в отличие от комплексной записи, при выборочной записи сразу будет включена операция записи данной области:

Рисунок: eMMC

Это вполне логично, поскольку это единственная область, которую можно записать. Однако, дополнительный запрос подтверждения на запись однократно программируемой области по-прежнему будет выдан.

9. Особенности записи регистра ECSD

Регистр ECSD содержит большое количество зарезервированных полей, не описанных в стандарте eMMC JEDEC, поэтому в целях безопасности программа записывает лишь некоторые ячейки ECSD. Остальные ячейки невозможно изменить в редакторе свойств ECSD, и они не будут записаны, даже если их значение вы измените в двоичном редакторе. Записываются только те ячейки, значения которых не совпадают со значениями, уже записанными в микросхеме.

Посмотреть другие статьи
вверх вверх