Клип для прошивки биоса

Обновлено: 20.11.2024

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

Найдите правильный BIOS.
Во-первых, вам нужно найти копию исходного BIOS. Если у вас нет резервной копии, снимите видеокарту, снимите кулер, проверьте, какой чип памяти используется (Samsung/Hynix/Micron/Elpida), включая точную модель (например, H5GQ8H24MJR). Осмотрите карту с обеих сторон, найдите номер модели (на наклейках и самой карте), серийные номера, ревизию платы, тактовую частоту (например, 1386M) и запишите все это. В этом же случае удалите пыль с вентиляторов зубной щеткой, очистите карту спиртом и ватными тампонами, а затем снова нанесите термопасту.

Перейдите к базе данных TPU VGA и начните поиск своей карты как в официальных, так и в непроверенных загрузках. Используйте информацию, которую вы только что собрали: погуглите номер модели, SKU, найдите официальные частоты графического процессора и памяти. Большинство BIOS в базе данных TPU перечисляют модель платы, частоту графического процессора и памяти, поддерживаемую марку и модель памяти, количество выходов DP/DVI/HDMI, а иногда загрузчик предоставляет дополнительную информацию внизу страницы. Сравните собранные данные с базой данных и загрузите все возможные совпадения.

Вы также можете обратиться к поставщику и попросить копию BIOS. На самом деле некоторые поставщики публикуют обновления BIOS на веб-сайте продукта.

Есть ли переключатель BIOS?
Многие современные графические карты поставляются с двумя чипами BIOS (бесшумный и производительный) и небольшим переключателем, предназначенным для переключения между ними. Обычно он находится над выходами монитора или рядом с разъемом питания PCIe. Если ваша карта оснащена им, все, что вам нужно сделать, это просто нажать на переключатель. Если вы хотите перепрошить чип с неправильным ПЗУ, просто нажмите переключатель еще раз перед прошивкой (пока система все еще включена).

Не удается выполнить POST/BOOT
Существует несколько способов решения проблемы с графической картой, которая не может выполнить POST и выдает черный экран при включении системы.

<р>1. Если ваша карта имеет двойной BIOS, просто нажмите переключатель BIOS.
2. Используйте встроенную графику (встроенную графику), если она доступна. Просто подключите монитор к входу/выходу материнской платы.
***Если вы получили сообщение об ошибке дополнительной видеокарты, просто включите «Intel Multi-Display / iGPU Multi-Monitor» в BIOS материнской платы***
3. Возьмите старую видеокарту PCI.
4. Еще одна графическая карта PCIe и материнская плата с ДВУМЯ слотами x16 PCI Express.
5. Программатор флэш-памяти SPI, например FlashcatUSB или CH341A.

А как насчет ноутбуков?
Устранение неисправности флэш-памяти на ноутбуке более сложное и может быть очень сложным. В основном потому, что в некоторых ноутбуках видео-BIOS интегрирован с BIOS материнской платы на одном чипе. Прежде чем взломать его, попробуйте использовать внешний монитор и внешнюю видеокарту. Это может сработать для вас, но если вам не повезло, видео BIOS обычно расположен рядом с графическим процессором, но может быть где угодно, даже интегрирован с материнской платой. Если вы можете обнаружить это, попробуйте те же методы, перечисленные выше. Если он интегрирован, используйте программатор SPI flash и обязательно сделайте дамп перед внесением каких-либо изменений.

Перепрошивка карт AMD
Загрузите утилиту перепрошивки AMD и распакуйте ее в нужную папку. Скопируйте файлы BIOS в ту же папку.

Сначала попробуйте версию с графическим интерфейсом (AMDVBFlashWin), если она не работает, используйте версию командной строки (найдите cmd.exe и запустите ее с правами администратора).

Перейдите к папке, в которую вы поместили файлы:

***Если папка C:\Users\David\Downloads\Новая папка, используйте "CD C:\Users\David\Downloads\Новая папка\"***

Введите: "amdvbflash -i", чтобы увидеть, какой идентификатор адаптера является заблокированной картой.

amdvbflash -unlockrom 0
amdvbflash -f -p 0 имя_файла.rom

***Измените 0 на правильный идентификатор адаптера, а filename.rom на файл видео BIOS***

ОШИБКА: 0FL01
К сожалению, это общая ошибка без конкретной информации. Это может быть что угодно! Из-за плохих драйверов, неправильного ПЗУ, недостаточного количества привилегий, сломанного транзистора и даже поврежденного чипа BIOS. В этом случае можно попробовать прошить из режима DOS, UEFI Shell, Linux или с помощью SPI flash программатора.

Адаптер не найден.
Попробуйте замкнуть контакты 1-5 видео-BIOS, как показано выше, или используйте программатор SPI flash.

Прошивка карт Nvidia
Загрузите модифицированный NVIDIA NVFlash и распакуйте его в какую-нибудь папку. Скопируйте файлы BIOS в ту же папку.

Запустите cmd.exe с правами администратора и перейдите в папку, в которую вы поместили файлы:

***Если папка C:\Users\David\Downloads\Новая папка, используйте "CD C:\Users\David\Downloads\Новая папка\"***

Введите: "nvflash64_patched_5.590.0 -a", чтобы узнать, какой идентификатор адаптера является заблокированной картой.

nvflash64_patched_5.590.0 --index=0 --protectoff
nvflash64_patched_5.590.0 --index=0 -6 имя_файла.rom

***Измените 0 на правильный идентификатор адаптера, а filename.rom на файл видео BIOS***

Ошибки с NvFlash
Старые версии NvFlash лучше работают со старым оборудованием. Например: v5.287 и графические процессоры Maxwell или v5.105 и графические процессоры Fermi.
Иногда NvFlash просто любит "капризничать" ни с того ни с сего, если такое случилось, просто перезагрузитесь и попробуйте прошить еще раз.

ОШИБКА: видеоадаптеры NVIDIA не найдены.
Попробуйте замкнуть накоротко контакты 1-5 видео-BIOS, как показано выше, или используйте программатор SPI flash.

Если вы используете сокет SOP8, нажмите на границу сокета и поместите микросхему BIOS в соответствии с деталями контактов сокета SOP8.

PIN 1 на микросхеме BIOS:

Если вы получаете эту ошибку (ошибки) с программатором CH341A, подключенным к чипу BIOS:

Эта ошибка (ошибки) вызвана плохим подключением клипа или неправильной версией программного обеспечения.

Попробуйте выполнить следующие действия:
Выйдите из программы C341A.
Отключите программатор ch341a от USB.
Отсоедините тестовую клипсу от микросхемы биоса.
Подключите тестовую клипсу к биосу. чип.
Подключите программатор ch341a к USB.
Запустите программу C341A.
ИЛИ
Попробуйте другую версию программы.

Джунджу

УСТАНОВИТЕ ДРАЙВЕР, ПРОЧИТАЙТЕ, ПРОВЕРЬТЕ, СОХРАНИТЕ РЕЗЕРВНУЮ КОПИИ:

Разархивируйте загруженный пакет и установите драйверы ch341a (запустите CH341PAR.EXE)

