Что такое nand в роутере

В массовых моделях роутеров до недавнего времени преобладало полное господство SPI-NOR (serial) флэш-памяти. Она недорога, удобна, и очень стандартизована — в принципе, ее можно менять на платах даже между разными вендорами без каких-либо изменений в софте. В том числе, подобные устройства легко ремонтировать при появлении признаков износа — выпаивание старой, прошив и запайка новой микросхемы занимает пять минут с перекурами. Даже более, на многих моделях изначально разводят контактные площадки сразу и под SOIC-8, и под SOP-16, соединяя одинаковые пины и позволяя ставить любую флешку любого формфактора.

Но кроме преимуществ у SPI-NOR есть и недостатки. В первую очередь, это скорость записи, которая для сравнимого по цене nand выше почти на 2 порядка. Затем идет высокая удельная стоимость, которая к середине 2010-х годов сравняла по стоимости 16 Мбайт serial-NOR и 128 Мбайт parallel-NAND. Это привело к тому, что начинает использоваться более быстрая NAND-память в параллельном варианте. На данный момент parallel NAND активно вытесняется serial NAND, который собрал самые лучшие черты обоих типов флэш-памяти, но о нем здесь разговора не будет — с точки зрения замены чипов все сильно похоже на serial NOR.


Итак, в середине 2010-х годов начинается проникновение parallel-NAND флэш-памяти. С точки зрения износоустойчивости она представляет собой все тот же SLC-тип с 100 000 циклами перезаписи, но с точки зрения софта она изначально выстроена иначе. На NAND-flash допускается наличие видимых пользователю «битых» блоков уже с завода; причем их количество может расти по мере старения микросхемы. Потому применение NAND автоматически влечет за собой использование ECC для проверки данных и систему ремапа «плохих» блоков в «хорошие»; а также их запас на случай замены.

Здесь нужно сделать отступление о том, что логическая организация raw flash в Linux не является ни классическим блочным, ни классическим символьным устройством. Существует особая подсистема MTD (memory technology device). Она принимает на вход микросхему NAND в виде «как есть», то есть массив страниц и блоков (страница — минимально адресуемый для чтения/записи элемент, блок — минимально стираемый элемент; обычно блок заметно больше страницы; типичные значения для микросхем в 128 Мбайт: 2 Кбайт на страницу, 128 Кбайт на блок). Затем mtd внутри себя производит операции, за которые отвечает FTL (flash translation layer), например remap плохих блоков, выравнивание износа (wear leveling), особый стиль стирания — и после этого устройство доступно как «обычное» блочное, навроде жесткого диска.

Также стоит отметить, что алгоритм работы с «плохими» блоками определяется не столько производителем flash-памяти, сколько производителем NAND-контроллера и драйвера. Например, один и тот же чип flash с геометрией страница/oob/блок 2048/64/128K будет совершенно по-разному вести себя с чипсетом RT63368 (контроллер с т.н. BMT-таблицей) и MT7621 (контроллер со skip-листами). Основная заметная разница между BMT и SKIP в том, что SKIP просто помечает и пропускает «плохие» блоки, но при этом не скрывает их из вида. BMT-контроллер же производит прозрачный remap, и наружу никогда «плохие» блоки не выдает, а только их замены из подменного фонда.

Из-за такой очень своеобразной специфики работы для Flash плохо подходят традиционные ФС, особенно журналируемые. Постоянная запись и стирание определенного, строго заданного количества блоков гарантированно выведет их из строя. Поэтому были разработаны как особые ФС (JFFS2, Yaffs2, LogFS, F2FS), так и целые «многослойные» решения (например UBI/UBIFS), которые целиком заменяют весь блочный стек вида «device > device-mapper > lvm > filesystem» на «raw flash > ubi > ubifs (filesystem)», при этом позволяя как эффективно управлять местом, скрывая внутри все сложности FTL навроде wear leveling и обработку «плохих» блоков.

Для работы opkg-раздела в итоге был выбран вариант UBI + UBIFS, поскольку при этом максимально рационально используется ресурс перезаписей flash (ubi сам всегда делает wear leveling), а также слой ubi отвечает за обработу видимых «плохих» блоков.

Но и это еще не все — поскольку при работе с NAND «все начинается с контроллера», это приводит к несовместмости форматов записанного на flash на разных устройствах. Если SPI-NOR flash можно прошить обычным файлом на ПК через программатор, и это в неизменном виде будет работать на устройстве, то в случае с NAND «программатором» является сочетание «драйвер — контроллер SoC — чип», и записанное на ПК через программатор будет представлять собой кашу с точки зрения SoC. Этот вариант flash можно программировать или напрямую с устройства в замкнутом цикле, или (например) через аппаратные отладчики навроде JTAG.

Давайте рассмотрим эту плату:

19-10-09 18-13-13 9448.jpg

Казалось бы, что такого особенного? Обычный ZK LTE в виде платы с собственной персоной, ничего необычного (кроме отсутствия модема). Если не переворачивать…

19-10-09 18-12-22 9442.jpg

Что это такое сзади? Давайте рассмотрим поближе

19-10-09 18-12-26 9443.jpg

19-10-09 18-12-30 9444.jpg

Теперь стало понятнее — это сменная панель для корпуса TSOP-48, а именно для микросхем parallel-NAND flash-памяти.

Расмотрим еще, как именно панель крепится к плате:

19-10-09 18-12-36 9445.jpg19-10-09 18-12-46 9446.jpg19-10-09 18-12-55 9447.jpg

В «неофициальных» кругах это чудо инженерной мысли получило прозвище «матерь всех NAND», поскольку именно здесь можно запрограммировать NAND в понятном SoC формате.

