Прошло уже более года с момента моей публикации о программаторе для CH341A под Linux - IMSProg и у меня возникло желание избавиться от еще одной программы, не дающей навсегда забыть о существовании Windows. Мой прежний программатор SFP собран на чипе FT232RL и имел софт только под Windows.
Каждый SFP-модуль имеет с своем составе стандартную микросхему 24C04 или 24C02, что натолкнуло меня на мысль использования простейшего переходника для программатора CH341 с использованием четырех проводов - земли, питания, I2C сигналов SDA и SCL. После просмотра разработок различных фирм я добавил в переходник джамперы на сигналы питания для снятия защиты от записи медных модулей - J1 J2 и J3 (контакты SFP TxPWR, RxPWR и TxEN). В результате получилась такая схема:
U1 - экран SFP-разъема, P1 - пластиковый коннектор.
Gerber файлы для изготовления можно скачать здесь, страничка на OSHWLAB - здесь. Адаптер устанавливается в панельку как `24xx` микросхема. Овальный вырез в плате переходника сделан под ручку панельки с нулевым усилием программатора.
Можно изготовить программатор и в виде отдельного устройства. Этот вариант можно посмотреть здесь.
Считывание и запись модулей не поддерживающих защиту паролем можно производить любой программой для программатора CH341A как микросхему AT24C02 или AT24C04, но изменение параметров модуля в этом случае будет ненаглядно. Кроме того, при корректировании данных нужно будет постоянно подправлять контрольные суммы в соответствии с SFF-8472 - SFF Module Management Reference Code Tables по адресам 0xA03F и 0xA05F. Поэтому я написал небольшую специализированную программу под Linux - SFP-Master. Многое в нее перекочевало от IMSProg, многие части, касающиеся протоколов работы, отличных от I2C были исключены за ненадобностью.
Программа содержит HEX-редактор в правой части экрана и парсер параметров модуля в левой. При изменении какого-либо параметра в парсере значение автоматически вписывается в дамп и пересчитываются контрольные суммы, но при изменении данных в HEX-редакторе необходимо нажимать кнопку `Контр. сумма` для пересчета контрольных сумм. Повторный парсинг данных после работы с ними в HEX-редакторе осуществляется при нажатии на кнопку `Разобрать`.
В SFP-Master предусмотрена возможность ввода пароля для защищенных модулей.
Четыре разноцветные области с чекбоксами позволяют быстро выбрать области дампа для считывания, записи или сохранения на диск в том случае, когда необходимо оставить часть данных без изменений. Чаще всего нужна работа только с первой (зеленой) областью с младшими адресами.
SFP-master может быть собран из исходного кода на GitHub с помощью готового скрипта `build_all.sh`. (В этом случае, не забудьте прочитать о необходимых пакетах на GitHub.) Также его можно установить в дистрибутивы Fedora, используя репозиторий на COPR:
sudo dnf install dnf-plugins-core
sudo dnf copr enable bigmdm/sfp-master
sudo dnf install sfp-master
Или в UBUNTU, подключив репозиторий на Launchpad:
sudo add-apt-repository ppa:bigmdm/sfp-master
sudo apt update
sudo apt install sfp-master
Или установить из ARCH AUR.
Данный материал изложен в обучающих целях. Автор не несет никакой ответственности за последствия применения материалов этой статьи, программ и устройств, описанных в этой статье.