Извлеките батарею CMOS из материнской платы.
Подключите тестовую клипсу к микросхеме биоса.
Подключите программатор ch341a к USB.
Запустите CH341A_c.exe из папки программы CH341A v1.29.

Перейдите к "Авто" и снимите флажки "Стереть" и "Пустой флажок":

Нажмите кнопку "Читать" и дождитесь завершения процесса:

Теперь нажмите "Подтвердить" и дождитесь завершения процесса:

Внимание! Прежде чем продолжить ЧАСТЬ 3, проверьте содержимое файла резервной копии.

Вы можете сравнить файл резервной копии с исходным файлом BIOS с сайта производителя, используя один шестнадцатеричный редактор.

Содержимое файлов отличается, но очень похоже.

Lost_N_BIOS
Запустите чтение, затем проверьте, как только появится сообщение "Соответствие чипа/буфера", нажмите "Сохранить", а затем откройте этот файл в шестнадцатеричном редакторе и убедитесь, что это действующий BIOS, а не все FF.< /p>

Если это все FF, то подтверждено, что это недействительный пробел, и вам нужно использовать другую версию программного обеспечения или идентификатор CHIP и повторять попытку, пока вы не получите проверенную и действительную резервную копию).

Zitat
Lost_N_BIOS
Затем установите драйвер из вышеуказанного пакета. Затем откройте программное обеспечение по вашему выбору, чтобы попробовать сначала, я уже пробовал сначала самую новую версию. Нажмите «Обнаружить», и если он обнаружит ваш чип по ID OK, выберите его. Иногда вам может понадобиться выбрать меньше, чем полный идентификатор, или также отличный от идентификатора, например, BIOS заканчивается на FV, иногда BV работает лучше, но вы поймете это позже, если до этого дойдет. Как только вы это сделаете, нажмите «Прочитать», а когда это будет сделано, нажмите «Подтвердить». Если все в порядке, нажмите «Сохранить BIOS». Убедитесь, что после прочтения он должен сказать, что чип и буфер или память совпадают, тогда, возможно, это хороший проверенный файл (не всегда). Откройте этот файл в шестнадцатеричном редакторе и убедитесь, что это не все FF. Затем повторите это раз или два и сравните эти два проверенных файла, если они всегда хорошие файлы и совпадают, тогда, вероятно, все в порядке. Сохраните этот BIOS в безопасном месте в качестве резервной копии. . Убедитесь, что он правильно открывается и выглядит правильно в любых инструментах редактирования BIOS, с которыми вы знакомы, тогда вы будете знать, что все в порядке.

Примеры файлов резервных копий (верные и неправильные):

Джунджу

СТЕРЕТЬ И ПРОШИТЬ BIOS

После проверки и сохранения резервной копии нажмите кнопку "Стереть" и дождитесь завершения процесса:

Теперь нажмите кнопку "Пробел" и дождитесь завершения процесса:


Внимание!
Если появится следующее окно при нажатии пустой кнопки:

Zitat
Lost_N_BIOS
Chip Main Memory Not Null = это означает, что вы стерли (должны быть все FF), а затем запустили пустую проверку, и она обнаружила не все FF (еще некоторые другие данные), поэтому стирание не полное. Также скажут, что если не стирать, а просто запускать пустую проверку, когда знаешь, что там есть данные.

Возможное решение:

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

Если не получается, можно попробовать так (можно использовать термоусадочную трубку):

Если появится сообщение "Основная память чипа пуста", вы можете перейти к следующему шагу. Нажмите кнопку "Открыть" и найдите новый файл биоса:

После открытия нового файла биоса нажмите кнопку "Авто" и дождитесь завершения процесса:

Программирование новых чипов:

Если у вас есть новые микросхемы, сначала ознакомьтесь с разделом "Сведения о сокете SOP8" (в части 1 этого руководства) и выполните следующие действия:

Запустите программное обеспечение CH341A, установите тип микросхемы биоса, нажмите «DETECT» (или просто нажмите кнопку «DETECT»), теперь нажмите кнопку «BLANK» и дождитесь завершения процесса:

Если появится сообщение «Основная память чипа не пуста», нажмите кнопку «СТЕРЕТЬ» и дождитесь завершения процесса. Теперь нажмите кнопку «ПУСТОЙ» и дождитесь завершения процесса.


Нажмите кнопку «Открыть» и откройте файл «*.bin»:

Перейдите к кнопке «Авто» и оставьте отмеченными только опции «Записать» и «Проверить»:

Теперь нажмите кнопку «Авто» и дождитесь завершения процесса:


Прасант

Привет, я новичок на этом форуме. Большое спасибо за подробную информацию, она очень полезна.

Развейте, пожалуйста, мои сомнения.

1) Я хотел бы прошить свой чип Intel Mobo. У меня есть только файл «.bio» (955 КБ), а не файл «.bin». Могу ли я использовать этот файл «.bio» для прошивки?
( Мое устройство очень старое DG35EC, смотрите прикрепленное изображение чипа)

2) Поддерживает ли устройство и программное обеспечение чип на изображении?

Потерян_N_BIOS

Редактирование Фернандо: Lost_N_BIOS не был в сети с января 2021 года.

Потерян_N_BIOS

@junjoo - Спасибо за исправление изображений!!

Надеюсь, у вас будет отличный Новый год!!

Редактирование Фернандо: Lost_N_BIOS не был в сети с января 2021 года.

миколай612

Ребята, ради бога.
Зачем вы используете это дурацкое китайское приложение для программатора CH341A? Кроме того, что большинство из нас использует взломанную и нелегальную версию этого приложения (которая почему-то сломана, особенно более поздние версии), даже платная (10 долларов США) не особенно лучше.

Для программирования биоса я рекомендую использовать AsProgrammer 1.41, который является бесплатным и достаточно хорош для большинства задач.
Программатор CH341A (китайский) не позволяет мне программировать чип биоса графического процессора (Winbond 1.8V), потому что нет ничего подобного в его базе данных (префикс Q80), но нет такой проблемы с AsProgrammer, который сразу обнаруживает чип и программирует его за считанные секунды. бесплатная альтернатива.

макнб

Привет, ребята! Только что присоединился к форуму после того, как некоторое время побродил по нему и почерпнул уроки из этого замечательного руководства. Спасибо @junjoo и @Lost_N_BIOS.

Я пытаюсь решить проблему с моей старой материнской платой (Z77X-UP5), которая решила войти в цикл загрузки при включении питания.
Материнская плата имеет 2-разрядный светодиодный дисплей, а также два светодиода для отображения какой BIOS используется (основной или резервный). Есть переключатель для выбора основного или резервного BIOS.

При включении питания светодиодный дисплей останавливается с кодом «15», а затем с кодом «32», затем светодиод BIOS переключается с основного на резервный и автоматически перезагружается.
Перезапуск теперь выполняется с помощью Backup BIOS и выполняет такой же. 15..32. переключиться на основной биос. автоматический перезапуск навсегда.
Однажды я увидел код «db», который, по-видимому, означает, что прошивка BIOS не удалась. Я предполагаю, что резервная флэш-память была автоматически перенесена на основную, которая не удалась (. ).
Поэтому мое предположение заключается в том, что оба BIOS неисправны.