Чтобы «добить» всю эту историю нужно понять, что процессор должен откуда-то начать загрузку. Да, у него обычно есть выводы, замыкая которые в землю можно выбрать режим flash — SPI NOR / parallel NAND, но от этого не легче. Прочитав нулевую страницу NAND чип увидит только «ff» полностью стертой микросхемы, впадет в осадок и все будет выглядеть как полный кирпич. То есть на устройство нужно записать bootloader, но это невозможно сделать из-за несовместимости форматов, а без него все так и останется кирпичом.

К счастью, именно у чипа RT63368 есть встроенная крохотная ПЗУ с микрозагрузчиком. Загрузившись в этот recovery режим можно дальше через xmodem передать драйверы RAM и NAND, включить их в работу и, затем передав через xmodem нужные данные корректно запрограммировать их на flash. Очень удобный способ «вытягивания себя за волосы», и особенно удобный для экспериментов с bootloader. Если на 7621 ваши опыты привели к стиранию flash, то кроме JTAG у вас нет никаких шансов; в случае с 63368 достаточно загрузиться в recovery-режим, записать новый bootloader и продолжить как ни в чем не бывало.

Ну и понятно, что на этапе разработки устройств с NAND это устройство на базе ZKLTE очень сильно помогло с разметкой и программированием parallel NAND flash.

Все это было написано, чтобы стало максимально понятно, что постоянная мелкая запись на flash — это очень вредно, и ее нужно минимизировать. Если нужен log — лучше разместить его в /tmp. Размещение БД на flash тоже не самая лучшая идея. А в связи с тем, что замена parallel NAND малореальна, то и «убитая» flash остается такой навсегда — до смены устройства. К частью, это касается только испорченных разделов, соседние этому не подвержены. И что радует еще сильнее — новые модели оснащаются уже SPI-NAND, который восстаналивается в программаторе в разы лучше.

Современные мобильные гаджеты, повышение быстродействия компьютерных систем и производство недорогих, но быстрых накопителей для хранения большого объема информации напрямую связано с микросхемами памяти.

В быстродействующих устройствах хранения данных используются микросхемы флеш-памяти. Анонсировали их в 1988-89 году, когда компании Intel и Toshiba представили память с архитектурой NOR (Intel) и NAND (Toshiba). Именно вторая разновидность стала наиболее популярной, так как имела больше возможностей для миниатюризации. Почему, сейчас разберемся.

Полевой транзистор с плавающим затвором — основа ячейки памяти

Основой всей технологии флеш-памяти, в том числе и NAND, является полевой транзистор с плавающим затвором. В общем случае его структура выглядит так:

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

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

Разумеется, так смогут сделать не все электроны, а только их часть — те, которые получили большую энергию. При этом они не пробивают слой диэлектрика в физическом смысле, а в соответствии со своими квантово-волновыми свойствами «перепрыгивают» сразу в плавающий затвор. Вернуться обратно «перепрыгнувшие» электроны не могут, так как у них для этого не хватает энергии.

То есть, мы можем подать напряжение и тем самым «затащить» электроны в плавающий затвор. Они там останутся,  когда мы включим транзистор в следующий раз ­— заряд, сосредоточенный на плавающем затворе окажет влияние на расположенный под ними канал между стоком и истоком: пропустит или не пропустит ток через транзистор независимо от напряжения на управляющем затворе. В самом простом случае мы получаем два состояния — ток есть или тока нет. Ноль и единицу. Что нам и требовалось.

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

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

В процессе развития и миниатюризации технология изготовления полевых транзисторов с плавающим затвором менялась и совершенствовалась. Если первые элементы памяти создавали в планарном виде на поверхности кристалла, то сейчас используется технология 3D NAND или V-NAND (разные маркетинговые названия), в которой структура транзистора сформирована не на горизонтальной плоскости, а на вертикальной. Это позволяет экономить площадь и увеличивать объем памяти, который размещается в одной микросхеме. Принцип работы транзистора при этом остается прежним.

Кроме того, сейчас используют не только металлические плавающие затворы. Появились технологии изготовления кристаллов микросхем, повышающие их надежность и позволяющие удерживать заряд в течение большего времени. Например, компания Samsung использует для захвата зарядов и работы в качестве «плавающего затвора» изолированные области из непроводящего материала нитрида кремния SiN. Они называются 3D Charge Trap Flash — «ловушки заряда». Их применение увеличивает срок хранения заряда, а, следовательно, и информации в ячейке, а также делает микросхемы экономичнее в плане энергопотребления.

NAND и NOR ячейки памяти — как они работают

Транзисторы с плавающим затвором соединяются в матрицы, хранящие слова данных по нужным адресам, разными способами. Основными являются NAND и NOR. Эти аббревиатуры представляют собой сокращения словосочетаний «Not AND» и «Not OR» — соответственно «И-НЕ» и «ИЛИ-НЕ».

Схематично способ построения матриц в двух случаях выглядит так:

Как видите из представленных схем, построение матрицы по схеме NOR удобно тем, что можно просто получить доступ к любой конкретной ячейке и записать информацию именно в нее. В случае с NAND несколько одиночных ячеек памяти соединены последовательно и для того, чтобы записать состояние «ноля» в одну из них, надо, чтобы все другие были открыты и пропускали ток.

Именно по этой причине стирание информации в микросхемы NAND-памяти производится поблочно, а для того, чтобы записать новые данные, обновляют информацию сразу для множества ячеек (осуществляют запись «постранично»). Но зато такая схемотехника позволила значительно упростить топологию и сократить размеры ячеек памяти на кристалле. Поэтому в современной микроэлектронике именно NAND-память является основной. И когда вы покупаете новый SSD-диск, то в нем стоят именно микросхемы с NAND-памятью.

Как в одной ячейке удается хранить до 4 бит данных

