Для прошивки Flash-памяти BIOS материнских плат, винчестеров, а также своих любительских конструкций мне потребовался программатор. Любимый PonyProg поддерживает только до 256кбит, кроме того LPT-порт теперь редкость, поискав по Интернету, нашел довольно простой USB-вариант "BlackcatUSB":
Программатор предназначен для чтения/записи SPI-Flash чипов памяти объемом от 1 Мбита и выше (т.е. более 128кбайт) популярных серий 25ххх, 26ххх.
По протоколу JTAG (требуется перепрошивка) CFI-Flash чипов - 25ххх, 28ххх, 29ххх, 39ххх, 49ххх, 58ххх, а так же K8D17ххх, K8D32ххх.
Его основой является микроконтроллер AT90USB162, имеющий USB-загрузчик, поэтому первоначальная его прошивка и обновление ПО производится по шине USB. Для перепрошивки не требуется дополнительных программ - это можно сделать прямо из его собственной программы. ПО распространяется свободно, более того. разработчики предоставляют файлы прошивок и исходники программы. Поддерживается система скриптов для добавления новых алгоритмов. Можно вручную выбирать все параметры работы с неизвестной памятью. Программа не требует установки, просто запускаем и работаем.
Внешний вид фабричного варианта:
На оригинальной плате имеются перемычки для выбора напряжения SPI - 3,3V / 5V, кнопка сброса и переключатели выбора режима загрузки: обычный / загрузчик. В повседневной работе сброс и перепрошивка программатора крайне редко требуются, поэтому для клона кнопка и переключатели были исключены. Вместо 10-штырькового разъема установлен DIP-сокет, а разъем USB выполнен продолжением печатной платы:
Чтобы "разъем USB" не болтался в гнезде, он должен быть толщиной 2,5мм, Мне удалось найти кусочек текстолита такой толщины, а для платы в 1,5мм придется приклеивать "подкладку" 1мм. Она должна быть обязательно неметаллической - на случай случайной вставки в разъем "вверх ногами".
Схема:
При установке перемычки J1 в положение 1-2 питание микроконтроллера осуществляется от линии 5V USB, при установке 2-3 - от внутреннего стабилизатора 3,3V.
Внимательно смотрите даташит памяти перед выбором напряжения программирования - большинство трехвольтовых чипов выйдут из строя при питании от 5V.
Собранный без ошибок клон сразу определится системой как AT90USB162 в режиме DFU. Запускаем оболочку BlackcatUSB и убеждаемся в этом:
Если микроконтроллер не "чистый", то принудительно переводим его в режим загрузчика:
1) замыкаем на корпус контакт RESET
2) замыкаем на корпус контакт BOOT
3) отпускаем RESET
4) отпускаем BOOT
Важно, чтобы BOOT был отпущен чуть позже, чем RESET.
Далее переходим во вкладку AVR Firmware, выбираем файл прошивки BCUSB.1.09.SPI.hex и кнопкой "Program" запускаем процесс прошивки:
По окончании процесса (пара секунд), жмем "Start Application". Программатор определится системой и потребует драйвер - находим его в папке Drivers. После его установки видим готовый к работе программатор:
Теперь можно проверить его в работе.
ВАЖНО! Если горит (или мигает) светодиод режима, то вставлять и вынимать память из сокета нельзя - он под напряжением, это может испортить информацию!
Поэтому просто вынимаем клон из разъема USB, вставляем память в сокет и пробуем:
Память определилась и появилась вкладка SPI Flash, на которой можно ее прочесть и записать:
Для режима JTAG потребуется другая прошивка - BCUSB.6.03.EJTAG.hex., а так же разъем-переходник DIP-сокет - JTAG. Новое назначение выводов можно увидеть в документации к программе.
P.S. Программатор "BlackcatUSB" на сегодняшний момент не поддерживается разработчиком - вместо него выпускается обновленная версия "FlashcatUSB":
Из "железных" обновлений только замена мк на более емкий вариант - ATmega32U2. В программной части обновлений больше - поддержка большей номенклатуры чипов, в том числе NAND. Новые версии программы доступны на сайте разработчика.
Новые прошивки NAND (FCUSB.1.07.NAND.hex) и JTAG (FCUSB.7.05.EJTAG_16K.hex) подходят и для нашего клона - во всяком случае запускаются и определяются, функционал не проверял - просто не на чем.
Судя по документации, назначение переключателей изменилось, возможно есть изменения и в печатной плате. Если кто-то соберет вариант на ATmega32U2 (чипы по ножкам совместимы), просьба отписаться о результатах.
Удачи в творчестве!
MrShilov.
07.07.2016
Павел Головин прислал свою версию печатной платы в Спринт лайоуте (SL6) под DIP8 и SOIC8 под прищепку.
На плате дополнительно установлен резистор - перемычка от DIP8 к SOIC8, .
|