Несколько недель назад был обновлен основной BIOS до модифицированного BIOS с драйверами NVME UEFI. Этот BIOS отлично работал при загрузке с твердотельного накопителя NVMe.

Возможно, BIOS был неправильно прошит.

Итак, я следовал этому руководству. Купил программатор CH341A с кабелем Clip.Установил драйвера под windows (у меня WIN10) и отдельный ноут.

Я отключил все (блок питания, диски, батарею CMOS, графический процессор и т. д.) на материнской плате (кроме процессора, так как он смазан жидкой термопастой).

Но я просто не могу заставить CH341A обнаруживать чипы BIOS.
Микросхемы BIOS: MX25L6406E:

Я попытался разместить клип очень осторожно, убедившись, что он находится над всеми 8 контактами чипа BIOS.
Если я использую CH341a_c.exe (v1.29), он не обнаружит чип и зеленый цвет. Светодиод RUN на плате CH341 никогда не активен.
v 1.34 также не может обнаружить микросхемы BIOS:

Если я использую версию 1.18, она также не обнаружит чип, но эта версия позволяет мне нажать кнопку «ЧИТАТЬ» и перейти к BIOS (светодиод RUN горит зеленым), НО он считывает 8 МБ нулей.

Итак. Я переключился на другой ПК. под управлением Linux и установленным приложением командной строки FLASHROM.
Он тоже не может обнаружить чип. за исключением одного случая, когда ему удалось что-то прочитать. Вывод команды был следующим:

Но если я открою файл BIOS, который он прочитает с помощью UEFITool, это будет только частичный BIOS. инструмент говорит, что модули UEFI отсутствуют (есть регион GBe и показывает MAC-адрес моей локальной сети).

Я попробовал программатор CH341A на плате расширения PCIe USB3.0 - у него есть флэш-чип Pm25LD512, и FLASHROM в Windows удается его прочитать, но не CH341A.EXE (поскольку в его базе данных нет этого чипа).

Итак, вопрос в том, неисправен ли мой новый USB-программатор CH341A или чипы BIOS моей материнской платы не работают?

Неважно. Я решил свою проблему. Если кому-то интересно, посмотрите этот пост.

стоворсен

Хорошее руководство, спасибо.

Потерян_N_BIOS

Ах, я вижу, вы поняли, спасибо, что тоже опубликовали свое решение! Теперь вы можете попробовать и вышеописанное, если вы еще этого не сделали (кабели блока питания подключены)

Используйте USB 2.0, стандартный пост, USB 3 может быть и нормально, но я бы не стал полагаться на это через дополнительную карту USB 3.

Редактирование Фернандо: Lost_N_BIOS не был в сети с января 2021 года.

биос47

здравствуйте, мой ноутбук (acer aspire 4752z с кодом материнской платы je40hr и биосом Windbond w25q32bvsig) просто застрял в логотипе acer и не может войти в биос. Я думаю это из-за того, что битый файл биоса, поэтому я попытался прошить его с помощью ch341a. Но, к сожалению, чип не был обнаружен в ch341a 1.29 и в приложении Android. тупо хоть и не определяется у меня все равно пишет чип и зеленый светодиод все равно горит. после этого на ноуте остается только светодиод питания, который загорается без нажатия кнопки и через несколько мгновений гаснет потом через 5 секунд снова загорается. теперь состояние ноутбука вообще не включается без светодиода питания и заряда светодиода.

тонимонтон

Привет, ребята! Только что присоединился к форуму после того, как некоторое время побродил по нему и почерпнул уроки из этого замечательного руководства. Спасибо @junjoo и @Lost_N_BIOS.

Я пытаюсь решить проблему с моей старой материнской платой (Z77X-UP5), которая решила войти в цикл загрузки при включении питания.
Материнская плата имеет 2-разрядный светодиодный дисплей, а также два светодиода для отображения какой BIOS используется (основной или резервный). Есть переключатель для выбора основного или резервного BIOS.

При включении питания светодиодный дисплей останавливается с кодом «15», а затем с кодом «32», затем светодиод BIOS переключается с основного на резервный и автоматически перезагружается.
Перезапуск теперь выполняется с помощью Backup BIOS и выполняет такой же. 15..32. переключиться на основной биос. автоматический перезапуск навсегда.
Однажды я увидел код «db», который, по-видимому, означает, что прошивка BIOS не удалась. Я предполагаю, что резервная флэш-память была автоматически перенесена на основную, которая не удалась (. ).
Поэтому мое предположение заключается в том, что оба BIOS неисправны.

Несколько недель назад был обновлен основной BIOS до модифицированного BIOS с драйверами NVME UEFI. Этот BIOS отлично работал при загрузке с твердотельного накопителя NVMe.

Возможно, BIOS был неправильно прошит.

Итак, я следовал этому руководству. Купил программатор CH341A с кабелем Clip. Установил драйвера под windows (у меня WIN10) и отдельный ноут.

Я отключил все (блок питания, диски, батарею CMOS, графический процессор и т. д.) на материнской плате (кроме процессора, так как он смазан жидкой термопастой).

Но я просто не могу заставить CH341A обнаруживать чипы BIOS.
Микросхемы BIOS: MX25L6406E:

Я попытался разместить клип очень осторожно, убедившись, что он находится над всеми 8 контактами чипа BIOS.
Если я использую CH341a_c.exe (v1.29), он не обнаружит чип и зеленый цвет. Светодиод RUN на плате CH341 никогда не активен.
v 1.34 также не может обнаружить микросхемы BIOS:

Если я использую версию 1.18, она также не обнаружит чип, но эта версия позволяет мне нажать кнопку «ЧИТАТЬ» и перейти к BIOS (светодиод RUN горит зеленым), НО он считывает 8 МБ нулей.

Итак. Я переключился на другой ПК. под управлением Linux и установленным приложением командной строки FLASHROM.
Он тоже не может обнаружить чип. за исключением одного случая, когда ему удалось что-то прочитать. Вывод команды был следующим:

Но если я открою файл BIOS, который он прочитает с помощью UEFITool, это будет только частичный BIOS. инструмент говорит, что модули UEFI отсутствуют (есть регион GBe и показывает MAC-адрес моей локальной сети).

Я попробовал программатор CH341A на плате расширения PCIe USB3.0 - у него есть флэш-чип Pm25LD512, и FLASHROM в Windows удается его прочитать, но не CH341A.EXE (поскольку в его базе данных нет этого чипа).

Итак, вопрос в том, неисправен ли мой новый USB-программатор CH341A или чипы BIOS моей материнской платы не работают?

Неважно. Я решил свою проблему. Если кому-то интересно, посмотрите этот пост.

@macnb
У меня та же проблема, и я следил за вашей веткой с решением. если я включаю материнскую плату, результат при чтении чипа будет FF. Если я делаю это без питания, это 00. Ни в коем случае я не могу заставить его читать чип. Можете ли вы найти решение?

Мой давний ноутбук, который сопровождал меня несколько лет, умер некоторое время назад во время обновления BIOS. Зачем обновлять BIOS, если это процесс, известный как блокировка компьютеров? Ну, из-за Intel и их замечательных уязвимостей спекулятивного исполнения. Итак, после обновления ПК больше не включался (при этом включались только вентиляторы и подсветка клавиатуры). Как вы понимаете, обычные процедуры сброса BIOS не сработали. Итак, вот история о возвращении его из мертвых.