Небольшими размерами преимущества ячеек NAND-памяти не ограничивается.  Еще один интересный и полезный момент заключается в том, что в них можно записать не один, а несколько (до четырех) битов информации. Теоретически можно и больше, но пока реально можно говорить только о четырех, так как дальше начинаются серьезные технические сложности. Тем не менее, на мероприятии Flash Memory Summit 2019 представители компании Toshiba уже представили идею записи по пять бит данных в каждую ячейку. Но пока до практического применения дело ещё не дошло.

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

Это значит, что можно «загнать» в плавающий затвор (в 3D NAND — в «ловушку зарядов») столько электронов, сколько понадобится, чтобы пропускать определенный ток через транзистор при определенном значении порогового напряжения. Таких пороговых напряжений может быть несколько, так как есть возможность накопить заряд больше или меньше — столько, сколько потребуется, чтобы в ячейке записалась нужная информация. Далее, подавая на транзистор напряжение и контролируя ток, можно судить о его состоянии, то есть о том, какие данные он хранит.

Отсюда и возникают ячейки памяти, в которых хранится не один бит информации, а больше, вплоть до четырех. Поэтому вся память делится на две категории: SLC (сокращение от Single Level Cell — одноуровневые ячейки) и MLC (Multi Level Cell — многоуровневые ячейки).

С SLC-ячейками все просто. Это классические элементы памяти, которые хранят один бит с двумя состояниями, одно из которых соответствует заряженному затвору, а второе — разряженному.

MLC-ячейки в свою очередь подразделяются на:

  • MLC-ячейки. Это элементы памяти, в которых может храниться два бита информации. Соответственно, для этого надо точно фиксировать четыре режима работы транзистора, чтобы понять, какая из четырех комбинаций данных хранится — 00, 01, 10, 11.
  • TLC-ячейки. TLC — сокращение от Triple Level Cell, трехуровневая ячейка. В них может храниться три бита данных, а, следовательно, потребуется точно фиксировать уже восемь режимов работы транзистора.
  • QLC-ячейки. QLC — сокращение от Quad Level Cell, четырехуровневая ячейка. В ней помещается уже четыре бита данных. Но при этом надо фиксировать уже 16 режимов работы транзистора.

Такое увеличение плотности записи с одной стороны повышает объемы накопителей. Но с другой снижается надежность, так как требуется высокая точность записи состояния и последующего чтения данных. Увеличивается и время, которое тратится на чтение и запись данных, так как надо понять, в каком из 4, 8 или 16 режимов находится транзистор.

Дальнейшие перспективы технологии

Чтобы еще больше увеличить плотность хранения данных в одной ячейке и перейти на хранение пяти бит информации, потребуется контролировать уже 32 режима работы транзистора. Учитывая, что питание микросхем составляет единицы вольт, речь идет о том, чтобы соблюдать точность измерения и установки пороговых напряжений в сотые доли вольта. И это только одна из сложностей, которые надо решить.

Кроме того, надо решать такие задачи, как коррекция ошибок, надежность и количество циклов записи/чтения. Последняя проблема — одна из наиболее критичных, так как запись и чтение данных приводит к износу и уменьшению слоя диэлектрика между плавающим затвором и полупроводниковым каналом транзистора, а, следовательно, к выходу из строя ячейки. Именно этот момент является определяющим для времени безотказной работы памяти. Но, вполне возможно, что инженеры скоро найдут решение, позволяющее сделать следующий шаг в увеличении плотности записи. Тогда появятся еще более объемные твердотельные накопители  по низкой цене.

Вы наверное как и я любили в детстве все разбирать и изучать, как и что работает. Некоторые повзрослели, а я все еще люблю этим заниматься )). В этой статье, я расскажу о том, как вытащить прошивку с любого устройства и как разрабы пытаются это предотвратить.

У старых ламповых при­емни­ков не было вообще никаких про­шивок, а единс­твен­ная защита, которая у них была — это анод­ное нап­ряжение. В наше время все иначе: мне попада­ются гаджеты, которые пытаются противодействовать уже на эта­пе вскрытия кор­пуса. Нач­нем наше увлекательное путешествие.

Содержание

  1. Осмотр платы устройства
  2. Память
  3. EEPROM
  4. FRAM
  5. NOR/NAND Flash
  6. Корпуса микросхем
  7. Маркировка
  8. Типовой дизайн
  9. ПК
  10. Бытовые роутеры
  11. Устройства для ответственного применения
  12. IoT
  13. Смартфоны
  14. Расшифровка имени
  15. Поиск документации
  16. Оборудование
  17. Подготовка к чтению прошивки
  18. Чтение прошивки

Осмотр платы устройства

Ес­ли вскры­тие не показа­ло, что паци­ент умер от вскры­тия, я сна­чала осматри­ваю пла­ту в поис­ках пинов отла­доч­ных интерфей­сов — обыч­но это JTAG или UART. Глав­ная проб­лема не в том, что нуж­ные кон­такты могут быть в очень неожи­дан­ных мес­тах, а в том, что обыч­но они отклю­чены. Конеч­но, даже в 2021 году все еще хва­тает уни­кумов, которые отправ­ляют в прод устрой­ства с вклю­чен­ным UART, но количес­тво таковых стре­митель­но пада­ет.

Осмотр платы устройства

Ес­ли тебе не повез­ло — вари­антов нем­ного: или пла­кать в подуш­ку, или искать чип памяти на бор­ту и читать его непос­редс­твен­но.

И вот с этим тебя ожи­дает уйма инте­рес­ного! Думал, нуж­но прос­то вытащить вось­миногую мик­руху в DIP-кор­пусе, похожую на ста­рый чип с BIOS? Как бы не так! Сей­час есть минимум четыре отно­ситель­но широко при­меня­емых вида памяти, и некото­рые из них могут быть похожи друг на дру­га так, что не раз­личишь.

