"Программатор" 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 ну или любая другая (будет отличаться только распиновка на ардуино). Собираем эту сложную схему:

"Программатор" 24\25 флешек на ардуино. Arduino, Программатор, Spi, Сообщество arduino, Сообщество ремонтеров, Длиннопост

Сама прога-программатор:

"Программатор" 24\25 флешек на ардуино. Arduino, Программатор, Spi, Сообщество arduino, Сообщество ремонтеров, Длиннопост
"Программатор" 24\25 флешек на ардуино. Arduino, Программатор, Spi, Сообщество arduino, Сообщество ремонтеров, Длиннопост

Скачать софт 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)

— либо дохлая флешка



Лично сделал такое безобразие (платку под панельку развел, но еще не травил):

"Программатор" 24\25 флешек на ардуино. Arduino, Программатор, Spi, Сообщество arduino, Сообщество ремонтеров, Длиннопост

Как показала практика 3х вольтовые флешки отлично работают от 5и вольтовой линни, но для низковольтовых лучше все таки добавить преобразователь.


Отлично завелось от ПониПрога.

Сообщество Ремонтёров

7.6K постов42.9K подписчика

Правила сообщества

ЕСЛИ НЕ ХОТИТЕ, ЧТОБЫ ВАС ЗАМИНУСИЛИ НЕ ПУБЛИКУЙТЕ В ЭТОМ СООБЩЕСТВЕ ПРОСЬБЫ О ПОМОЩИ В РЕМОНТЕ, ДЛЯ ЭТОГО ЕСТЬ ВТОРОЕ СООБЩЕСТВО:


Посты с просьбами о помощи в ремонте создаются в дочернем сообществе: https://pikabu.ru/community/HelpRemont

К публикации допускаются только тематические статьи с тегом "Ремонт техники".

В сообществе строго запрещено и карается баном всего две вещи:

1. Оскорбления.

2. Реклама.

В остальном действуют базовые правила Пикабу.

9
Автор поста оценил этот комментарий

CH341A Gold + sop8-dip8 переходник - 150 грн (320 рублей).

Адруинки дороже продаються + видок не ахти получается.

А так, компактно и красиво.

Шьется все 24/25 - мониторы, материнки, роутеры и т.п., ПО ровное, пока ошибок не заметил.

Иллюстрация к комментарию
раскрыть ветку
3
Автор поста оценил этот комментарий

Отвечу всем) с телефона неудобно(

150 гривен, это оно в украине, в Донецке 600-800 рублей самый простенький собранный в подвале слепыми китайцами левым пальцем правой ноги, а дуина обошлась мне в целых 230р.

Да, это вариант - срочняк, конкретно эта плата используется в проекте с WS2812, а ехать на работу к МиниПрохе было жутко влом.

Закончу с платой - выложу "отчет и суммы". Если делать целенаправленно программатор, обходится до 150-200р, если юзать 8ю атмегу - ее с головой должно хватить, в общем посмотрим. И использовать хочу как раз CH340.

раскрыть ветку
2
Автор поста оценил этот комментарий

Спасибо! Сломал свой комп в попытках моддинга биоса, починил его с этой инструкцией.

1
Автор поста оценил этот комментарий

Я не много запозднился, автор, подскажи

winbond 25q64fvsig - такой чип можно прошить этим "программатором".

И еще вопрос у меня UNO R3 MEGA328P CH340G китайский, с ним могут быть проблемы?

раскрыть ветку
1
Автор поста оценил этот комментарий

Спасибо все отлично, залил прошивку на тюнер Витязь hdr826