Небольшой фон

Поэтому я обычно склоняюсь (и стараюсь) покупать машины, которые кажутся довольно надежными и простыми в ремонте, даже если для этого придется немного пожертвовать своей спиной. Таким образом, после нескольких лет использования компьютера Asus низкое разрешение экрана — 1366x768 — на 15,6-дюймовом экране стало проблемой для разработки программного обеспечения. В результате еще в 2016 году я привез 17,3-дюймовую боевую машину MSI PE70 6QE, в результате чего в очередной раз пожертвовал своей спиной.

Машина была довольно надежной на протяжении всего срока службы; однако его процессор Skylake-H Intel® Core™ i7-6700HQ 6-го поколения был среди тех, кто пострадал от уязвимостей Meltdown и Spectre. Эта уязвимость на платформе Intel может позволить злоумышленнику получить информацию, которая в данный момент обрабатывается на компьютере, запустив вредоносную программу для получения данных от других запущенных программ (чего не должно происходить).

Обновление и блокировка BIOS

Процесс обновления BIOS казался довольно простым: загрузите файл BIOS, поместите файл на USB-накопитель, войдите в BIOS, обновите, подтвердите. Процесс прошел, как и ожидалось, с сообщением «Обновлено успешно» в конце. Однако с этого момента ПК больше никогда не загружался. Чтобы восстановить его, я попробовал несколько вещей:

Нажата кнопка сброса BIOS. Нет эффекта.

Извлек батарейку CMOS (CR2032) и выключил и снова включил компьютер (попытавшись включить его с отключенными батареей и зарядным устройством). Снова установил аккумулятор и никаких признаков жизни.

Попытался перепрошить его, подключив флешку со всеми возможными номенклатурами восстановления BIOS ( SUPPER.ROM , *.BIO , AMIBIOS.ROM , …), которые ничего не дали.

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

Магазины по ремонту бытовой техники в Португалии

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

Один магазин заявил (без диагностики), что единственный способ решить проблему — это заменить всю материнскую плату (приблизительная стоимость 80 евро). Я подумал, что это не решение, поэтому отказался от предложения.

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

Не имея никаких шансов найти какие-либо ремонтные мастерские, которые могли бы решить мою проблему, я сдался (на какое-то время) и по пути купил новый компьютер.

Возвращение MSI из мертвых

Некоторое время назад, из-за моего интереса к обратному инжинирингу вещей IoT, я начал искать дешевые инструменты, которые я мог бы использовать, чтобы извлечь их прошивку из чипов и понять, что делают устройства. Среди этих инструментов был мини-программатор CH341A, который стоит около 4 евро и уже поставляется с некоторыми полезными вспомогательными инструментами, такими как 8-контактный тестовый зажим.

CH341A — это микросхема интерфейса USB, которая может эмулировать связь UART, стандартный параллельный порт, параллельный порт памяти и синхронный последовательный порт (I2C, SPI). 1

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

Итак, почему бы не попытаться починить ноутбук? По крайней мере, хуже быть не может.

Процесс кажется довольно простым: откройте ноутбук, удалите все источники питания (включая CMOS), найдите микросхему BIOS, подключите зажим и зажим к CH341A, подключитесь к ПК и используйте один из доступных инструментов для прошить новой прошивкой с сайта MSI.

Прежде всего, давайте идентифицируем BIOS SPIflash. Как правило, эта микросхема физически находится рядом с батареей CMOS, поэтому кандидат с высокой долей вероятности выделен КРАСНЫМ цветом на картинке платы. Тем не менее, есть некоторые другие чипы (выделены ЖЕЛТЫМ цветом), которые, вероятно, являются другими SPIflash (с другими обязанностями). Тем не менее, прежде чем замуровывать что-либо еще, давайте проверим маркировку на этих чипах 2 .

Один из ЖЕЛТЫХ имел маркировку MX IC, и хотя этот чип упоминается на нескольких форумах, похоже, он не относится к BIOS.

Единственной читаемой маркировкой на КРАСНОМ чипе было «25864CS1G». После недолгих поисков выпал репозиторий GitHub, в котором говорилось о модификации BIOS ноутбука Lenovo. Разные производители ПК часто используют одинаковые или одинаковые чипы, поэтому это был красный флаг: возможно, это тот самый. Итак, в блоге дополнительно документируется чип и процедура прошивки 3 :

Микросхема BIOS получила название «25864CS1G». Это одна из серийных микросхем флэш-памяти Winbond емкостью 8 МБ/64 МБ. В качестве программатора я использовал CH341A и прошил его в категории «W25Q64FW». Также не забывайте, что вам понадобится крокодил SOP8 и извлеките батарею/батарейку BIOS перед прошивкой.

Итак, давайте прошьем EEPROM. CH341A совместим с ИС с терминологией x25XXX и x24XXX. Это соответствует идентифицированному Winbond SPIflash. Теперь все, что нужно, это подключить клип к EEPROM. Существует несколько программаторов, совместимых с программатором CH431A, и я выбрал AsProgrammer (только для Windows), доступный здесь 4 .

  • Красный кабель обозначает контакт 0, поэтому будьте внимательны при подключении его соответствующим образом как к CH341A, так и к материнской плате (точка обозначает контакт 0).
  • Подключите все до подключения USB-порта. Возня с зажимом при подключенном USB-разъеме может привести к побочным эффектам, подобным синему экрану.

Подключив USB-порт и открыв AsProgrammer, я смог читать и писать с чипа, ага!

Итак, сбросив текущую (и, полагаю, битую) прошивку в файл, я прошил чип последней версией с сайта поддержки MSI. После перезагрузки ПК он несколько раз перезагрузился, а затем появился экран BIOS!

УСПЕХ! Все прошло лучше, чем ожидалось. Мне удалось все правильно настроить, отформатировать и установить Windows 10. Теперь она запущена и работает после того, как два разных магазина оборудования объявили ее мертвой.

Напоминаем, что официальной документации (например, схем) по материнской плате нет. ↩

Документация и другие инструменты для CH341 доступны в этом репозитории. ↩

Без работающего BIOS невозможно запустить даже самое мощное оборудование. В некоторых редких случаях микросхема BIOS в вашей системе может быть повреждена, что сделает вашу систему полностью непригодной для использования. Чтобы исправить эту ситуацию, а также по другим причинам, таким как простое резервное копирование, настройка, модификация или включение скрытых функций, интересно перепрограммировать ПЗУ BIOS. Недавно я попал в ситуацию, когда микросхема BIOS в моем Lenovo X1 Yoga вышла из строя. Чтобы исправить это, я купил минипрограмматор CH341a. В этом посте вы можете найти задокументированные шаги, которые я предпринял, чтобы перепрошить BIOS и вернуть к жизни свой ноутбук.

Как упоминалось во введении, чип BIOS моего ноутбука Lenovo X1 Yoga был поврежден, и мне удалось исправить ситуацию, перепрошив его с помощью работающего ПЗУ BIOS. В этой статье я повторю шаги, которые я предпринял на Dell Precision T1700 MT. Процесс точно такой же.