Память

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

Как вытащить прошивку из устройства

По опы­ту про­цес­сор (на скрин­шоте выше по цен­тру) обыч­но квад­ратной фор­мы и исполня­ется в BGA, а память пря­моуголь­ная и дела­ется в SOP-кор­пусах.

Час­то в уль­тра­пор­татив­ных вычис­литель­но мощ­ных устрой­ствах (смар­тфо­нах, нап­ример) исполь­зует­ся бутер­брод из про­цес­сора и памяти — так мень­ше раз­меры и задер­жки при работе. Форм‑фак­тор, конеч­но, BGA — прос­то потому, что ничего дру­гого в кро­хот­ный кор­пус запих­нуть нель­зя.

Снять прошивку микросхемы

ROM — пос­тоян­ную память — отли­чить доволь­но лег­ко. Пред­положим, чип с ней ты уже нашел. Теперь давай раз­берем­ся, какая она быва­ет.

Нас инте­ресу­ет EEPROM (Electrically Erasable Programmable Read-Only Memory), FRAM (сег­нето­элек­три­чес­кая память) и NOR/NAND flash — они тебе уже и так зна­комы. Из них ты мог не слы­шать толь­ко о FRAM — ее начали при­менять око­ло пяти лет назад, так что она еще не осо­бо популяр­на.

EEPROM

Сре­ди осо­бен­ностей этой памяти — побай­товые чте­ние и запись. Такая память самая дол­говеч­ная: по рас­четам, она может сох­ранять информа­цию в течение при­мер­но двух­сот лет! Но за надеж­ность при­ходит­ся пла­тить — глав­ным обра­зом объ­емом, с котором у это­го вида памяти все пло­хо: типич­ный объ­ем такого чипа изме­ряет­ся в килобай­тах. Из‑за низ­кого объ­ема для хра­нения про­шивок этот тип памяти поч­ти не при­меня­ется. Ну а раз загово­рили о минусах — сто­ит и о низ­кой ско­рос­ти ска­зать.

Устройство ячейки памяти EEPROM

Устройство ячейки памяти EEPROM

Ре­сурс ячей­ки — око­ло мил­лиона цик­лов переза­писи. По срав­нению с сов­ремен­ными ячей­ками NAND, у которых этот показа­тель находит­ся в пре­делах нес­коль­ких десят­ков тысяч цик­лов, EEPROM-память прос­то нере­аль­но надеж­ная.

РЕКОМЕНДУЕМ:
Как снять дамп прошивки и получить доступ к консоли управления гаджета

FRAM

FRAM — это сов­сем новый тип энер­гонеза­виси­мой памяти. Про­мыш­ленно его при­менять ста­ли все­го нес­коль­ко лет назад, так что шанс встре­тить имен­но FRAM в каком‑нибудь умном холодиль­нике неболь­шой, но ско­ро все может поменять­ся. Пока что основная проб­лема в цене, которая нес­коль­ко выше, чем у дру­гих типов памяти.

Ус­трой­ство FRAM-ячей­ки. Похоже на DRAM, прав­да?

Ус­трой­ство FRAM-ячей­ки. Похоже на DRAM, прав­да?

От EEPROM отли­чает­ся фун­дамен­таль­но дру­гим прин­ципом запоми­нания информа­ции: хра­нит­ся не заряд на зат­воре, а знак поляри­зации сег­нето­элек­три­ка. При при­ложе­нии нап­ряжения она меня­ется на про­тиво­полож­ную, что поз­воля­ет читать такую память и писать в нее.

Из‑за нового прин­ципа работы такая память зна­читель­но быс­трее, чем EEPROM, но ее дол­говеч­ность оста­лась прак­тичес­ки неиз­менной.

NOR/NAND Flash

NOR/NAND-флеш‑память — это прос­то EEPROM, соб­ранный в мас­сив. NOR от NAND отли­чает­ся толь­ко спо­собом упа­ков­ки в мас­сив, но это неболь­шое раз­личие ведет к дос­таточ­но силь­ным отли­чиям в такой памяти.

NOR NAND-флеш‑память

NOR быс­трее и надеж­нее, чем NAND, но сто­ит дороже из‑за мень­шей плот­ности ком­понов­ки. NAND же, нап­ротив, дешевый как мусор, но име­ет проб­лемы с надеж­ностью.

NOR- и NAND-память исполь­зует­ся в SSD и вся­ких флеш­ках. Из‑за низ­кой надеж­ности NAND-памяти такие накопи­тели в обя­затель­ном поряд­ке име­ют боль­шой пул запас­ных яче­ек, недос­тупных для обыч­ного исполь­зования, и умный кон­трол­лер, который всем этим хозяй­ством рулит. Дер­жать такой овер­хед в шир­потреб­ных умных муль­тивар­ках неп­рости­тель­но дорого, так что при­меня­ется обыч­но NOR, а NAND оста­ется для поль­зователь­ских накопи­телей, где проб­лемы надеж­ности мож­но перело­жить на поль­зовате­ля, который не дела­ет бэкапы. Хотя нет — даже в дешевых роуте­рах он все чаще при­меня­ется бла­года­ря прог­рам­мным механиз­мам защиты целос­тнос­ти.

Сводная таблица NOR NAND FRAM EEPROM

Сводная таблица NOR NAND FRAM EEPROM

NOR был бы иде­ален, если бы не его цена, так что рыночек порешал — и теперь у нас всех исполь­зует­ся NAND поч­ти вез­де. Даже во встра­иваемой тех­нике уже поч­ти научи­лись с ним безопас­но работать — кон­троль­ные сум­мы, ECC-коды и резер­вные бло­ки. Кра­сота!

