Программатор EEPROM и Flash из Arduino
Понадобился программатор? Тогда у вас есть 2 пути: купить готовый или сделать самостоятельно.
Купить готовый более предпочтительный вариант — купить готовый, тем более сейчас выбор готовых программаторов очень хороший. Там будет и нормальный софт, который понятный и работает из коробки и перечень микросхем для программирования очень большой (универсальный).
Собрать самостоятельно — иногда быстрее и дешевле. И главный тут момент — я могу).
В моем случае «быстрее» был решающий фактор, нужно было «вчера». Мне нужно было прочитать и переписать одну микросхему AM29F200, поэтому я припаял ее просто на проводках и успешно справился с задачей. Но паять 44 ноги и развешивать эту «бороду» это испытание. В статье нету схемы, потому, что ее просто нет, есть Arduino Mega и ноги микросхемы подключаются к ней согласно Даташита. Скетч в архиве, работает все очень хорошо и быстро.

Универсальный программатор параллельной памяти (EEPROM/Flash) (источник)
Универсальный программатор параллельной памяти (EEPROM/Flash)
Универсальный программатор параллельной EEPROM/Flash памяти, поддерживающий огромное количество различных микросхем.
🚀 Ключевые возможности
- Полноценный GUI: Удобный графический интерфейс для управления процессом, написанный на Python.
- Внушительный объем: Текущая конфигурация пинов позволяет «прошивать» чипы объемом до 1 МБ. Теоретический же предел — безумные 4 ГБ (правда, удачи вам на скорости в 500 Кбит/с!).
- Всеядный размер страниц: Полная поддержка микросхем с размером страницы от 1 байта до 4096 байт.
- Интерактивный доступ: Управлять программатором можно напрямую через обычный Монитор порта.
- Шустрый UART: Аппаратный интерфейс на скорости 500 Кбит/с для обмена данными с ПК через USB.
- Максимум скорости: Передача данных в бинарном формате и использование режима быстрой постраничной записи (Page Write) самой памяти.
🛠 Аппаратная часть (Hardware)
Сердце программатора — микроконтроллер ATmega2560.