Видео на YouTube

Если вам интересно, я также создал видео на YouTube из этого сообщения в блоге. Если вы предпочитаете классический текст, вы можете просто следовать остальной части этой статьи:

Существует несколько способов (пере)программирования содержимого микросхемы BIOS. Самый простой — запустить средство обновления/программирования BIOS непосредственно на рабочей машине. BIOS в основном используется только во время начальной загрузки и может быть безопасно перепрошит на запущенной системе. Очевидно, что для того, чтобы это работало, система все еще должна загружаться. Если это больше не так, вам потребуется перепрограммировать BIOS, используя другое устройство.

Микросхемы BIOS поставляются в нескольких различных упаковках. Сегодня, по моему опыту, в большинстве случаев используется корпус SOIC-8. Это распаянная 8-контактная (2×4) микросхема. Так было с Lenovo X1 Yoga, а также с Dell Precision T1700 MT и некоторыми другими системами, которые я проверял.

1) Программист

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

Существует множество различных типов программаторов, но наиболее популярной моделью, скорее всего, из-за ее широкой доступности по низким ценам на Ebay, Amazon или Aliexpress, является минипрограмматор CH341a:

Это устройство допускает различные варианты программирования/прошивки микросхем SPI flash или BIOS, а также других типов EEPROM типа 24XX и 25XX, которые можно найти в различных устройствах, таких как маршрутизаторы, точки доступа, видеокарты и т. д., и подходит для программирования микросхемы BIOS SOIC-8, которые в наши дни используются во многих системах.

2) Адаптер, кабель или зажим

Если микросхема BIOS вставлена ​​в гнездо, вы можете снять микросхему с платы и поместить ее на программатор (с адаптером). Если он припаян к плате, вам нужно будет либо выпаять его, либо использовать зажим/зажим, соответствующий типу корпуса вашего чипа BIOS.

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

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

Остальные соединения должны следовать тому же правилу. На минипрограмматоре CH341a также есть указание, куда следует вставить пин 1. Как видите, это ближе к середине: верхний ряд, 4-й контакт слева направо, схемы контактов для микросхемы SPI/BIOS (тип 25).

При подключении микросхемы к программатору убедитесь, что материнская плата обесточена, а программатор не подключен к USB, так как это потенциально может повредить/удалить или даже сломать микросхему BIOS.

3) Найдите микросхему BIOS на материнской плате

Расположение микросхемы BIOS на материнской плате не всегда понятно. Поиском микросхем, похожих на микросхему SOIC-8, можно уже многое исключить. Если вам повезет, рядом с ним есть метка, такая как BIOS или SPI. Также я заметил, что в большинстве случаев это не слишком далеко от батареи CMOS. К сожалению, нет фиксированного правила.Вероятно, вам придется немного поискать или возлагать надежды на могущественный Google, чтобы найти кого-то еще, кто уже прошел через то же упражнение.

Для системы Dell я обнаружил микросхему BIOS в нижней правой части материнской платы рядом с меткой «SPI»:

Для моего Lenovo X1 Yoga найти было сложнее, так как на ноутбуке есть пластиковая пленка, закрывающая внутренние компоненты, и я не хотел полностью ее снимать. Он оказался рядом с сотовым модемом, под разъемом для экрана:

4) Определите тип микросхемы BIOS

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

Для системы Dell, которую я использовал, текст был довольно читаемым, если сделать правильное макроизображение и увеличить масштаб:

Ярлык входит в число обнаруженных типов: MX25L3273E.

Что касается Lenovo X1 Yoga, я не смог прочитать этикетку, так как она каким-то образом смылась. Я мог видеть только этикетку Winbond. После быстрого поиска в Google я обнаружил, что для этого устройства тип SPI был W25Q128FV.

Окна

Возможно, есть и другие рабочие инструменты, но я считаю, что этот дает наилучшие результаты с CH341a. Драйвера для программатора были не нужны. Он просто работал при подключении к USB в Windows 10.

Линукс

Для Linux, как и для Windows, вам понадобится инструмент для чтения/записи в SPI. Здесь я использовал flashrom, который входит в состав репозиториев большинства дистрибутивов. Как и в Windows, для распознавания и использования CH341a в моей системе не требовалось никаких дополнительных модулей ядра.

Вы можете легко установить flashrom с помощью диспетчера пакетов.

Например, для Debian 10:

Как для Windows, так и для Linux одна и та же последовательность шагов может быть следующей:

  1. Подключите скрепку к микросхеме BIOS, ничего не должно быть запитано
  2. Подключите зажим или адаптеры к программатору CH341a.
  3. Подключите программатор CH341a к USB.
    Я рекомендую использовать удлинительный кабель, а не подключать его напрямую к USB-порту.
  4. Запустите инструмент для программирования (AsProgrammer для Windows, flashrom для Linux)
  5. Убедитесь, что вы настроили правильный тип программатора и чипа BIOS.
  6. Прочитайте данные с чипа дважды и каждый раз сохраняйте их в файл
  7. Проверьте контрольную сумму обоих файлов.
    Это нужно для того, чтобы убедиться в отсутствии повреждений при чтении данных с чипа. Поскольку чтение в этом состоянии может повредить его.
  8. Записать правильный/измененный файл в чип
  9. При желании выполните еще одно чтение и проверьте его контрольную сумму с записанным файлом, чтобы убедиться, что содержимое совпадает с тем, что вы в нем записали.

Программирование под Windows

Мы начинаем с шага 5, как описано выше. После запуска AsProgrammer нам сначала нужно настроить его на использование CH341a. Это можно сделать в аппаратном меню:

Далее. мы можем щелкнуть значок, чтобы определить тип чипа:

Как упоминалось выше, программист не всегда может определить точный тип и выдает вам список возможных вариантов. Мы идентифицировали чип Dell BIOS как тип MX25L3273E, поэтому мы можем выбрать его из списка здесь.

Далее, шаг 6, мы можем считать данные с чипа, щелкнув значок с зеленой стрелкой. После завершения чтения сохраните вывод в файл, щелкнув значок сохранения (диск).

Важно повторить этот шаг дважды, так как нам нужно убедиться, что связь с IC работает должным образом:

После завершения и сохранения второго дампа BIOS мы можем сравнить два файла, чтобы убедиться, что они точно такие же. Это шаг 7. Мы можем сделать это легко, рассчитав по ним контрольную сумму MD5. В Windows это можно сделать с помощью certutil с помощью следующей команды:

В приведенном выше выводе мы видим, что оба файла сгенерировали один и тот же хэш, поэтому они идентичны. Это хороший показатель того, что связь с ИС и программистом работает должным образом.

Оба файла теперь можно сохранить в качестве резервной копии на случай, если что-то пойдет не так или если вы захотите перепрошить BIOS до более старой версии.

Далее мы наконец можем записать новое или измененное содержимое в микросхему BIOS. Это можно сделать, сначала открыв ROM-файл в AsProgrammer с помощью кнопки «Открыть», затем щелкнув стрелку вниз рядом с кнопкой записи и выбрав «Снять защиту» -> «Стереть» -> «Программировать» -> «Проверить»:

