"Программатор" 24\25 флешек на ардуино.
Навеяно постом http://pikabu.ru/story/arduino_snova_vyiruchaet_5192318
Только 3 дня назад воспользовался сам этим проектом, думаю кому-то окажется полезным.
Успешно зашил 10 штук 25х флешей (2-2мб, 5-4мб, 3-8мб).
Собственно сам проект был взят у неизвестного товарища с сайта "технохрень" (не для рекламы). Далее текст из источника.
В общем это нужно чтобы перепрошивать 8 ножные SPI флешки. А это в свою очередь нужно чтобы восстанавливать роутеры, сбрасывать пароли на биосы и восстанавливать их, и много чего еще.
Будем делать за 10 минут самый простой программатор своими руками на Ардуино 🙂 Понадобится Arduino Pro Micro ну или любая другая (будет отличаться только распиновка на ардуино). Собираем эту сложную схему:
Сама прога-программатор:
Скачать софт http://skproj.ru/wp-content/uploads/2015/12/SpiEepromFlasher...
Вот прошивка (скетч) для ардуины:
#include "SPIFlash.h"
#include <SPI.h>
#include <avr/wdt.h>
//////////////////////////////////////////
// flash(SPI_CS, MANUFACTURER_ID)
// SPI_CS - CS pin attached to SPI flash chip (8 in case of Moteino)
// MANUFACTURER_ID - OPTIONAL, 0x1F44 for adesto(ex atmel) 4mbit flash
// 0xEF30 for windbond 4mbit flash
//////////////////////////////////////////
SPIFlash flash(2, 0);
byte buf[1024];
void setup() {
Serial.begin(115200);
while (!Serial);
if (flash.initialize())
Serial.println("Init OK!");
else
Serial.println("Init FAIL!");
}
void loop() {
char cmd;
if (!Serial.available()) return;
cmd = Serial.read();
if (cmd == 't') {
Serial.print("COM ok\n");
return;
}
if (cmd == 'i')
{
Serial.print("DeviceID: ");
Serial.print(flash.readDeviceId(), HEX);
Serial.print('\n');
return;
}
if (cmd == 'a')
{
flash.chipErase();
while (flash.busy());
Serial.print("OK");
Serial.print('\n');
return;
}
if (cmd == 'e')
{
long sector = Serial.parseInt();
Serial.read(); // разделитель
flash.blockErase4K(sector);
Serial.print("OK");
Serial.print(sector);
Serial.print('\n');
return;
}
if (cmd == 'w')
{
long addr = Serial.parseInt();
Serial.read(); // разделитель
for (int bufsz = 0; bufsz < 128; bufsz++)
{
while (Serial.available() == 0);
buf[bufsz] = Serial.read();
}
flash.writeBytes(addr, buf, 128);
Serial.print("OK");
Serial.print(addr);
Serial.print('\n');
return;
}
if (cmd == 'r') {
long addr = Serial.parseInt();
Serial.read(); // разделитель
for (int i = 0; i < 4; i++)
{
flash.readBytes(addr + (i * 1024) + 0, buf, 1024);
for (int j = 0; j < 1024; j++)
Serial.write(buf[j]);
}
return;
}
}
Ничего сложного и главное нет лишних деталей в схеме))) Главное правильные библиотеки — скачать их вместе с прошивкой тут: http://skproj.ru/wp-content/uploads/2015/12/spi-eeprom-fw2.z...
Пробовал на флешках 25Q128FVSG, 25L3206E, еще какая-то роутерная безымянная.
Как выяснилось программатор может иногда не работать 🙂 Вариантов несколько:
— либо слишком длинные провода к флешке (нормально см 8-15)
— либо слишком китайская ардуина (например нано в3)
— либо дохлая флешка
Лично сделал такое безобразие (платку под панельку развел, но еще не травил):
Как показала практика 3х вольтовые флешки отлично работают от 5и вольтовой линни, но для низковольтовых лучше все таки добавить преобразователь.
Отлично завелось от ПониПрога.
CH341A Gold + sop8-dip8 переходник - 150 грн (320 рублей).
Адруинки дороже продаються + видок не ахти получается.
А так, компактно и красиво.
Шьется все 24/25 - мониторы, материнки, роутеры и т.п., ПО ровное, пока ошибок не заметил.
Отвечу всем) с телефона неудобно(
150 гривен, это оно в украине, в Донецке 600-800 рублей самый простенький собранный в подвале слепыми китайцами левым пальцем правой ноги, а дуина обошлась мне в целых 230р.
Да, это вариант - срочняк, конкретно эта плата используется в проекте с WS2812, а ехать на работу к МиниПрохе было жутко влом.
Закончу с платой - выложу "отчет и суммы". Если делать целенаправленно программатор, обходится до 150-200р, если юзать 8ю атмегу - ее с головой должно хватить, в общем посмотрим. И использовать хочу как раз CH340.
Спасибо! Сломал свой комп в попытках моддинга биоса, починил его с этой инструкцией.
Я не много запозднился, автор, подскажи
winbond 25q64fvsig - такой чип можно прошить этим "программатором".
И еще вопрос у меня UNO R3 MEGA328P CH340G китайский, с ним могут быть проблемы?
Спасибо все отлично, залил прошивку на тюнер Витязь hdr826