- PVSM.RU - https://www.pvsm.ru -

IMSProg — программатор для CH341a в Linux

Несколько лет назад я полностью перешел на Linux, и все меня устраивало за исключением отсутствия некоторых просто необходимых программ.

IMSProg — программатор для CH341a в Linux - 1

Взять к примеру народный программатор CH341a. Для Windows 5 различных программ, для Linux были созданы только FlashRom [1] для SPI Flash, ch341aProg [2] для i2c EEPROM.

Затем появилась SNANDer [3] - первая консольная универсальная утилита для микросхем 24xxx/25xxx/93xxx. Я обрадовался появлению этой программы и даже написал для нее скрипт запуска [4] с элементами графического интерфейса.

Но некоторое время назад я был удивлен - я выбрасывал каждую вторую микросхему I2C (24сXXX) из-за невозможности их чтения и записи. В тот момент мне казалось, что я перегреваю их при демонтаже феном. Оказалось, что во время чтения и записи на вывод SDA подаются импульсы напряжением менее 1,3 вольта (вместо ожидаемых 3,3). Я подумал, что неисправен программатор CH341a и поставил резистор в 10 кОм между выводом питания (VCC) и выводом SDA. Уровень SDA стал выше. Отказавшие микросхемы стали работать. При этом моя первая программа для i2c-чипов [5] работала и без резистора с этим программатором и забракованной микросхемой. Значит виноват SNANDer. Покопавшись в коде я обнаружил ошибку в программе SNANDer при инициализации программатора в режиме работы с микросхемами серии 24Сxxx. Потом я нашел еще одну ошибку с порядком следования байт при записи и чтении микросхем MicroWire - 93xxx в 16-битном режиме. Так я понял, что придется писать программу самому.

Первым делом я написал редактор микросхем [6] для баз данных программаторов EZP2019 - EZP2025 под Linux и Windows, поскольку мне очень понравился простой формат базы микросхем у них.

Hidden text

Chip string lenght: 0x44 (68) bytes;

offset	 Size   Value
00 -     2F     ASCII Chip type, Name and Manufacture, 0x00 filling
30        1     NOR FLASH Chip Size code   / 0x00 - other chips
31        1     NOR FLASH Chip ID Code     / 0x00 - other chips
32        1     NOR FLASH Manufacture code / 0x00 - other chips
33              0x00
34        4     Chip Size
35 	
36 	  
37 
38        2     Block size
39 
3A        1     0x00 - NOR FLASH FLAG / 0x01 - 24xxx FLAG / 0x02 - 93xxx FLAG / 0x04 - 95xxx
3B        1     Algoritm code number
3C        2     Timing parameter:
3D              3000/1000/500/300/200/100 - NOR FLASH, 4000/2000 - 24xxx, 100 - 93xxx
3E        2     Extend 0x00
3F        1     0x00
40        1     EEPROM 0B/2B/4B - 0B - SPI, 2B - 93xxx, 24xxx, 25xxx 
41        1     0x00
42        1     EEPROM pages 0x01 - 0x04
43        1     VCC 00=>3.3V 01=>1.8V 02=>5.0V
The end record is 0x44 (68) zero bytes.

Следующим шагом было написание SPI программатора микросхем [7], используя ch341 SPI c-programmer tools [8] от Setarcos, формат базы данных микросхем EZP2019 и компонент шестнадцатеричного редактора QHexedit2 [9]. Все хорошо получилось, но только для микросхем SPI NOR Flash. Хотелось бы чего-то универсального.

Далее я написал программу IMSProg, используя модифицированный код SNANDer, код QHexEdit, код моего EZP Chip Editor и основываясь на моем CH341a_spi_programmer.

Представляю вашему вниманию программу IMSProg для Linux с графическим интерфейсом для программаторов CH341a, которая позволяет читать и записывать данные в микросхемы серий 24Cxxx, 25xxx, 93xxx, 95xxx.

Программа состоит из двух независимых модулей - собственно программатора и редактора базы микросхем.

IMSProg — программатор для CH341a в Linux - 2
IMSProg — программатор для CH341a в Linux - 3

Программа сама определяет SPI-чип по трем байтам информации JEDEC (0x9F) и загружает его параметры из базы данных, любой параметр может быть изменен вручную. Для остальных типов микросхем автоопределение не поддерживается аппаратно и модель микросхемы выбирается только вручную. Программа позволяет разбить бинарный образ микросхемы на части и записать их по отдельности.

IMSProg — программатор для CH341a в Linux - 4

Форма поиска в шестнадцатеричном редакторе позволяет искать в дампе не только числовую и текстовую информацию, но и заголовки архивов, образы, BIOS, UEFI и т.д.

IMSProg — программатор для CH341a в Linux - 5

Клавиша i выводит форму с отображением слота установки микросхемы и используемого адаптера.

Интерфейс программы поддерживает английский, испанский, немецкий, китайский, испанский и русский языки. Это определяется языком текущей локали linux.

Подробные инструкции по сборке программы из исходных текстов и использованию программы доступны на GitHub [10] (по английски), и на моем сайте [11] (по русски).

Вы также можете скачать DEB-пакет [12], RPM-пакет [13] и Appimage [14].

База данных микросхем регулярно обновляется и на сегодняшний день содержит около 400 позиций. Буду рад любой критике и предложениям по улучшению интерфейса программы IMSProg. Пожалуйста, протестируйте работу различных микросхем с помощью моей программы.

Автор: Михаил Медведев

Источник [15]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/linux/387464

Ссылки в тексте:

[1] FlashRom: https://flashrom.org/

[2] ch341aProg: https://github.com/bigbigmdm/CH341A-LINUX-PROGRAMMER

[3] SNANDer: https://github.com/Droid-MAX/SNANDer

[4] скрипт запуска: https://github.com/bigbigmdm/bash-for-SNANDer

[5] моя первая программа для i2c-чипов: https://github.com/bigbigmdm/QT-CH341A-LINUX-PROGRAMMER

[6] редактор микросхем: https://github.com/bigbigmdm/EZP2019-EZP2025_chip_data_editor

[7] SPI программатора микросхем: https://github.com/bigbigmdm/CH341a_spi_programmer

[8] ch341 SPI c-programmer tools: https://github.com/setarcos/ch341prog

[9] QHexedit2: https://github.com/Simsys/qhexedit2

[10] GitHub: https://github.com/bigbigmdm/IMSProg

[11] сайте: https://antenna-dvb-t2.ru/IMSProg.php

[12] DEB-пакет: https://github.com/bigbigmdm/IMSProg/tree/main/release/debian_package

[13] RPM-пакет: https://github.com/bigbigmdm/IMSProg/tree/main/release/redhat_package

[14] Appimage: https://github.com/bigbigmdm/IMSProg/tree/main/release/build

[15] Источник: https://habr.com/ru/articles/765970/?utm_source=habrahabr&utm_medium=rss&utm_campaign=765970