Как пользоваться программой ch341a programmer

Это не совсем обзор программатора, потому что мои познания в данной области, мягко скажем, ограничены моими умственными способностями. Но это повествование о том, как будучи полным «чайником» в данной теме, тем не менее, немножко разобравшись, можно справиться, на первый взгляд, с абсолютно безнадёжным делом.
Понимаю, что многие наши гуру электроники с Мусек, починили бы эту камеру, возможно, просто силой мысли. Но тут особый случай, потому что за дело берётся человек не особо в этом разбирающийся и обладающий минимальными знаниями в том, что собирается делать.
И если это сделал я, то могут сделать и другие, не шарящие люди. Возможно этот недообзор, кому-то пригодится. Если вы например убили китайскую камеру неудачной прошивкой.
В общем это очередное моё ОНО — обзор не обзорщика. Подробности под катом.

Предыстория

История этого обзора уходит своими корнями в далёкий 2019 год, как раз в то время, когда только-только в наши страны начинал проникать короновирус. И к делу это никакого отношения не имеет.

Программатор CH341A Pro — Тестирование и снятие дампа


Заказал мой друг себе комплект видеонаблюдения на Али. Взял регистратор на 8 каналов и несколько уличных видеокамер. Заказывал он в магазине Besder. Я несколько раз брал там камеры и регистраторы, и проблем не было. В общем получили мы посылочки, всё подключили (на столе разумеется) и начали прописывать камеры в регистраторе. И одна камера не завелась. То есть она была вообще мёртвая.

Регистратор её не определял, утилиты, которые ищут IP камеры в сети по Onvif или другому протоколу, тоже её не находили. На фишке RJ45 у камеры есть светодиод «пинга», и он тоже не светился и не моргал. В общем кирпич.
Мы отсняли подробное видео для китайца, в качестве доказательства и китаец ответил, что нет проблем, пришлю другую камеру. И собственно прислал. Нормальную и работающую.
Камеру мы конечно разбирали и долго тупили глядя на печатную плату. Визуально с ней было всё ок. Подкидывали провода от другой камеры. Не помогло. Так эта камера и лежала мёртвым грузом.

Периодически мы возвращались к идее её оживления. Одним из явных вариантов было заказать на Али плату с матрицей и всем остальным. Но плата со схожими характеристиками стоит около 80% стоимости от камеры. Есть варианты и подешевле, но с более слабыми параметрами. Но это всё были размышления моего товарища. У меня же мысли шли в другом направлении.

Я был уверен, что проблема в прошивке камеры. И я предлагал более авантюрный вариант. Выпаять микросхему флеш памяти из работающей камеры, считать с неё прошивку, и залить в флеш память неработающей камеры. И таким образом, ушатать ещё и рабочую камеру)))
Подкреплялась моя уверенность в успехе ещё и тем, что камера, как мы выяснили, пингуется через командную строку по своему стандартному из коробки IP адресу, 192.168.1.10. А это значит, что часть прошивки, которая не меняется при обновлении, живая. Да и светодиоды подсветки в камере включались без проблем, если закрыть датчик. То есть проблема, явно программного характера.

USB программатор на CH341a (как пользоваться )


Периодически я возвращался к этой теме и вот в один из таких моментов, когда захотелось оживить, по сути, бесплатную камеру, я наткнулся на пост на 4pda, где человек, на много и во много раз умнее меня, восстановил видеоглазок. Который он «окирпичил» неудачной прошивкой. Симптомы в результате он получил схожие. Камера пингуется, но web-интерфейс, а с ним и всё остальное недоступны.

Так вот, этот умный товарищ смог оживить свою камеру, примерно таким же методом, над которым я размышлял в теории. Только он не клонировал чип с другой камеры, а собрал вручную дамп прошивки. Звучит всё это дико сложно, для человека, который в этом не разбирается. То есть для меня. Теоретически, в общих словах, мне понятно что он сделал.

Но вот применить на практике — это совсем другое дело. К тому же он использовал там программатор, который стоил около полусотни баксов. Что тоже ставило под сомнение и без того сложное, для меня, дело.
Но потом, он дополнил свой пост, что эти микросхемы можно прошивать и дешёвым программатором, если его чуть-чуть допилить. А дешёвый программатор стоил 5$, что на фоне камеры и программатора за 50 это просто пыль на сапогах, поэтому я его не задумываясь сразу же и заказал.

Программатор был заказан и пришёл на удивление очень быстро. Менее чем за две недели. Вот собственно и он




Я заказывал полную комплектацию, с адаптером и прищепкой. Как вы уже могли догадаться фундаментального обзора от меня на программатор ждать не стоит. Только применение на практике, для своей задачи. В конце обзора я выложу ссылки на инструкцию на программатор и весь необходимый софт.
Итак, в чём собственно состоит суть оживление камеры. Объясню «колхозным» языком, как умею. У камеры есть флеш память. Это микросхема XT25F6B-S. Их можно купить на Алике, десять баксов за десяток. Туда записывается прошивка камеры.

И когда вы прошивку обновляете она записывается поверх старой, но есть одна область, которая при этом не перезаписывается. В этой области хранится MAC-адрес камеры, сетевые и другие настройки. А также серийный номер камеры, по которому она регистрируется на облачном сервере. В нашем случае это облако Xmeye.

Читайте также:
Установить программу на телевизор Sony

И если бы я перезалил прошивку с другой камеры, то у нас бы получился полный клон. И я не знаю смог бы он работать в одной сети или нет. Понятное дело, что одинаковые IP адреса конфликтуют. Но адрес можно сменить. А МАС-адрес нельзя. И конфликтуют ли одинаковые МАС-адреса в одной сети, я если честно точно не знаю, но по идее проблемы могут возникнуть.

Но нам собственно это и не нужно. Мы же будем собирать дамп прошивки вручную.
Так вот, если предположить, что в нерабочей камере, вот эта область прошивки живая, то её можно взять и вставить в рабочую прошивку, которыми обычно и прошиваются камеры. И такая прошивка у нас есть. Продавец присылал её моему товарищу, когда у него лагала одна из камер. Звучит сложно, но на самом деле всё не так страшно. Если немножко вникнуть и разобраться.

Начнём.
Итак, вот наша камера




Уличная камера на 3Мп, в алюминиевом кожухе, с ИК подсветкой и вариофокальным объективом 2.8-12 мм. С очень удобной регулировкой. Не нужно откручивать «морду» камеры, всё регулируется винтиками прямо на кожухе.
Вот плата камеры

Наша флеш память, это маленькая микросхема слева на 8 ножках

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

Оставим пока микросхему в покое и вернёмся к программатору. Его нужно немного доработать. По словам умных людей с 4pda программатор не работает с микросхемами на 3.3В. И в официальном софте нашей микросхемы нет. Зато она есть в софте NEOPROGRAMMER.

А для того что бы всё работало прекрасным образом, нужно 28 ножку микросхемы на программаторе, перекинуть на проходящую рядом дорожку. Вот эта дорожка уже зачищенная

Ножку разумеется нужно припаять

Получилось так себе, но проверка мультиметром показала, что всё ок. Со старым контактом ножка не коротит и контакт доходит куда надо.
Подключаем программатор к компьютеру и заходим в диспетчер устройств

Автопоиск драйверов в сети тут не поможет. Нужно вручную указать путь к папке с драйверами. Весь необходимый софт и драйвера, будут по ссылкам в конце обзора.
После установки драйверов имеем следующее устройство

Теперь нужно подключить прищепку с микросхемой к программатору. И тут нужно соблюсти ряд правил, что бы не напутать куда идут какие контакты. На программаторе есть два слота. Для микросхем 25-й серии и 24-й. Нам нужен для 25-й, он ближе к USB. Устанавливаем туда комплектный адаптер, как на фото

Обратите внимание на нумерацию клемм. 1 это первая ножка микросхемы. На шлейфе это красный провод. Соответственно втыкаем шлейф в адаптер так, что бы красный провод был на 1-й клемме

Микросхему тоже нужно вставить правильно в прищепку. На микросхеме первая ножка обозначена точкой на корпусе

Эта ножка должна совпадать с красным проводом со стороны прищепки. Теперь перейдём к программной части. Запускаем NEOPROGRAMMER

Нажимаем кнопку Поиск

Выбираем нашу микросхему

И нажимаем на пиктограмму «Читать чип», на панели справа от кнопки сохранить. Начинается считывание прошивки

Если прошло всё хорошо, а у меня прошло без проблем, получаем такой результат

Сохраняем скачанную прошивку на жёсткий диск. Далее нам нужно собрать дамп. Запускаем программу Dump builder, указываем там размер флешки 8 Мб и нажимаем Create dump и указываем путь и имя файла для сохранения


Далее нам нужно добавить рабочую прошивку для камеры (полученную в нашем случае от китайца). Нажимаем Open frimware и выбираем файл прошивки

Нажимаем добавить и все компоненты прошивки добавляются в наш дамп и он автоматически сохраняется

Закрываем Dump builder. Далее нам нужен любой HEX редактор. Я взял Free Hex Editor Neo. Он условно бесплатный. Работает 14 дней. Но прежде чем в нём что-то изменять в дампе, нужно подтвердить пробный период.

Например открыть файл прошивки (любой), повыделять там, покопировать и повставлять, пока не выскочит окно в котором нужно будет подтвердить или купить. После этого закрыть редактор и открыть заново два раза. Ну лично я делал так. На одном мониторе открыл одно окно на втором другое. Он без проблем запускается параллельно. В одном редакторе мы открываем созданный нами в программе Dump builder дамп

Во втором открываем скачанную в NEOPROGRAMMER и сохранённую прошивку с микросхемы. В сохранённой прошивке мы выбираем «крипту», это как раз тот раздел, в котором прописан МАС-адрес и прочее. Находится этот раздел по адресу 0002fc00 — 0002fff0. Выделяем его полностью. Нажимаем правой кнопкой мыши и выбираем копировать

Возвращаемся к первому окну, где открыт наш дамп, и находим там этот же адрес строки 0002fc00. Кликаем правой кнопкой по первой ячейке и выбираем Вставить

Скопированная часть прошивки переносится в наш дамп

Далее сохраняем нашу сборку на диск. Запускаем NEOPROGRAMMER и опять находим нашу микросхему. Здесь же кликаем на пиктограмму Открыть и выбираем только что сохранённую сборку. И находим пиктограмму Записать

Нажимаем на треугольник рядом с ней

Здесь нужно поставить галочки
Снять защиту
Стереть
Проверка на чистоту
Записать

Сравнить содержимое — галочку убрать. Далее нажать на саму пиктограмму Записать. Начнётся процесс записи на флеш память. По окончанию записи будет выглядеть так

После всей проделанной работы, мы впаяли микросхему обратно на плату

Читайте также:
Установить программу для просмотра видео на Андроид

Да, выглядит корявенько, но это паял не я, а мой товарищ. Его же камера. Так что с меня взятки гладки. Закончив с пайкой и собрав камеру, мы подали на неё напряжение и подкинули патч-кордом к ноутбуку. Приятным для нас сигналом был светящийся диод на разъёме RJ45 на шнуре камеры. Первым делом я пинганул камеру через командную строку

Камера пингуется. Потом запустил утилиту от Geovision и она определила камеру по Onvif

Ну а далее ввёл адрес в IE и с радостью увидел до боли знакомую картину

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 в дизайн своих устройств, т.к. его надежность при постоянном применении вызывает некоторые сомнения, а если возникнут вопросы, то задавать их будет некому, ведь даже сайт производителя чипа извне Китая открывается через раз.

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

Источник: habr.com

Многофункциональный программатор на CH341A

Для программирования различных FLASH и EEPROM микросхем 24-25 серий, купил на Али многофункциональный программатор, на микросхеме CH341A. Данная микросхема является универсальным конвертером, который может реализовать на USB шине: UART, EPP (можно подключить через него LPT принтер), I2C и SPI. Используя SPI-интерфейс, можно прошивать некоторые микроконтроллеры Atmega. В данной статье я постараюсь рассказать по максимуму про это устройство.

ch341a

Мой вариант программатора, купил за $2.64.

Промышленностью выпускаются различные варианты, отличающиеся в основном наличием различных дополнительных контактов и разводкой радиодеталей на плате.

На верхней стороне платы размещены: ZIF панель, контактные площадки, контакты UART и SPI интерфейса, светодиод, кварц на 12кГц (на подделках он может быть на разный номинал, из за чего программатор не будет работать) и переключатель P/S.

ch341a

С обратной стороны: микросхема CH341A, продолжение контактов SPI интерфейса и стабилизатор напряжения на 3,3В. В моём случае это 662, в других моделях программаторов может быть установлен AMS1117.

ch341a

Контакты «P/S» предназначены для переключения программатора во внутренний режим (P) — контакты замкнуты, либо внешний (S) — контакты разомкнуты.

Программирование FLASH и EEPROM микросхем 24-25 серий.

Для программирования микросхем BIOS материнских плат компьютеров, ноутбуков, телевизоров, SPI флеш памяти всевозможных тюнеров (ресиверов) и роутеров (маршрутизаторов), программатор должен работать в режиме P (контакты P/S замкнутые).

Для программирования микросхем в DIP корпусе необходимо поднять ручку-фиксатор ZIF панели и установить микросхему в пазы, согласно ключу.