Шина адреса (до 20 бит в текущей конфигурации, с возможностью расширения до 32 бит), как и шина данных памяти, управляются напрямую через пины «атмеги». За связь с ПК отвечает аппаратный интерфейс UART: он гоняет данные в бинарном формате на скорости до 500 Кбит/с через USB.
🔌 Схема подключения (Pinout)
Связь между микроконтроллером (MCU) и прошиваемой микросхемой (Target) осуществляется по следующей схеме:
| ATmega2560 | Пины Arduino Mega | Пины целевой памяти |
|---|---|---|
| PA0..7 | 22..29 | Линии адреса A0..7 |
| PC0..7 | 37..30 | Линии адреса A8..15 |
| PB0..3 | 53..50 | Линии адреса A16..19 |
| PL0..7 | 49..42 | Линии данных Q0..7 |
| PG0 | 41 | Разрешение записи (#WE) |
| PG1 | 40 | Разрешение вывода (#OE) |
| PG2 | 39 | Разрешение чипа (#CE) |
💡 Подсказка: Все необходимые пины удобно сгруппированы на самом большом разъеме платы Arduino Mega. Если у вашей микросхемы меньше линий адреса, просто оставьте неиспользуемые пины «Меги» свободными.
🧪 Протестированные микросхемы
Ниже приведен список чипов, чья работа была успешно проверена на этом программаторе, а также рекомендуемые для них настройки. Если вы запустите программатор с микросхемой, которой нет в списке — смело дополняйте таблицу!
| Название | Производитель | Напряжение | Объем | Тип | Размер страницы |
|---|---|---|---|---|---|
| SST29EE020 | SST / Microchip | 5 В | 256 КБ | EEPROM | 128 байт |
| SST39LF040 | SST / Microchip | 3.3 В | 512 КБ | Flash | Любой (4096 байт — быстрее всего) |
⚠️ ВАЖНО: При работе с чипами на 3.3 В обязательно используйте согласователи логических уровней! Иначе вы просто поджарите вашу микросхему.
💻 Программное обеспечение (Software)
Реализация
Со стороны микроконтроллера всё просто: данные прилетают по UART и записываются в EEPROM строго по даташиту (или считываются обратно). Управление программатором строится на лаконичных текстовых командах, которые отправляются через тот же серийный интерфейс:
| Команда | Функция |
|---|---|
i | Вывести «EEPROM Programmer» (для идентификации устройства) |
v | Показать версию прошивки |
a [00000100] | Выставить на шине адреса 00000100 в hex (для тестов) |
d [00000000] [0003ffff] | Показать Hex-дамп памяти в диапазоне 00000000-0003ffff (256 КиБ) |
r [00000000] [0003ffff] | Считать память в диапазоне 00000000-0003ffff и отправить как бинарник |
p [00000100] [0003ffff] | Записать бинарные данные в страницу памяти 00000100-0000017f (после команды нужно передать сами байты) |
l | Заблокировать EEPROM (включить защиту от записи) |
u | Разблокировать EEPROM (выключить защиту от записи) |
e | Стереть чип полностью (Chip Erase — необходимо для Flash) |
E | Переключиться в режим записи для EEPROM (постраничный) |
F | Переключиться в режим записи для Flash (побайтовый) |


Как управлять?
Для ручного контроля с ПК подойдет абсолютно любой Монитор порта (главное — выставите скорость 500 000 бод).
Однако, чтобы выжать из программатора максимум, лучше использовать готовые Python-скрипты из комплекта. Скрипт eepromgui.py запускает удобный графический интерфейс. В нем можно в пару кликов читать и записывать бинарные файлы, а также наглядно смотреть содержимое памяти.
Скрипты тестировались в Linux, но без проблем заведутся на любой ОС. Если вы используете недорогие китайские клоны Arduino Mega на Windows, вам может понадобиться драйвер для чипов CH330N или CH340N.
🛠 Компиляция и прошивка (Compiling and Uploading)
Вариант 1: Через Arduino IDE
- Перейдите в меню Инструменты ➔ Плата ➔ Arduino AVR Boards и выберите Arduino Mega or Mega 2560.
- В меню Инструменты ➔ Процессор выберите ATmega2560 (Mega 2560).
- Подключите Arduino Mega к вашему ПК через USB.
- Откройте скетч
EEPROM_Programmerи нажмите кнопку Загрузка (Upload).
Вариант 2: Использование готового HEX-файла
- Убедитесь, что у вас установлена утилита
avrdude. - Подключите Arduino Mega к ПК.
- Откройте терминал (или командную строку).
- Перейдите в папку с HEX-файлом.
- Выполните команду (при необходимости замените
/dev/ttyUSB0на ваш порт, например, в Windows это будет что-то вродеCOM3):avrdude -c wiring -p m2560 -P /dev/ttyUSB0 -b 115200 -U flash:w:eeprom_programmer_m2560.hex -D
Вариант 3: Сборка через Makefile (Linux / macOS)
- Убедитесь, что у вас установлены
avrdudeи пакет инструментовavr-gcc. - Подключите Arduino Mega к ПК.
- Откройте терминал и перейдите в папку с файлом
Makefileи скетчем. - Выполните команду для автоматической сборки и загрузки прошивки:
make upload
📝 Заключение / Резюме проекта
Этот программатор — отличное, бюджетное и гибкое решение «из говна и палок» (в лучшем смысле этого слова) для тех, кому нужно быстро оживить старое железо, прошить BIOS или поработать с параллельной памятью, не покупая дорогой программатор вроде TL866.
Главные фишки, которые делают этот проект крутым:
- Копеечная себестоимость: Всё собирается на базе народной Arduino Mega 2560 и горстки проводов (или простой самодельной платы).
- Удобство «из коробки»: Наличие продуманного запускаемого Python GUI, запускает привычную оболочку (окно программы) и избавляет от необходимости ковыряться в консоли — интерфейс понятен и дружелюбен.
- Гибкость под капотом: Прямое управление шинами с микроконтроллера и поддержка текстовых команд позволяют легко модифицировать проект, добавлять новые типы памяти и использовать устройство как отладочный инструмент.
Проект полностью открыт, готов к работе и станет отличным дополнением к инструментарию любого low-level разработчика или любителя ретро-электроники.