Корпуса микросхем

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

Корпуса микросхем

Корпуса микросхем

Маркировка

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

Маркировка микросхем

Ес­ли мар­киров­ка есть — немал шанс встре­тить ее имен­но в таком фор­мате, как показан на кар­тинке выше. Пер­вые две бук­вы — код вен­дора, потом тип памяти в чипе, потом внут­ренний номер серии — и даль­ше уже чет­кой логики не прос­лежива­ется.

Так как еди­ного стан­дарта нет и не пред­видит­ся, про­изво­дите­ли воль­ны писать на сво­их чипах, что счи­тают нуж­ным. Это порой при­водит к кол­лизи­ям, вро­де того, что пред­став­лено на той же кар­тинке: два чипа раз­ных про­изво­дите­лей, оба 29-й серии, но один NOR, а дру­гой — NAND. Короче, не уга­даешь, и такие чипы при­ходит­ся про­бивать в поис­ковиках, что­бы выяс­нить хоть что‑то.

Типовой дизайн

Ус­трой­ства одно­го сег­мента про­екти­руют­ся очень похожи­ми — это впол­не оче­вид­но. Нап­ример, все бытовые роуте­ры изнутри выг­лядят поч­ти оди­нако­во. Та же ситу­ация на рын­ке устрой­ств SCADA, у которых свои каноны, но они прос­лежива­ются вез­де без осо­бых изме­нений.

Я рас­ска­жу о пяти катего­риях устрой­ств, с которы­ми тебе, воз­можно, при­дет­ся иметь дело:

  • ПК;
  • се­тевое обо­рудо­вание бытово­го сег­мента (роуте­ры, свит­чи, точ­ки дос­тупа);
  • обо­рудо­вание для ответс­твен­ных при­мене­ний (на заводах);
  • IoT — интернет вещей;
  • смар­тфо­ны.

Са­мо собой, мир кру­тит­ся не толь­ко вок­руг смар­тфо­нов да компь­юте­ров, но с ними у тебя шанс встре­тить­ся куда боль­ше, чем с каким‑нибудь кон­трол­лером для управле­ния ракет­ными дви­гате­лями. Поэто­му давай рас­смот­рим типовое устрой­ство толь­ко этих пяти катего­рий девай­сов.

ПК

Ус­трой­ство обыч­ных ПК под­разуме­вает модуль­ность, то есть поч­ти все детали мож­но лег­ко вынуть. Из‑за это­го на мат­пла­те из эле­мен­тов памяти есть толь­ко флеш­ка с BIOS/UEFI. При этом BIOS обыч­но сидит на мик­росхе­мах 24-й серии — I2C EEPROM, а в новых моделях сто­ит 25-я серия SPI NOR flash с UEFI.

Вытащить прошивку компьютера

Ес­ли же уста­нов­лен взрос­лый инте­лов­ский про­цес­сор с под­дер­жкой ME — на пла­те мож­но най­ти вто­рую такую же флеш­ку, но с про­шив­кой для ME. Это дела­ется в целях безопас­ности: находя­щуюся на физичес­ки отдель­ной мик­росхе­ме про­шив­ку заразить или под­менить слож­нее.

Intel ME

Intel Management Engine — это осо­бая сис­тема для UEFI-сов­мести­мых ПК на базе про­цес­соров Intel. Она име­ет свою выделен­ную мик­росхе­му памяти и собс­твен­ный про­цес­сор, а так­же собс­твен­ные каналы дос­тупа к сетевым адап­терам и основной опе­ратив­ной памяти. Может без огра­ниче­ний вза­имо­дей­ство­вать поч­ти с чем угод­но в сос­таве компь­юте­ра, что очень силь­но повыша­ет тре­бова­ния к ее защите.

Бытовые роутеры

С роуте­рами пот­ребитель­ско­го клас­са все доволь­но прос­то: тут ста­вят память SPI NOR 25-й серии, если тре­бует­ся не боль­ше 8 Мбайт, или NAND-память объ­емом поболь­ше. Изредка мож­но най­ти eMMC, но мне такое пока не попада­лось.

Вытащить прошивку роутера

Устройства для ответственного применения

Тут все нем­ного слож­нее. Стан­дарты тре­буют стран­ных вещей, поэто­му с боль­шим шан­сом устрой­ства этой катего­рии будут сос­тоять из нес­коль­ких плат, соеди­нен­ных переход­ными интерфей­сами. Будет мно­го раз­ных запоми­нающих устрой­ств, что­бы прос­то прой­ти сер­тифика­цию.

Дамп прошивки

Ло­ги обыч­но пишут­ся в EEPROM или FRAM 24-й серии, заг­рузчик лежит на NOR 25-й серии, а все встро­енное ПО кла­дут на NOR 26-й, 29-й серии. NAND исполь­зуют ред­ко, а если исполь­зуют — сра­зу боль­шими мас­сивами с резер­вирова­нием.

IoT

Сей­час понятие IoT слиш­ком рас­тяжимое: по сути, туда мож­но записать вооб­ще все умное домаш­нее и даже не очень домаш­нее. Из‑за это­го память там может быть любая: хоть EEPROM, хоть eMMC — это ког­да NAND с хост‑кон­трол­лером упа­кова­ны в один чип.

Дамп прошивки устройства умного дома

Смартфоны

В смар­тфо­нах обыч­но все самое передо­вое: тут тебе и eMMC, и eUFS, и даже NVMe SSD, как у Apple. При этом, как ни кру­ти, все эти чипы выг­лядят плюс‑минус оди­нако­во, так что ты их ни с чем не спу­таешь.

Вытащить прошивку телефона

Расшифровка имени