Вы можете следить за ходом выполнения и статусом в нижней части окна:

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

Программирование под Linux

Действия в Linux такие же, как и в Windows. Только здесь мы будем использовать flashrom инструмента командной строки. Как и в Windows, нам нужно пройти шаг 5 и установить правильный программатор и тип BIOS. Самый простой — запустить инструмент и дать ему попробовать определить тип микросхемы BIOS:

Как и в случае с AsProgrammer, мы видим, что flashrom может предложить выбор, но нам все еще нужно указать точный тип с помощью параметра -c. Поскольку наш тип — MX25L3273E, теперь мы можем прочитать содержимое чипа и сохранить его в файл backup1.bin с помощью следующей команды:

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

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

backup1.bin и backup2.bin можно сохранить на потом, поскольку они являются надлежащей резервной копией текущего содержимого вашего чипа BIOS.

Следующий шаг — записать резервную копию, дамп или модифицированный файл с помощью flashrom. На этот раз мы используем параметр -w и указываем входной файл:

При желании здесь также можно прочитать содержимое еще раз и сравнить контрольную сумму MD5 с файлом, который мы использовали в качестве входных данных (bios.bin).

В приведенном выше примере я вернул ранее сохраненный файл, поэтому flashrom был достаточно умен, чтобы обнаружить это и выдать мне предупреждение об этом.

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

26 мыслей на тему "Программирование BIOS или SPI в Windows или Linux с использованием мини-программатора CH341a"

Спасибо за это прекрасное руководство, оно сэкономило мне уйму времени на самостоятельные исследования. В частности, программатор CH431A поставляется без каких-либо инструкций, хотя это очень недорогой элемент, который займет очень много времени, чтобы сделать его самостоятельно.
В настоящее время мне нужно перепрошить BIOS на подержанном ноутбуке с неизвестным паролем настройки BIOS, и до сих пор никакие программные средства не помогли.

Спасибо за хороший отзыв, надеюсь, вам удалось прошить (модифицированный) BIOS.

Можно ли использовать программатор Android LED TV. Как сделать

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

Отлично, спасибо. Мой CH341A пришел неисправным, не распознавался системой. При ближайшем рассмотрении между линиями передачи данных (в местах контакта штекера USB) была крошечная перемычка из пайки. После снятия моста работает нормально. Ваше утверждение «для распознавания и использования CH341a в моей системе не требовалось никаких дополнительных модулей ядра» избавило меня от поиска проблем с программным обеспечением.

Приятно слышать, что это помогло. Также мне потребовалось некоторое время, чтобы понять это, поэтому я решил особо упомянуть об этом.

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

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

Здравствуйте, Дженсд, просто чтобы вы знали, что у меня это сработало, так что теперь мой ноутбук снова работает! Я отключил питание и батарею (также батарею CMOS, но больше ничего на материнской плате). Было сложно прикрепить клипсу к микросхеме, нужно было немного терпения, и было очень волнительно, когда мне удалось написать микросхему.

Большое спасибо за быстрый ответ!

Рад слышать, что это помогло вам починить ноутбук!Спасибо за обновление.

Привет, отличное видео на You Tube по программатору ch341a, у меня есть пара вопросов, у меня Acer spin 5 sp513-52-n и биос заблокирован, собираюсь попробовать в первый раз использовать программатор ch341a для переустановите обновленный биос. знаете ли вы, нужно ли изменить файл bios xxxxx.fd. один веб-сайт сказал, что он должен быть менее 8 мегабайт, и я должен удалить заголовки из файла. у меня чип биоса mx25l6473f. не уверен, что делать. размер файла 9,4 мегабайта. Мы будем очень признательны за любые мысли по этому поводу.

Для получения этого изображения можно даже использовать двоичный редактор. Открываем файл .fd и ищем начало резервного образа биоса (если он у вас есть), в моем случае строка «_IFLASH_BIOSIMG» была непосредственно перед началом образа (начало было выровнено по 16 байтам) . Из этого смещения вы должны взять именно размер своего BIOS (в вашем случае 8 МБ).

Я читал, что только с этим вы получаете загрузочный образ BIOS, хотя вы можете потерять некоторые данные, хранящиеся в исходном BIOS (например, серийный номер или идентификатор Windows). Оптимальной ситуацией является наличие исходной резервной копии BIOS и файла .fd той же версии, чтобы попытаться «объединить» их оба.

у моего адаптера программатора ch341a не совпадала нумерация разъемов программатора, поэтому я взял кабели и расположил их по порядку. мой программатор зависает после того, как я нажимаю команду снять защиту-> стереть-> записать-> проверить. также нет обновления статуса до тех пор, пока я не нажму кнопку «Стоп» один раз.

Я получаю сообщение об ошибке: число байтов не равно размеру ic. Микросхема 25L3206E на ноутбуке hp pavillion G6-2014tx. Как проверить правильность размещения клипа?

Спасибо за информацию и видео. У меня также есть Thinkpad Yoga X1 Bricked 20FR. Вы просто сделали резервную копию и восстановили тот же образ, чтобы решить проблемы с загрузкой, или вы можете посоветовать, как вы создали новый образ BIOS для восстановления

Я нашел рабочую резервную копию на форуме badcaps. Если хотите, я могу поделиться им с вами. Отправьте мне электронное письмо, и я отправлю вам резервную копию, которую я использовал (или более новую).

Является ли M25Q128JV чипом BIOS? Я попробовал это руководство, и оно не обнаруживается в AsProgrammer (вместо этого я нашел M25Q128FV). Хотя я смог прочитать и сделать резервную копию, я не смог написать ответ.

Можете ли вы также предоставить ссылку для загрузки ROM-файла. Lenovo, по-видимому, предоставляет только .exe, и я не могу ничего записать на чип.
P.S. пожалуйста, сообщите мне, если вам нужна дополнительная информация, чтобы помочь……
Спасибо

Извлеките «Пакет USB-накопителя Lenovo BIOS Update» для необходимой версии BIOS. Затем найдите файл *.rom или *.ROM BIOS и переименуйте расширение в .bin.
Теперь прошейте BIOS этим файлом *.bin, удачи!

Ps, возможно, вам не нужно переименовывать расширение, это зависит от используемого программного обеспечения…

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

У меня ноутбук с Winbond 25Q128JVSQ. У вас есть доступ к программе, поддерживающей этот чип с модулем CH341A для операций чтения/записи?

Есть ли у кого-нибудь программатор ch341a, поддерживающий KH25L6406E? Получил свой китайский кирпичик. После перезагрузки не будет POST.

Здравствуйте
Я искал решение для Linux, потому что утилита Windows, поставляемая вместе с ридером, ужасна, а БД не обновляется

и я закончил с вашей подсказкой об этой классной утилите для Windows, размещенной хорошим русским парнем на github!

Несколько месяцев назад я пытался переформатировать свой ноутбук как машину с двойной загрузкой как с Ubuntu, так и с Windows 10, и у меня возникли проблемы с тем, чтобы диспетчер загрузки правильно определял обе операционные системы. Вскоре после изменения настройки в BIOS, связанной с работой SATA, ноутбук внезапно перестал работать после перезагрузки. Включение его привело только к чисто черному экрану, где примерно через пятнадцать секунд высветилось «Lenovo Misto Ontario», а затем ничего. Это было правдой и основательно «замуровано».

Я испробовал все, что знал, чтобы исправить это, включая извлечение батареи CMOS, переформатирование жесткого диска и попытку «автоматической прошивки» BIOS с USB-накопителя — ничего не помогло. У меня был этот маленький нетбук Lenovo S205 в течение нескольких лет, и хотя он стал медленнее, он всегда хорошо служил мне. И так как до тех пор, пока он не сработал, не работал… казалось пустой тратой времени просто выбросить его, не приложив все усилия, чтобы его починить.

Я рад сообщить, что мне это удалось. Решение состояло в том, чтобы перепрошить чип BIOS с помощью замены BIOS, которую я нашел в Интернете, используя программу с открытым исходным кодом под названием «flashrom» и Arduino, выступающую в качестве программатора флэш-памяти SPI. Вот как я это исправил.

Достичь цели

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

Получение «чистого» BIOS ROM

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

К счастью, на веб-сайте Lenovo по-прежнему доступны документация по поддержке и файлы для загрузки, включая обновление BIOS от 16 августа 2011 года. Оно представляет собой исполняемый файл Windows с меткой 4BCN24WW.exe и предназначен для запуска в среде Windows на ноутбук S205. Программа автоматически проверит, находится ли она на правильном компьютере, а затем перезапишет BIOS, пока компьютер все еще работает. Поскольку ноутбук «замурован», я не могу использовать этот процесс, но я могу извлечь файл BIOS из исполняемого файла.

На своем рабочем столе с Windows 10 я запустил исполняемый файл, который тут же выдал ошибку, требующую «Пожалуйста, подключите аккумулятор», а затем вышел. Однако до того, как произошла ошибка, он извлек свое содержимое в следующую папку, готовясь к запуску:

В верхней части этой папки находится файл BIOS1.WPH. Это ПЗУ BIOS, которое будет прошито на ноутбуке.

Создание флэш-памяти

Программное обеспечение, которое я использовал для прошивки памяти BIOS, называется flashrom. По словам разработчиков:

flashrom — это утилита для идентификации, чтения, записи, проверки и стирания флеш-чипов. Он предназначен для прошивки образов BIOS/EFI/coreboot/firmware/optionROM на материнских платах, картах контроллеров сети/графики/хранилища и различных других программаторах.

Вместо того, чтобы загружать чужой предварительно собранный двоичный файл, я собрал программное обеспечение из исходного кода, используя последнюю стабильную версию 1.0.1. Поскольку моя обычная операционная система — Windows 10, для этого процесса я использовал Linux «live USB» Ubuntu 19.04 (похоже, в 18.04 LTS есть ошибка с групповым управлением при загрузке с live CD, которая не позволяет обмениваться данными с USB-устройствами).

Подготовка среды

Прежде всего мне нужно было изменить исходный код репозитория пакетов, чтобы он загружался из «вселенной», чтобы получить некоторые из необходимых пакетов, включая libftdi и gcc-avr. Репозиторий «universe» включен по умолчанию для установки, но не при использовании «live-USB». После добавления репозитория «universe» мне также нужно было обновить список пакетов:

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

Установка зависимостей

Перед сборкой flashrom из исходников мне нужно было установить все зависимости. Согласно README для версии 1.0.1 сюда входят:

  • pciutils+libpci (если вам нужна поддержка прошивки материнской платы или устройства PCI)
  • libusb (если вам нужна поддержка FT2232, Dediprog или USB-Blaster)
  • libftdi (если вам нужна поддержка FT2232 или USB-Blaster)

В Ubuntu 19.04 я использовал следующие пакеты:

В одном простом операторе установки:

Компиляция

После того, как зависимости были установлены, я скомпилировал flashrom из исходников, а затем установил его:

Убедитесь, что он установлен, введя «flashrom» в терминал. Вы должны увидеть вывод, похожий на этот:

Установив flashrom и подготовив его к работе, я перешел к сборке оборудования для программатора.

Создание программиста

Обычно вы бы перепрошивали BIOS компьютера, используя сам компьютер, но, поскольку ноутбук заблокирован, мне нужно сделать это, так сказать, «вручную». Это означает подключение устройства, которое говорит SPI, непосредственно к контактам на микросхеме флэш-памяти, которая содержит код для BIOS. Затем этот программатор подключается через USB к флэш-памяти, которая дает ему команду, как перемещать данные в микросхему памяти и из нее.

Сбор оборудования

Собранный своими руками программатор, собранный с помощью Arduino Nano, FTDI FT232H и тестового зажима Pomona SOIC-8.

(Имейте в виду, что некоторые из этих ссылок ведут на Amazon и помогают финансировать этот и другие проекты. Спасибо за вашу поддержку!)

Для моего программатора я использовал модуль платы FTDI FT232RL в сочетании с Arduino Nano, соединенными вместе с помощью перемычек DuPont «папа-мама» и макетной платы без пайки.

Arduino — это мозг операции. Чип ATmega328P, лежащий в основе Nano, запускает специальную прошивку, созданную сообществом flashrom, которая переводит последовательные инструкции, отправляемые хост-компьютером, в инструкции флэш-памяти SPI для записи в микросхему памяти. Я использую Nano вместо Uno (в котором также используется 328P) просто потому, что его проще макетировать.

Плата FTDI работает как адаптер USB-UART (последовательный) и обеспечивает источник питания 3,3 В для запуска Arduino. Это необходимо, потому что микросхема флэш-памяти ноутбука обычно работает при напряжении 3,3 В и не выдерживает напряжения 5 В. Используя FTDI в качестве сквозного, Nano работает от 3,3 В и имеет выходы 3,3 В, которые прекрасно сочетаются с флэш-памятью.

Для подключения к самой микросхеме флэш-памяти я использую тестовую клипсу Pomona 5250 SOIC-8. Это подпружиненный адаптер, который соединяется непосредственно с пальцами на чипе и обеспечивает надежное соединение без пайки.

Альтернативы

Хотя мне подошла комбинация FTDI/Arduino, я выбрал ее только потому, что эти детали у меня уже были под рукой. flashrom поддерживает целый ряд программаторов, включая FTDI FT232H и Dangerous Prototypes Bus Pirate. Если бы у меня не было под рукой всего остального оборудования, я бы просто взял переходник FT232H и покончил с этим.

Также можно было бы использовать переключатель уровня или ряд делителей напряжения вместо соединения FTDI. Я пошел с FTDI через серию делителей напряжения, потому что я хотел попытаться запрограммировать чип, пока он был на плате, и ток SPI с использованием делителей напряжения был бы слишком низким (у меня не было никаких цифровых буферов под рукой). ).

Поскольку протокол serprog является открытым исходным кодом, я также мог бы написать собственную реализацию протокола для уже имеющегося у меня микроконтроллера 3,3 В, такого как Teensy LC. Но это был не проект по изучению flashrom, это был проект по ремонту моего компьютера, поэтому я выбрал быстрый и простой способ.

Забавный факт: пока я писал этот пост, я понял, что мог бы просто использовать запасной Raspberry Pi с разъемом SPI, который работает на 3,3 В, избегая Arduino, платы FTDI и живого компакт-диска Ubuntu. Живи и учись…

Прошивка Arduino

Первый шаг в сборке самодельного 3,3-вольтового SPI-программатора флэш-памяти (скажем, в пять раз быстрее…) – это загрузка пользовательской прошивки, которая работает с флэш-памятью. Я использую frser-duino, прошивку на основе serprog. Эти инструкции в общих чертах основаны на этой странице из вики flashrom, которая, к сожалению, содержит пару неверных инструкций и пропускает несколько важных шагов.

Создание из исходного кода

Для начала мне нужно было клонировать репозиторий frser-duino на мою машину, а затем изменить каталоги:

Флаг «–recursive» необходим в команде клонирования, чтобы субмодуль библиотеки serprog был клонирован с остальной частью репозитория.

Перед компиляцией прошивки мне понадобилась копия тулчейна avr-gcc для компиляции прошивки. Набор инструментов состоит из трех пакетов: компилятор GNU C, утилиты для работы с двоичными файлами AVR и библиотека AVR C:

Как и прежде, установите его одним простым оператором:

Установив набор инструментов AVR, я собрал прошивку с помощью прилагаемого make-файла без каких-либо изменений:

Поскольку микроконтроллер ATmega328P, лежащий в основе Arduino Uno, не содержит USB-контроллера, на подлинных макетных платах для преобразования USB в UART используется ATmega16U2 (отсюда и «u2» в команде make). Разработчики, написавшие frser-serprog, не очень высокого мнения о прошивке U2, поэтому сборка для цели «u2» установит скорость передачи данных на 115200 и добавит задержку в 10 мкс при отправке данных.

Я использую подделку Arduino Nano, в которой даже нет 16U2 (в ней используется более схематичный CH340G, а в оригинальных платах используется чип FT232RL), и на самом деле, поскольку я использую плату FTDI для прямого подключения для UART Arduino встроенный адаптер USB-UART не имеет ни малейшего значения. Однаконо я также выдвигаю чип 328P немного за пределы его номинальной тактовой частоты при напряжении 3,3 В, поэтому я полагаю, что более низкая скорость передачи данных и небольшая задержка сделают его работать более надежно.

Обратите внимание, что я специально не изменил значение F_CPU в make-файле, как это предлагается в документации flashrom, чтобы приспособиться к источнику питания 3,3 В. Изменение значения F_CPU не меняет тактовую частоту — она устанавливается фьюз-битами. Изменение значения F_CPU в make-файле приведет только к сбою в расчетах скорости передачи данных UART и заставит flashrom сообщить, что устройство не синхронизировано.

Прошивка через USB

Следующим шагом будет установка прошивки frser-duino на Arduino через USB. Важно, чтобы плата FTDI еще не была не подключена, иначе питание 5 В от Arduino повредит ее.

Прежде всего мне понадобилась копия avrdude — программы для прошивки чипов AVR:

Затем мне нужно было добавить текущего пользователя Linux в группу «диалаут», чтобы у меня было разрешение на общение с USB-устройством:

Получив разрешение на общение с USB-устройствами, мне нужно было убедиться, что я разговариваю с правильным USB-устройством. Подлинный Arduino, использующий микросхему 16U2 и поддерживающий более продвинутые последовательные параметры, будет отображаться как устройство ttyACM. Я использую подделку Nano с чипом CH340G USB to UART, который вместо этого отображается как устройство ttyUSB. Если других устройств нет, Arduino будет указан как устройство «0» — либо ttyACM0 (настоящие платы), либо ttyUSB0 (подделки). Этот номер достаточно легко проверить — при отключенном Arduino вывод информации об устройстве сообщит об ошибке:

В то время как после подключения Arduino эта же команда сообщит о нем информацию:

Прошивка Arduino через USB использует загрузчик и не нарушит «Arduino-ness» платы — это означает, что ее все еще можно перепрограммировать через Arduino IDE после того, как все это будет сделано.

Тестирование Arduino

Если все работает правильно, Arduino должен сообщить что-то вроде этого:

Ключевой строкой является «Имя программиста — ‘frser-duino’», которая идентифицирует программиста и показывает, что флэш-память и программатор синхронизированы. Ошибка «не найдено EEPROM/flash device» — это нормально, потому что я еще не подключил flash-чип!

Подключение оборудования

Подключение макетной платы для программатора flashrom

После того, как прошивка была успешно установлена ​​на Arduino и отсоединен USB-кабель, следующим шагом будет подключение платы FTDI для получения выходов 3,3 В, а затем, наконец, подключение выходов Arduino к зажиму программатора.

Переход от FTDI к Arduino

Необходимо выполнить следующие соединения между FTDI и Arduino:

ФункцияКонтакт FTDIКонтакт ArduinoЦвет провода
Serial InRXTX1Желтый
Серийный выходTXRX0Оранжевый
ПитаниеVCC Красный
ЗаземлениеЗемляЗемляЧерный

Прежде чем продолжить, очень важно, чтобы перемычка напряжения на плате FTDI была установлена ​​в положение «3,3 В». Если он установлен на «5V», микросхема флэш-памяти будет сожжена, и все это будет напрасно.

Большинство подключений просты: TX к RX, RX к TX и GND к GND. Странным является подключение питания: соединение 3,3 В «VCC» с платы FTDI идет на контакт «5 В» Arduino, что немного сбивает с толку. Это связано с тем, что контакт с пометкой «5V» подключен к выходу 5-вольтового стабилизатора Arduino и является прямым подключением к напряжению, поступающему на микроконтроллер. Это отличается от вывода «VIN», подходящего к обоим регуляторам напряжения, и вывода «3,3 В», выходящего из регулятора напряжения 3,3 В.

После выполнения этих подключений очень важно не подключаться к Arduino с помощью USB, пока плата FTDI не будет отключена. В противном случае Arduino подаст обратно на плату FTDI 5 В и поджарит ее. USB-подключение должно быть только к плате FTDI.

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

Arduino для флэш-чипа

Если FTDI и Arduino подключены и взаимодействуют должным образом, следующим шагом будет подключение к самому чипу флэш-памяти через тестовый зажим Pomona:

Я знаю, что подключение питания в таблице немного сбивает с толку. Все они подключены к контакту «5 В», который, если вы помните выше, на самом деле работает на 3,3 В. Повторяю: эти соединения не должны быть привязаны к источнику 5 В, а только к контакту 5 В, который на самом деле не подключен. > на 5В, а точнее 3,3В. Прохладный? Круто.

Тестирование связи

Чтобы не ошибиться, попробовав это на ноутбуке в первый раз, я заказал пару аналогичных флэш-чипов Macronix у DigiKey, чтобы поэкспериментировать, прежде чем приступить к реальной работе. Я прикрепил зажим Pomona к голому чипу, а затем попытался выполнить ту же команду «тест» программатора флэш-памяти, что и раньше. На этот раз терминал сообщил, что нашел флэш-чип Macronix, и попросил меня выбрать определение чипа с опцией «-c».

Читайте также: