!Прошивальщик Flashrom+hexedit для ch341a на Arch Linux
2023-03-09T21:13:41+05:00
linux flashromСкачиваем через pacman пакет flashrom
sudo pacman -S flashrom
В данном примере у меня модифицированный ch341a чтобы он работал на безопасные для чипа выходной вольтаж 3.3v. На стандартных 5 вольтах !может! привести к выгоранию платы, всё из-за чипа для которого операции для чтения и записи выполняются с конкретным диапазоном (например в даташит чипа Macronix MX25L8005 работа с 2.7 до 3.6 v)
!Этот мод НЕ обязательно делать, это лишь моя рекомендация. Если у вас прямые руки и вы знаете что вы делаете!
Всё что нужно сделать так это отодвинуть вверх 28 пин на программаторе и припаять дорожку (у меня это отрезанный провод от пк спикера подогнанный под размер) к 3.3 вольт регулятору к ножке посередине
Кому интересно я оставлю ссылки на инструкции по моду ch341a
Посмотреть что программатор подключен командой
lsusb
Вот так он у меня определился
Bus 001 Device 003: ID 1a86:5512 QinHeng Electronics CH341 in EPP/MEM/I2C mode, EPP/I2C adapter
Опции flashrom:
-p
программатор [название]-r
читать-w
записать (автоматический очищает информацию с чипа)
Мануал по flashrom (или просто ввести в терминале: man flashrom
)
Список поддерживаемых чипов программой flashrom
# Процедура прошивания чипа на примере MX25L8005
Это вынимаемый bios чип из материнской платы ASrock G41M-S rev 1.02.
На чипе прошивка версии 1.50 мы её прошьём до версии 1.00 программой flashrom
Проверяем поддержку данного чипа на вики flashrom, как видим всё ОК
Вставляем чип в программатор 25 серия чтобы выемка (ключ) смотрела в сторону рукоятки. После чего подключаем в ПК
Проверяем чип на чтение, flashrom сам определяет название чипа но если при чтении выдаёт ошибки вставьте доп флаг -c <chipname>
sudo flashrom -p ch341a_spi -r mx25l8005.bin
flashrom v1.2 on Linux 5.19.1-zen1-1-zen (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L8005/MX25L8006E/MX25L8008E/MX25V8005" (1024 kB, SPI) on ch341a_spi.
Reading flash... done.
Как видим всё прошло удачно
Чтобы проверить контрольные суммы CRC32 дампа биоса вводим
cksum [файл] # например mx25l8005.bin
3866296167 1048576 mx25l8005.bin
Сравнил таким образом контрольные суммы сдампленным AsProgrammer 1.4.1 из Windows 10 и могу с уверенностью сказать что суммы абсолютно идентичные
Чтобы просмотреть код сдампленный с flashrom необходим hexedit
sudo pacman -S hexedit
У утилиты нет Gui, всё будет показываться длинным списком в терминале
Если хотите HEX редактор с интерфейсом:
- Gnone:
ghex
- KDE:
okteta
Вводим в терминале с флагом добавлением цветов в выбираем наш дамп файл
hexedit --color mx25l8005.bin
Навигация:
- F1 - для вызова помощи, открывает man страницу
- PageDown/PageUp - быстро скроллить список
- Ctrl+c - выйти без сохранения
Начинаем записывать прошивку 1.00 в чип, flashrom сама стерёт информацию с нашего чипа и запишет выбранный нами файл затем проверит на схожесть
sudo flashrom -p ch341a_spi -w asrock\ g41m-s.BIN
flashrom v1.2 on Linux 5.19.1-zen1-1-zen (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L8005/MX25L8006E/MX25L8008E/MX25V8005" (1024 kB, SPI) on ch341a_spi.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.
Если написано VERIFIED значит прошилось успешно
Считываем дамп для проверки
sudo flashrom -p ch341a_spi -r read1.bin
flashrom v1.2 on Linux 5.19.1-zen1-1-zen (x86_64)
flashrom is free software, get the source code at https://flashrom.org
Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L8005/MX25L8006E/MX25L8008E/MX25V8005" (1024 kB, SPI) on ch341a_spi.
Reading flash... done.
Можно проверить запись данных через hexedit
hexedit --color read1.bin
Считайте дамп 3 раза
sudo flashrom -p ch341a_spi -r read1.rom
sudo flashrom -p ch341a_spi -r read2.rom
sudo flashrom -p ch341a_spi -r read3.rom
# И проверяем суммы CRC32 или md5sum
md5sum read1.rom read2.rom read3.rom
Скачанный из remont-aud.net дамп биоса
cksum asrock\ g41m-s.BIN
2873525561 1048576 asrock g41m-s.BIN
Наш записанный прошивкой файл
cksum read1.bin
2873525561 1048576 read1.bin
Как мы видим всё совпадает, теперь вынимаем из программатора вставляем обратно в мать и проверяем на работоспособность, как видно ниже всё прошло удачно версия биоса понижена (дата фото запоздалое)