Те­перь, ког­да наш­ли нуж­ный чип и про­чита­ли мар­киров­ку, ее нуж­но декоди­ровать. Кста­ти, мар­киров­ка далеко не всег­да чита­ется целиком: часть может быть слу­чай­но или намерен­но скры­та, а то и вов­се под­делана, как любят устра­ивать китай­цы со сво­ими деталя­ми на Али.

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

Пох­валь­ный при­мер — про­изво­дитель Micron, который дал на сай­те внят­ную инс­трук­цию и фор­му для получе­ния даташи­та на свои мик­росхе­мы.

Расшифровка имени чипа

Ес­ли же декоде­ра нет, при­дет­ся вык­ручивать­ся. Мож­но поп­робовать разоб­рать­ся по схе­ме на скрин­шоте ниже, но, естес­твен­но, безо вся­ких гаран­тий успе­ха. Воз­можно, даже луч­ше сра­зу идти к япон­цам — они очень любят неадек­ватно запутан­ные наз­вания без извес­тной логики. Она, конеч­но, есть, но пока что ник­то ее не смог понять.

Расшифровка имени чипа

Поиск документации

Гуг­лить, думаю, ты и сам уме­ешь, но для поис­ка докумен­тации ко вся­ким экзо­тичес­ким чипам это может быть бес­полез­но. Во‑пер­вых, более эффекти­вен поиск по пер­вым N сим­волам наз­вания мик­росхе­мы. Во‑вто­рых, час­то про­ще най­ти по коду на Aliexpress или дру­гих круп­ных тор­говых пло­щад­ках.

Ес­ли уж любишь Google, поп­робуй поиск по кар­тинкам — там порой мож­но най­ти то, что тек­стом не ищет­ся.

Еще огромные базы чипов есть в ПО для прог­рамма­торов — я исполь­зую ПО ком­пании Elnec. Зачас­тую там даже есть даташи­ты, но слиш­ком на это наде­ять­ся не сто­ит.

И еще одно хорошее мес­то для поис­ков — GitHub. С боль­шим шан­сом там най­дет­ся что‑нибудь по зап­росу в духе «X microcircuit read poc». Даль­ше мож­но выд­рать ссыл­ку на даташит или что‑то еще полез­ное. Мне попада­лись даже скры­тые сер­висные коман­ды для бло­киров­ки/раз­бло­киров­ки чипа, что, конеч­но, очень при­ятно при изу­чении.

Оборудование

Тут мож­но толь­ко ска­зать, чего делать не сто­ит: не надо брать дешевые инс­тру­мен­ты и рас­ходни­ки. Из моего любимо­го — при­пой, который пла­вит­ся при совер­шенно неожи­дан­ных тем­перату­рах, про­водя­щий флюс (!) и одно­разо­вые пин­цеты.

Под­робнее хочет­ся рас­ска­зать о дешевом флю­се. Как при­мер — ТТ, так­же извес­тный как розовый гель. Он хорош, но он не отмы­вает­ся и про­водит ток на высоких час­тотах. Это не проб­лема в совет­ском радио или даже сов­ремен­ном бло­ке питания, но вот на пла­тах компь­юте­ров с гигагер­цами час­тоты он катего­ричес­ки про­тиво­пока­зан.

Сня­тие ком­паун­да — это воп­рос тем­перату­ры. Я обыч­но грею феном на ~250 гра­дусов, но есть одна проб­лемка. И сос­тоит она в том, что под ком­паун­дом ком­понен­ты могут быть при­паяны низ­котем­ператур­ным при­поем, вро­де спла­вов Розе или Вуда. Да, ком­паунд ты сни­мешь, но вмес­те с ним сой­дет полови­на пла­ты. А хит­рая флеш­ка может не завес­тись без кучи рас­сыпухи, которую обратно уже не соб­рать.

При сня­тии ком­паун­да не забывай о вытяж­ке — твое здо­ровье важ­нее любой мик­росхе­мы!

Что делать, если пла­та пок­рыта лаком? Мож­но поп­робовать свес­ти его аце­тоном, но он может пов­редить тек­сто­лит. Делай так, толь­ко если тебе терять нечего. Для осталь­ных слу­чаев — прос­то сни­мать скаль­пелем в нуж­ных мес­тах, а осталь­ное не тро­гать.

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

микросхема снять прошивку

К завод­ско­му при­пою час­то име­ет смысл при­мешать менее тугоп­лавкий сплав Розе или ПОС63, ну или сплав Вуда, если все сов­сем пло­хо. Это зна­читель­но понизит тем­перату­ру пай­ки и уве­личит шан­сы не сжечь мик­руху.

Подготовка к чтению прошивки

Пос­ле выпай­ки ни в коем слу­чае нель­зя устра­ивать мик­росхе­ме тем­ператур­ные испы­тания: пусть полежит и осты­нет сама, а не в спир­те — так шан­сы сох­ранить работос­пособ­ность куда выше. Даль­ше нуж­но про­верить, все ли лап­ки чипа находят­ся в одной плос­кости и не обра­зова­лись ли от при­поя перемыч­ки меж­ду нож­ками. Их нуж­но убрать, что­бы не спа­лить прог­рамма­тор, не име­ющий защиты от такого, и сам чип тоже.

Подготовка к чтению прошивки

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

Чтение прошивки

Пом­ни, что память NOR flash идет с завода без битых яче­ек, а у NAND есть допус­тимый про­цент бра­ка, так что, если в NAND вид­ны битые ячей­ки, не спе­ши расс­тра­ивать­ся.

Чтение прошивки

Прог­рамма­тор перед чте­нием нуж­но пра­виль­но нас­тро­ить. В час­тнос­ти, надо зас­тавить его читать все, вклю­чая сис­темные стра­ницы в начале и кон­це памяти — они быва­ют край­не важ­ны!

Раз­работ­чики чипа нас­тоятель­но рекомен­дуют раз­работ­чикам устрой­ства исполь­зовать свои чипы в соот­ветс­твии с некото­рыми пра­вила­ми. Но вто­рые воль­ны не под­чинять­ся пер­вым, так что сис­темные стра­ницы порой ока­зыва­ются хра­нили­щем клю­чей шиф­рования или каких‑то дру­гих дан­ных. В общем, читай все — лиш­ним точ­но не будет.

РЕКОМЕНДУЕМ:
Способы защиты микроконтроллера

Вот теперь у тебя есть образ, который мож­но гру­зить в IDA и ковырять­ся даль­ше, но это уже тема для отдель­ной статьи.

Статья написа­на по мотивам док­лада Демида Узень­кова — спе­циалис­та ком­пании ИНФО­РИОН. Выс­тупле­ние сос­тоялось на кон­ферен­ции RuCTFE 2020. За помощь в под­готов­ке пуб­ликации редак­ция бла­года­рит коман­ду «Ха­кер­дом».

Уровень сложности
Простой

SSD очень быстрое запоминающее устройство и если разобрать его, то можно увидеть что он представляет собой печатную плату, с множеством чипов Flash памяти, типа NAND, именно они хранят информацию, а рядом с ними распаиваются контроллер и dram память.

Контроллер отвечает за связь накопителя с компьютером и осуществляет операции чтения/записи, а DRAM служит как небольшой кэш и ускоряет доступ к данным.

Устройство SSD

Устройство SSD

В некоторых SSD на обратной стороне или на отдельной плате размещаются дополнительные чипы памяти и ряд ёмких конденсаторов, они позволяют безопасно выключить устройство при резком отключении питания. (Аппаратный PLP)

Обратная сторона платы

Обратная сторона платы

Другие твердотельные накопители, такие как USB-накопители и карты памяти имеют похожее строение, только в них нет DRAM, меньше чипов памяти и устанавливается менее производительный контроллер.

Твердотельные накопители

Твердотельные накопители

Чтобы более детальней понять их работу, нужно рассмотреть как работает чип Flash памяти. Разобрав его, видно что состоит он из множества кристаллов,

Кристаллы 3D NAND

Кристаллы 3D NAND

если подробней рассмотреть один из них, то видно что большую часть кристалла занимает массив ячеек и лишь небольшая область отводится под буфер и логику.

Устройство кристалла

Устройство кристалла

Если проникнуть внутрь кристалла, то видно что он имеет трёхмерную структуру, состоящую из рядов вертикально уложенных ячеек Флеш памяти,

Внутри кристалла

Внутри кристалла

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

Устройство ячейки V-NAND

Устройство ячейки V-NAND

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

Схематичное устройство ячейки NAND-памяти

Схематичное устройство ячейки NAND-памяти

Чтобы записать информацию, на сток и управляющий затвор подается высокое напряжение, это позволяет электронам пройти сквозь диэлектрик и остаться на плавающем затворе.

Запись в ячейку NAND-памяти

Запись в ячейку NAND-памяти

Для удаления заряда, на управляющий затвор подается высокое отрицательное напряжение, а на исток — положительное.

Удаление заряда с ячейки NAND-памяти

Удаление заряда с ячейки NAND-памяти

Каждый такой цикл записи и стирания разрушает слой диэлектрика, так что число перезаписи на ячейку ограничено.

Считывание не приводит к этому эффекту и проверять что записано в ячейке, ноль или единица, можно сколько угодно раз для этого, на управляющий затвор подаётся напряжение и проверяется, может ли идти ток по транзистору:

Считывание ячейки NAND-памяти (нет заряда)

Считывание ячейки NAND-памяти (нет заряда)

Если на плавающем затворе много электронов, то ток идти не будет, значит это единица. Если их немного, то ток пойдет, значит это ноль.

(У некоторых производителей, ячейка может считываться наоборот)

Считывание ячейки NAND-памяти (есть заряд)

Считывание ячейки NAND-памяти (есть заряд)

Так считываются одноуровневые ячейки SLC, если же материал плавающего затвора способен захватить много электронов, а электроника способна размещать на плавающем затворе разные уровни зарядов и распознать несколько пороговых напряжений, то такая ячейка может хранить несколько бит информации. Например QLC ячейки могут хранить 4 бита информации, но для этого нужно различать 16 пороговых напряжений.

(Информация с SLC ячеек считывается и отправляется на контроллер почти без задержек. Чипы с QLC ячейками имеют внутреннею задержку в связи с необходимостью формирования специального сигнала для каждой ячейки и распознавания его)

Пороговые напряжения

Пороговые напряжения

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

Матрица ячеек NAND-памяти

Матрица ячеек NAND-памяти

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

Страница в 4 килобайта

Страница в 4 килобайта

Множество страниц формируют блок, размером 512 килобайт, это минимальная область которая может быть стёрта. То есть, если нужно переписать информацию всего лишь одной страницы, придётся стирать данные аж с целого блока и потом снова записывать.

Блок размером 512 килобайт

Блок размером 512 килобайт

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

Контроллер SSD

Контроллер SSD

Если посмотреть на блок схему типичного контроллера, то видно что он состоит из 32 битного RISC процессора который выполняет инструкции микропрограммы и может иметь до 4 ядер. Так же есть DDR-контроллер отвечающий за работу с внешним DRAM-буфером, есть блок ecc, отвечающий за обнаружение и коррекцию ошибок, есть блоки интерфейсов отвечающие за обмен данными с чипами памяти и внешними интерфейсами и есть блоки отвечающие за шифрование и другие функции, которые могут меняться в зависимости от необходимого функционала.

Блок-схема контроллера SSD

Блок-схема контроллера SSD

Помимо контроллера, на скорость накопителя влияет интерфейс подключения. Существует множество форм-факторов SSD с разными интефейсами подключения и разной скоростью, но чаще всего в обычных компьютерах используются 2,5-дюймовые SSD или формата M.2.

Интерфейсы накопителей

Интерфейсы накопителей

2,5-дюймовые SSD имеют интерфейс SATA, третьего поколения, такой интерфейс обеспечивает пропускную способность до 600 Мбайт/с. Накопители mSATA (mini-SATA) имеют такой же интерфейс.

Serial ATA (SATA) интерфейс

Serial ATA (SATA) интерфейс

В SSD M.2 используется один из двух интерфейсов: SATA3 или PCIe. В зависимости от количества выделенных линий и версии PCIe скорость может отличаться. Например PCI-E третей версии и с четырьмя выделенными линиями имеет пропускную способность до 4ГБ/с.

M.2 SSD

M.2 SSD

Так же такие накопители имеют несколько вариантов ключей. Есть накопители с B, M и B+M коннекторами.

Варианты ключей M.2

Варианты ключей M.2

В SSD M.2 используется один из двух интерфейсов: SATA3 или PCIe. В зависимости от количества выделенных линий и версии PCIe скорость может отличаться. Например PCI-E третей версии и с четырьмя выделенными линиями имеет пропускную способность до 4ГБ/с.

Add-in-Card

Add-in-Card

Так же есть SSD в виде платы расширения которые подключаются напрямую в PCI-Express слот материнской платы. Некоторые модели таких накопителей могут использовать 8 и даже 16 линий слота PCIe, что даёт пропускную способность выше 6ГБ/с.

Малораспространённые форм-факторы

Малораспространённые форм-факторы

Кроме этого есть ещё много разных форм факторов, например U2, U3, NF1, и другие (EDSFF, 1.8 дюймовые), но ничем серьёзным, кроме размеров и коннекторов они не отличаются, да и используются они в основном в серверах и рабочих станциях.

3D XPOINT SSD

3D XPOINT SSD

Так же, хочется сказать что существует ещё один вид SSD накопителей, в которых вместо чипов Flash памяти используются чипы с технологией 3D crosspoint, в них в качестве ячеек не используются транзисторы с плавающим затвором и такие накопители быстрей обычных, но к сожалению у меня мало информации про эту технологию, так что на этом у меня всё.

Ниже оставлю видео версию статьи, кому лень читать.

ZEDA

just joined

Posts: 7
Joined: Thu Apr 03, 2014 4:33 pm

what is difference flash vs nand?

Sun Sep 18, 2016 11:10 pm

Hi!
please help me and describe what is difference between flash and nand storage in Routerboard?
I search in google but i found «nand flash» vs «nor flash».
and this tow type storage how many have write cycle ?
excuse me for bad english
thank you

IntrusDave

Forum Guru
Forum Guru

Posts: 1286
Joined: Fri May 09, 2014 4:36 am
Location: Rancho Cucamonga, CA

Re: what is difference flash vs nand?

Mon Sep 19, 2016 2:14 am

You do not have the required permissions to view the files attached to this post.

ZEDA

just joined

Topic Author

Posts: 7
Joined: Thu Apr 03, 2014 4:33 pm

Re: what is difference flash vs nand?

Mon Sep 19, 2016 11:05 am

Thank you
but this is that I founded in google
that is compare «nor flash» vs «nand flash»

but in routerboard.com only write «flash» or «nand» not explaine what is flash.
and not explain how many write cycle each have

User avatar
vozglobal

just joined

Posts: 19
Joined: Tue Jan 27, 2015 5:34 pm
Location: Fuentealbilla — España
Contact:

Re: what is difference flash vs nand?

Wed Oct 17, 2018 10:16 am

Thank you
but this is that I founded in google
that is compare «nor flash» vs «nand flash»

but in routerboard.com only write «flash» or «nand» not explaine what is flash.
and not explain how many write cycle each have

hello, you found an answer, for this case.

I am investigating on the subject, and still can not find an answer

Theking2

just joined

Posts: 21
Joined: Thu Aug 04, 2016 9:41 pm

Re: what is difference flash vs nand?

Tue May 04, 2021 9:16 pm

I like to know the same thing.

What is the difference between these:
flash-boot —
flash-boot-once-then-nand —
nand-if-fail-then-ethernet —
nand-only —
try-ethernet-once-then-nand —

There seems to be an option to boot from flash or from nand (or from a bootp server)
What is the difference between boot from flash and from nand. If the firmware is updated does this relate to flash only or to nand only or to both?

mada3k

Long time Member
Long time Member

Posts: 646
Joined: Mon Jul 13, 2015 10:53 am
Location: Sweden

Re: what is difference flash vs nand?

Tue May 04, 2021 9:56 pm

Generally…

NOR Flash is limited to 16MB, but it exists 32M and 64M as well. NAND Flash can be several gigabytes.
NOR Flash is like a SD-card or SSD-drive. It’s a self-contained device manages itself (mapping, wear-leveling, error-handling etc.) and is mostly used for loading firmware or boot image.
NAND Flash is «raw flash» that needs a controller to manage it. It’s useless without something that manages it (like a controller in a SSD-drive)

icsterm

Frequent Visitor
Frequent Visitor

Posts: 58
Joined: Sun Mar 11, 2018 11:11 pm

Re: what is difference flash vs nand?

Fri Sep 10, 2021 7:58 am

I would also like to know if flash-boot means USB boot.
The wiki does not explain anything about the difference between nand-boot and flash-boot.

Другие наши интересноые статьи:

  • Что такое fiber в роутере
  • Что такое nat pmp в роутере
  • Что такое fastlane на роутере
  • Что такое mtu в роутере asus
  • Что такое nat loopback в роутере

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии