Программатор CH341A в Linux
Программатор на микросхеме CH341A получил широкую известность благодаря его невысокой цене и широкой доступности.
Существует несколько программ, работающих с ним под операционную систему Windows. Под Linux с этим несколько сложнее, поскольку универсальных программ, реализующих работу программатора CH341A со всеми типами микросхем крайне мало. Однако существует набор консольных утилит под различные чипы. Все ниже сказанное относится к Linux Debian, Ubuntu, Mint, MX. Для других семейств Linux команды установки пакетов будут несколько другими.
Для работы с микросхемами Serial EEPROM моделей 24С01 . 24С64 необходимо собрать программу Аллена Коллина из исходного кода. Перейдите на страничку https://github.com/command-tab/ch341eeprom. Если у Вас нет аккаунта на GitHub проще всего скачать исходный код, нажав на зеленую кнопку Code и выбрав из выпадающего списка пункт Download ZIP.
После скачивания распаковываем архив ch341eeprom-master в пользовательскую папку /home/имя_пользователя. Запускаем терминал. Переходим в папку с исходным кодом, устанавливаем библиотеку libusb 1.0 и компилируем исходный код:
sudo apt-get install libusb-1.0-0-dev
gcc -o ch341eeprom ch341eeprom.c ch341funcs.c -lusb-1.0
В результате получаем исполняемый файл ch341eeprom. Запускать его можно только с правами root, так как работа с портом программатора доступна только суперпользователю. Чтобы обеспечить работу с портом программатора обычного пользователя, входим под правами root и копируем файл 99-CH341.rules в папку /etc/udev/rules.d:
cp /home/имя_пользователя/ch341eeprom-master/99-CH341.rules /etc/udev/rules.d
После этого нужно перезагрузить компьютер, чтобы новые правила вступили в силу. Далее можно подключить программатор с установленной микросхемой 24Cxx, и для считывания микросхемы в файл набрать в терминале:
где: 24c02 — тип микросхемы (24С01 . 24С512)
test.bin — имя файла, куда загрузится считанная прошивка
Для стирания микросхемы:
Для записи из файла в микросхему:
Для работы с SPI-Flash серий 25ххх можно установить программу Flashrom. Для этого можно использовать такую команду:
Для считывания содержимого микросхемы в файл можно использовать такую команду:
где test.bin — имя файла, куда загрузится считанная прошивка.
Flashrom самостоятельно определит тип микросхемы и производителя, считает из нее данные и сохранит их в файл test.bin.
Для стирания микросхемы:
Для записи прошивки в микросхему:
где test.bin — имя файла, из которого запишется прошивка в микросхему. Flashrom постоянно модифицируется, список поддерживаемых микросхем и программаторов растет.
Новая консольная программа Игоря Мокрушина SNANDer позволяет считывать и программировать микросхемы 24-й, 25-й и 93-й серий, то есть по сути является универсальной. Скачать программу для 64-х разрядной версии ОС можно со странички автора на GitHub из папки linux. Для работы программы с портом USB с привилегиями пользователя файл 40-persistent-ch341a.rules необходимо скопировать в папку /etc/udev/rules.d так же, как и для программы Аллена Коллина. После этого нужно перезагрузить компьютер, чтобы новые правила вступили в силу.
Для 32-х битной версии Linux можно собрать программу, скопировав каталог src в домашнюю папку и запустив команду make.
Для считывания микросхем 24Cxx или 93Cxx необходимо использовать команду:
где: 93c46 — тип микросхемы (24С01 . 24С1024 или 93с06 . 93с96)
test.bin — имя файла, куда загрузится считанная прошивка
Для записи микросхем 24Cxx или 93Cxx необходимо использовать команду:
где: 93c46 — тип микросхемы (24С01 . 24С1024 или 93с06 . 93с96)
test.bin — имя файла, куда загрузится считанная прошивка
где: 93c46 — тип микросхемы (24С01 . 24С1024 или 93с06 . 93с96)
Для микросхем серии 25xxx команды те же, за исключением префикса -E и типа микросхемы. Их писать не нужно, поскольку тип микросхемы определяется автоматически.
Микросхемы 93С06 . 93С96 программируются с использованием адаптера, устанавливаемого вместо микросхемы 25xxx.
Недавно удалось «скрестить» редактор шестнадцатеричного кода whexedit (автор — Цинфэн Ся) и программу Аллена Коллина для Serial EEPROM. Получился программатор prog24 для микросхем 24C01 — 24C1024 с графической оболочкой, написанной на QT. Меню программы предельно простое. Последние три иконки с изображением микросхем слева направо: выбор типа микросхемы, чтение из микросхемы, запись в нее. После считывания можно сразу править дамп и записывать обратно в EEPROM. Можно сохранять данные в файл, или считывать из файла. Есть поиск по коду и строке символов.
Для установки программы на Linux Debian, Ubuntu, Mint, MX нужно скачать ее из архива, распаковать его и запустить файл ./install.sh. После установки программа попадет в главном меню в раздел «Прочее». Исходный код программатора выложен на github.
Приобрести программатор можно по этой ссылке.
К этому программатору можно приобрести также панельку для микросхем в корпусе SOP8 (размер 150mil для микросхем серий 24Cxx и 93Cxx, 208mil для 25Qxx) или набор панелек под пайку, клипсу для программирования прямо на плате. Напоминаем, что для ее использования необходимо перерезать дорожку питания программируемой микросхемы, иначе программатор можно повредить. Также пригодится набор макетных проводников для подключения программатора к различным платам, набор микросхем серии 93Схх и 24Схх и набор микросхем 25Q32FVVSIQ.
Источник
У меня появился программатор СН341А, но я не могу найти статей, как им работать с онтопика.
Всё только под виндовуз. вывод lsusb:
Цель-залить дамп биоса на флешку. Флешку подпаял, через переходник подключил(она 1,8в, там 3,3 только)
Заранее благодарю отвечающих(и троллей за будущий юмор)
use flashrom, Luke
Я и спрашиваю, как конкретнее именно?
О, это именно то, что нужно. Спасибо.
flashrom поддерживает больше чипов чем ch341prog. Например, микроконтроллер KB9012:
вместе с flashrom его можно прошить через программатор CH341A, http://dangerousprototypes.com/docs/Flashing_KB9012_with_Bus_Pirate#CH341A , а в ch341prog поддержки этого чипа нету
Эт чё, моя флешка не живая? Или с преобразователем интерфейсов 3.3-1.8в чо начудил?
Показывай свой переходник
Физически? Фотку? ALVC164245
Ну да, куда что подключен/распаяно, ключ не перепутал?
Спасибо тебе, друг. Именно твой совет заставил меня быть внимательнее. А не пропаял я ножку переходника, одну, ламелька улетела, то есть я прозвонил на КЗ, всё ок, стал пытаться прошить. А надо было прозвонить комплексно, чтоб убедиться, что олрайт.
Для i2c для него был честный драйвер
который позволяет работать через i2c-tools, i2c-dev и т.д.
Что ты там вообще мутишь такое сложное? Купи кроватку и просто клади туда чип. То есть будет конечно мостроузная конструкция программатор-адаптер 1.8в-кроватка, но зато без геморроя.
Да проблема не в этом, всё норм, читается-записывается. Проблема в том, что я не то залил, не всё из китайского архива. Не знаю пока, как всё зашить.
В смысле? Пиши название поциента, дам дамп с закрытых форумов.
Мне китайцы оригинал выслали архивом. Там несколько файлов, сча напою:
Жесть какая. Напиши название платформы ( обычно на самом текстолите есть, только не hannstar это сам производитель). Мож чо найду
Источник
CH341A, USB-UART-конвертер и I2C/SPI-программатор за $5
Когда-то давным-давно я писал пару статей о широко известном в узких кругах чипе FTDI FT232H и различных его применениях. Всем хорош был FT232H для DIY, но и у него нашлось несколько недостатков — относительно неприятный для ручной пайки корпус LQFP48 (для истинных любителей хардкора есть еще вариант в QFN48, паяй — не хочу, DIHALT не даст соврать), цена за оригинальный чип от 250 рублей, вероятность проблем с драйверами на поддельных чипах и некоторая функциональная избыточность, к примеру, поддержка JTAG нужна далеко не всем.
Решение, как обычно, пришло из Поднебесной, в которой после нескольких лет тупого передирания творческой адаптации чужих чипов наконец выпустили свой собственный конвертер USB-TTL — WinChipHead CH341A в корпусе SOP-28 (не DIP, но тоже паяется без проблем).
Производство чипа было начато году приблизительно в 2006, но в поле моего зрения он попал только в 2014, когда I2C/SPI-программаторы на этом чипе наводнили европейский EBAY, причем продавцы предлагали цену от 3,5 евро вместе с доставкой, что при средней стоимости хорошего китайского программатора вроде MiniPro TL866A в 50 евро оказалось настолько заманчивым предложением, что устоять не получилось.
Если вам все еще интересно, что умеет этот китайский чип за 1$ и стоит ли платить больше, если не видно разницы — прошу под кат.
Коротко о чипе
CH341 — мультифункциональный конвертер из USB 2.0 в UART, EPP, I2C и SPI.
В режиме UART поддерживаются не только RX/TX, но и остальные сигналы управления, поэтому на чипе можно сделать USB-модем. В режиме параллельного порта реализован интерфейс EPP и эмуляция принтера (позволяющая подключать принтеры с интерфейсом LPT напрямую к USB без написания дополнительных драйверов). В последовательном режиме поддерживаются интерфейсы I2C и SPI.
Чип требует минимальной дополнительной обвязки (внешний кварц и несколько конденсаторов). Возможно использование внешней EEPROM для хранения пользовательских Vendor ID, Device ID и некоторых настроек чипа. Питание от 5 В (через встроенный LDO-регулятор), либо от 3.3 В напрямую.
Кроме CH341A в корпусе SOP-28 имеются два варианта в SSOP-20 — CH341T и CH341H, первый лишен поддержки SPI, в второй — I2C, поэтому рассматривать их в этой статье я не стану.
Возможные применения
Описаны в статье про FT232H, повторяться не стану, только замечу, что на CH341A я проверял только работоспособность TX и RX, а не всего UART-интерфейса целиком, если вдруг найдутся какие-то внезапные подводные грабли, как это было с I2C на FT232H — напишите комментарий, буду рад добавить его в статью.
Готовые изделия
Китайская промышленность предлагает миллион и один вариант универсального I2C/SPI-программатора на этом чипе, один другого дешевле.
Доставшийся мне за 3,5 евро вариант, по заверениям его производителя умеет программировать чипы серий 24хх (I2C) и 25xx (SPI), которые предполагается вставлять в ZIF-сокет (если они в корпусе DIP-8-300), либо прижимать/припаивать к посадочной площадке на обратной стороне платы (если они в SOIC-8 или SOIC-16), либо подключать проводами. На гребенку выведены только UART и SPI, а I2C придется брать из ZIF-сокета, если нужен (эта недоработка устранена в более новых версиях, но они дороже).
Схема программатора отличается от референсной из даташита только использованием внешнего LDO-регулятора вместо встроенного, видимо, встроенный оказался не очень надежным. На моем экземпляре сэкономлено на всем подряд, и кроме CH341A на плате 2 светодиода (Power и Run), 2 резистора, 5 конденсаторов (2 для кварца и 3 для LDO-регулятора), кварц на 12 Мгц, LDO-регулятор AMS1117 на 1 А и ZIF-сокет на два чипа в корпусе DIP-8-300. Из настроек имеется единственный джампер, переключающий программатор между I2C/SPI и USB-UART, при этом у него меняется Device ID.
В Windows 8.1 драйверы для обоих режимов подтягиваются из сети автоматически, а в Linux они имеются в ядре уже несколько лет.
Для программирования в Windows используется китайский софт авторства некоего SkyGz, который большинством продавцов с EBAY распространяется нелегально, но работать от этого не перестает. Вот ссылка на него — malthus.mooo.com/download/file.php?id=893 — только не забудьте потом покормить попугая-матершинника и поправить повязку на глазу.
Для Linux имеются открытые проекты ch341prog (SPI) и ch341eepromtool (I2C), оба работают достаточно хорошо, но весьма неплохо было бы добавить поддержку обоих режимов в flashrom (гляди, xvilka, народные программаторы по цене грязи, а FR их до сих пор не умеет).
Я проверял работу программатора в Windows 8.1 x64 и Xubuntu Core 15.04 x64 на I2C-чипе OnSemi 24C16 и SPI-чипе Winbond W25Q64CV, работа с I2C занимает секунды (т.к. на чипе 2 Кб памяти и его, при желании, можно читать и писать чуть ли не руками), а вот восьмимегабайтный SPI-чип читается за минуту, а пишется за две, что, конечно, далеко не рекорд, но и не слишком долго для устройства за 5 долларов.
Заключение
Если вам не нужна поддержка JTAG, десятков тысяч различных чипов и ICSP, зато нужно средство быстрого резервного копирования/восстановления прошивок различных устройств от роутеров до ПК и серверов — рекомендую программатор на CH341A к приобретению, свои 5 баксов он отрабатывает сполна. А когда его поддержку добавят в flashrom — станет совсем хорошо.
С другой стороны, я бы не стал закладывать CH341A в дизайн своих устройств, т.к. его надежность при постоянном применении вызывает некоторые сомнения, а если возникнут вопросы, то задавать их будет некому, ведь даже сайт производителя чипа извне Китая открывается через раз.
Спасибо читателям за внимание, и пусть ваши прошивки никогда не падают.
Источник