ch341a

В зависимости от серии микросхемы (24хх/25хх), ключи разные и указаны на маркировке. После установки нужно опустить ручку-фиксатор, что бы зафиксировать микросхему.

Для программирования микросхем в корпусах SOP8 и SOP16, применяются контактные площадки, разведённые на плате программатора.

ch341a

К этим площадкам можно припаивать программируемую микросхему, либо прижимать прищепкой, как это делаю я.

ch341a

Когда нет возможности выпаять программируемую микросхему из платы, можно запрограммировать чип «без выпаивания», для этого придётся докупить «прищепку».

Неправильная установка программируемой микросхемы может привести к поломке программатора, как правило сгорает стабилизатор на 3,3 вольта и программатор перестаёт определять микросхемы.

Операцию, по установке микросхем в программатор, следует производить при отключенном от компьютера последнего.

Установив микросхему, подключаем программатор к USB-порту компьютера.

В «Диспетчере устройств» обнаружится неизвестное оборудование «USB Device«.

Необходимо установить драйвер (архив CH341PAR_drivers.rar).

После установки, устройство будет определятся как «USB-EPP/I2C…CH341A«

Для прошивки микросхем можно использовать русифицированную версию программы «CH341A Programmer 1.29«

Приведу несколько примеров подключения различных микросхем 25-серии к программатору.

Флеш-память Spansion S25FL032, выпаянная с роутера TP-Link TL-WR741, определилась корректно.

Флеш-память с китайской USB-флешки (подделка на 16-гигабайтную). Определился чип Gigadevice GD25Q16.

Флеш-память Winbond W25Q32FV, выпаянная с роутера Huawei WS 319, автоматически определилась как W25Q32BV.

Пришлось нажать кнопку «Детект» и в выпавшем списке выбрать свою микросхему, нажимаем «Выбор«.

Поскольку моя микросхема была выпаяна с роутера, мне нужно сосчитать с неё дамп. Для этого нажимаем «Читать» и ждём, пока он сосчитается.

Прогресс считывания дампа отображается в нижней шкале слева, в процентном соотношении.

Для сохранения дампа воспользуемся соответствующей кнопкой, нажимаем «Сохранить«.

Для загрузки сохранённого ранее дампа в микросхему, нажимаем «Открыть» и выбираем необходимый файл дампа, дамп откроется в программе для прошивка.

Для заливки дампа нажимаем «Записать чип«. Прогресс записи так же будут отображаться в процентном соотношении.

После прошивки желательно проверить корректность записанных в микросхему данных. Для этого воспользуемся пунктом «Проверка«. Производится проверка данных в микросхеме, с дампом открытым в программе.

Если данные записались корректно, об этом сообщит соответствующее сообщение.

В противном случае появится другое сообщение.

Если понадобится стереть микросхему, нужно воспользоваться пунктом «Стирание«.

После стирания чипа его желательно проверить на пустышку, для этого нажимаем на пункт «Пустые«.

Если чип действительно пустой, об этом сообщит соответствующее окно.

Если допустим чип будет защищён от стирания, то проверка на пустышку не пройдёт. В моём случае с микросхемой W25Q32FV так и вышло. Чип якобы стирался, но тест на пустышку не прошёл. Данный программатор не снимает защиту от стирания, для этого нужен более дорогой программатор. Проще купить новую микросхему, что я и сделал.

Использование программатора CH341A для устройств с SPI-интерфейсом.

SPI — последовательный интерфейс позволяющий подключать к микроконтроллерам различную периферию: дисплеи, датчики, карты памяти, флеш-память. Так же через этот интерфейс можно внутрисхемно программировать некоторые микроконтроллеры Atmega. Внутрисхемно значит не выпаивая их с целевой платы.

Подобным образом я программировал на плате микроконтроллер Atmega8, в самодельном металлоискателе «Шанс». На тот момент у меня не было подобного программатора и я собирал программатор Громова, который подключал к COM-порту компьютера. Для тех у кого нет COM-порта, программатор на CH341A как раз к стати. С помощью него можно так же прошивать: Atmega16; Atmega32; Atmega64; Atmega128; Atmega8515; Atmega8535; Atmega48; Atmega88; Atmega168; AT89S51; AT89S52.

Контакты SPI-интерфейса присутствуют на плате: 3.3, MOSI, CLK, MISO, CS, GND.

Для прошивки AVR можно использовать русифицированную программу от разработчиков:

Использование программатора CH341A в качестве конвертера USB — UART (TTL).

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru