Comments 21
Ну что Вы, еще как используется. Например вы можете на ARM-борде использовать в качестве загрузчика EDK II, записав его в SPI флешку. Тогда вы будете иметь возможность загружаться с дисков GPT/UEFI. Как, например, Baikal M1000.
Да и нельзя забывать про BIOS и BMC.
Я про загрузчик, который вы описываете, ничего не знаю. Знаю u-boot, но что мешает спроектировать схемотехнику так, чтобы использовать eMMC?
eMMC лучше использовать как системный диск, ведь eMMC теперь впаивают большого объема. И при наличии EDK в SPI, еММС станет для пользователя обычным диском, как HDD на его лаптопе, куда он может инсталлировать OS (и ему не надо будет думать о Flash Layout и по каким адресам писать u-boot).
Вот неплохая обзорная статья по верхам:
Просто я пока не понимаю преимуществ NOR Flash, кроме явных недостатков.
EOL (цикл жизни)
SPI NOR может быть реально быстрее eMMC
Как я уже говорил XIP
Сильно проще разводка на плате
In conclusion, although SLC NAND, eMMC, and UFS have a lower cost per bit, NOR Flash devices can still be the best choice for an embedded system booting device, especially in applications that require very fast system boot-up time.
Вновь возвращаемся к вопросу, что это вымирающий мамонт. Ибо дорого.
Да ну ? :)
https://www.xilinx.com/products/intellectual-property/1-ii2qo3.html#productspecs
Как бы гляньте сколько места на кристалле съест, а если не на кристале, то опять же ножки и разводка тоже денег стоят.
Вот если бы вопрос был NAND vs eMMC вот тогда я бы согласился с каждым тезисом, а так нет неправда.
недостатки скорей у EMMC, нежели у SPI NOR Flash - старо, медленно, ненадежно, принципиально не нужно в ноутбуках, материнках и микрокомпьютерах (тенденция повсеместного внедрения NVME накопителей в качестве "взрослого диска", а для SPI NOR остается UEFI и прочие "начальные инициализации").
Тут вопрос сильно сложнее:
1) eMMC еще надо настроить (включить тактирование)
2) После включения доступна не вся память (основную еще надо настроить)
и т.д.
Это делает ZSBL (Zero-stage bootloader), который опять же надо откуда-то загрузить, а настроенной памяти может не хватать для всего функционала.
Тогда грузиться загручик следующего уровня (условно First stage bootloader) который настраивает память и допустим eMMC и т.д.
Получаеться, что SPI NOR настроить сильно проще это раз, во-вторых, как правило они обладают свойством XIP (Execute In Place), что вообще позволяет исполнять код прямо из флэшки.
Там надо ФС иметь соответствующие, типа jffs2, и прочие грабли и гемморои
Нет не нужно, для u-boot, kernel, initrd не нужно, там поиск и метка badblock's происходит при erase.
Для rootfs раздела - да нужно, если он не RO.
) eMMC еще надо настроить (включить тактирование)
2) После включения доступна не вся память (основную еще надо настроить)
и т.д.
Это делает ZSBL (Zero-stage bootloader), который опять же надо откуда-то загрузить, а настроенной памяти может не хватать для всего функционала.
Тут согласен, предзагрузчик надо куда-то записать. Но разве современные камни не имеют на борту памяти для такого старта?
Впрочем, когда ковырялся с калькулятором, то там тоже была NOR. Но мне эта битва с бедблоками изрядно подпортила нервов.
Тут согласен, предзагрузчик надо куда-то записать. Но разве современные камни не имеют на борту памяти для такого старта?
Зависит от... eMMC контроллер стоит всего бакс, но бакс это бакс =) Так же и с памятью.
А еще вопрос ножек остро стоит, SPI условно 4ре ножки - а eMMC ?
Так что скорее не "старые", "современные", а hight-end, low-end, мне так кажется.
У многих современных SoC есть встроенный bootloader для загрузки из eMMC. И тогда U-Boot и rootfs можно разместить на одном eMMC или SD-карте. Иногда так делают.
Но первичная загрузка из SPI-флэш распространена больше. Как минимум из-за большей надёжности и "дуракостойкости". Если eMMC откажет, будет перетёрта по ошибке и т.д., загрузчик в SPI останется и поможет восстановить устройство или хотя бы диагностировать проблему.
https://www.tianocore.org/ TianoCore EDK II
Срок жизни современных еммц на тлц памяти - полтора-три года. NOR живут десятилетиями без питания.
Или расчет на то, что нужно каждый раз отсоединять разъем программатора?
Два разъема как раз для того, чтобы быстро переключать плату то на программатор, но на целевую машину. Держать программатор подключенным постоянно практически не удобно.
Также в этом случае возникает другой вопрос: зачем вообще нужны резисторы 33 Ом? Ведь они лишь загрубляют фронты, укорачивая допустимую длину шлейфа.
Макетная плата SPI NOR Flash