Размер буфера не равен размеру чипа: как исправить ошибку при прошивке

Ошибка «размер буфера не равен размеру чипа» возникает в программах-прошивальщиках — CH341A Programmer, AsProgrammer, flashrom — когда открытый файл дампа по объёму не совпадает с заявленной ёмкостью выбранной микросхемы SPI Flash. Прошивальщик сравнивает количество байт в буфере с размером чипа, указанным в его базе, и при несовпадении блокирует запись, чтобы не испортить содержимое памяти.

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

Что означает эта ошибка

Программатор при работе держит в памяти буфер — область, куда загружается файл прошивки или куда складываются считанные с чипа данные. У каждой микросхемы памяти есть фиксированная ёмкость: например, у 25Q64 это 8 МБ, у 25Q128 — 16 МБ, у 24C02 — 256 байт. Если вы выбрали в программе чип на 8 МБ, а открыли файл размером 4 МБ, программа честно сообщает: размер буфера не равен размеру чипа.

Проверить размер файла можно прямо в проводнике Windows: правый клик по файлу дампа → Свойства. Смотрите значение в байтах, а не округлённые мегабайты. Для чипа на 8 МБ файл должен занимать ровно 8 388 608 байт, для 16 МБ — 16 777 216 байт.

Типичные причины несовпадения

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

  • 🔧 Выбрана не та модель чипа в программе — например, 25Q32 вместо 25Q64.
  • 📁 Файл дампа обрезан, скачан не полностью или взят от другой ревизии платы.
  • 🧩 Файл содержит несколько областей (BIOS + ME-регион), а чип физически меньше.
  • 💾 Дамп считан с ошибками и дописан «мусором» сверх реального размера.
  • 🔌 Программатор определил чип автоматически и ошибся — такое бывает при плохом контакте в прищепке.

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

Шаг 1. Проверяем, какой чип реально установлен

Начните с маркировки на корпусе микросхемы. На ней обычно написано что-то вроде W25Q64FV или MX25L12835F — последние цифры до буквенного суффикса указывают плотность в мегабитах: 64 мегабита = 8 МБ, 128 мегабит = 16 МБ. Перевод простой: делите число на 8.

Дальше — автоопределение в программе. В CH341A Programmer и AsProgrammer есть кнопка определения чипа (обычно подписана как Detect или иконка с лупой). Программа считывает JEDEC ID и предлагает список совместимых вариантов. Если в списке несколько чипов с одинаковым ID, но разной ёмкостью — выбирайте тот, что совпадает с маркировкой на корпусе.

⚠️ Внимание: если автоопределение каждый раз показывает разные ID или «FF FF FF», проблема не в файле, а в контакте прищепки или в питании чипа. Прошивать в таком состоянии нельзя — сначала добейтесь стабильного чтения ID.
📊 Где вы столкнулись с этой ошибкой?
CH341A Programmer
AsProgrammer
flashrom (Linux)
Другой софт

Шаг 2. Сверяем размер файла дампа

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

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

МаркировкаПлотностьРазмер файла (байт)
25Q16 / 25L160516 Мбит2 097 152
25Q32 / 25L320532 Мбит4 194 304
25Q64 / 25L640564 Мбит8 388 608
25Q128 / 25L12835128 Мбит16 777 216
25Q256256 Мбит33 554 432

Если дамп скачан с форума или извлечён из обновления производителя, имейте в виду: файл обновления BIOS с сайта вендора часто не равен полному образу чипа. Там может не хватать служебных регионов, либо, наоборот, присутствовать заголовок. Такой файл нужно готовить отдельно — например, обрезать или дополнить в HEX-редакторе, но только если вы точно понимаете структуру образа.

Шаг 3. Порядок безопасной прошивки

Когда размеры сошлись, действуйте по проверенной последовательности. Пропуск шагов — частая причина «кирпичей».

☑️ Перед записью прошивки

Выполнено: 0 / 5

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

⚠️ Внимание: прошивка микросхемы прямо на плате (через прищепку) не всегда возможна — питание от программатора может «утекать» в остальную схему, и чип работает нестабильно. Если чтение идёт с ошибками, возможно, микросхему придётся выпаять. Это работа с паяльником, и при отсутствии опыта её лучше доверить мастерской.

Особенности flashrom и других программ

В flashrom аналогичная ситуация выглядит как сообщение о несовпадении размера образа с размером флеша. Утилита при этом явно пишет оба числа, что упрощает диагностику. Типовой запуск чтения выглядит так:

flashrom -p ch341a_spi -r backup.bin

Если flashrom не может однозначно определить чип, он выводит список кандидатов и требует указать модель принудительно через параметр -c, например -c "W25Q64.V". Точное название нужно брать из вывода самой программы — оно зависит от версии базы чипов.

Почему файл от производителя «не подходит» по размеру

Образы обновлений BIOS/UEFI часто содержат только регион BIOS без дескриптора и ME-региона, либо наоборот — включают служебные заголовки и капсулы обновления. Поэтому их размер почти никогда не совпадает с полной ёмкостью чипа. Для прошивки программатором такие файлы нужно предварительно подготовить: извлечь тело прошивки из капсулы или встроить его в полный образ с сохранением служебных регионов. Конкретная структура зависит от платформы (AMI, Phoenix, Insyde) и ревизии платы.

В графических программах вроде AsProgrammer есть полезная деталь: при открытии файла меньшего размера некоторые версии предлагают дополнить буфер значениями FF до размера чипа. Это допустимо, только если вы уверены, что недостающая область действительно должна быть пустой. Для BIOS-регионов такое допущение может привести к нерабочей плате.

Частые вопросы

Файл меньше чипа — можно ли прошить, дополнив нулями?

Технически программа может дополнить буфер, но делать это стоит только если вы точно знаете структуру образа и что «хвост» чипа должен быть пустым (заполненным FF). Для полных дампов BIOS так делать нельзя — служебные области окажутся стёрты.

Программа определяет чип неправильно, что делать?

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

Размер совпадает, но после прошивки устройство не стартует

Совпадение размеров гарантирует только факт записи, а не корректность содержимого. Возможные причины: дамп от другой ревизии платы, повреждённые служебные регионы, ошибки записи. Попробуйте вернуть сохранённый бэкап и проверить верификацию.

Можно ли прошить чип большей ёмкости вместо штатного?

Иногда это работает (например, замена 25Q64 на 25Q128 с полным образом), но зависит от схемы конкретного устройства и того, как загрузчик адресует память. Универсального ответа нет — ищите подтверждённые случаи именно для вашей модели устройства.

Где взять правильный дамп для моей платы?

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