Вопросы и ответы

Содержание

Для нормальной работы вентилятора замену фильтра следует производить один раз в месяц из-за снижения его поглощающей способности. Фильтр также может нуждаться в замене, если его поверхность покрылась пылью. Не допускается попадание влаги на фильтр.

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

Не пользуйтесь бензиносодержащими жидкостями!

Можно ли использовать нагреватель плат ASE-4554 совместно с комплектом АТР-9701?

Как установить нужную температуру у паяльной станции ASE-1106?

Как установить нужную температуру у паяльной станции ASE-1105?

Возможно ли подключение термопинцетов ASE-1209 или АТР-1209 к паяльной станции ASE-1105 (ASE-1106) для совместного использования?

Как осуществляется регулировка мощности паяльника Актаком АТР-5020?

Для модели Актаком АТР-5020 возможна регулировка мощности в диапазоне 10. 25 Вт. Регулятор мощности паяльника расположен на его рукоятке. Чтобы открыть доступ к регулятору, нужно сместить вниз прорезиненный держатель.

Как откалибровать температуру паяльника при работе с паяльной станцией ASE-1203?

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

Для калибровки температуры необходим внешний термометр.

Что означают сообщения об ошибках паяльной станции АКТАКОМ АТР-1122?

Как настроить подачу припоя в паяльных станциях АКТАКОМ АТР-1115 и АТР-1122?

Что означают сообщения об ошибках при работе с паяльной станцией Актаком ASE-1216?

При возникновении неисправностей паяльной станции ASE-1216 на её экране отображаются сообщения об ошибках.

Ошибка датчика «S-E» (sensor error): такая ошибка возникает при неисправности в датчике или цепи датчика, при этом прекращается подача питания на паяльник.

Ошибка нагревательного элемента: если на паяльник не удаётся подать питание, на экране устройства будет показано сообщение «H-E». Это сообщение говорит о возможной неисправности нагревательного элемента.

Обратитесь в сервис-центр.

Как выбрать подходящий наконечник для паяльной станции Актаком ASE-1216?

Как провести калибровку паяльной станции Актаком ASE-1216?

Паяльник необходимо калибровать каждый раз после его замены, а также после замены нагревательного элемента или наконечника. Для калибровки температуры необходим внешний термометр АКТАКОМ ASE-2003.

Как установить режимы работы паяльной станции Актаком ASE-1216?

Для паяльной станции Актаком ASE-1216 используется только один пароль, по умолчанию он “000”. Для запрета изменения температуры нужно изменить пароль, а затем выключить и включить прибор.

Как задать температуру для мощной индукционной паяльной станции Актаком ASE-1216?

ВНИМАНИЕ: Убедитесь, что температуру паяльной станции Актаком ASE-1216 можно изменять. Пароль по умолчанию для изменения температуры – «000».

При каждом нажатии кнопки «▲» температура возрастает на 1°С, при каждом нажатии кнопки «▼» температура понижается на 1°С, и новое значение температуры отражается на экране. После отпускания кнопки «▲» или кнопки «▼» соответственно, заданная температура будет отображаться на экране в течение 2 секунд. Удержание кнопки «▲» или кнопки «▼» в течение 1 секунды и более приводит к быстрому увеличению или уменьшению температуры соответственно.

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

Может ли измеритель статического заряда АММ-2043 проводить корректные измерения на небольших поверхностях?

Почему может не работать вакуумный захват (присоска)?

Вакуумный захват (присоска) термофена не работает, если в это время работает демонтажный блок.

Какой температурный режим нужно выбирать для демонтажа?

При выборе демонтажного паяльника (TOOL2) задайте температуру для печатной платы согласно следующим правилам:

Как правильно выбрать наконечник для паяльной станции Актаком ASE-1203?

Как задать пароль для паяльной станции Актаком ASE-1203?

Для паяльной станции Актаком ASE-1203 используется только один пароль, по умолчанию он “000”. Для запрета изменения температуры нужно изменить пароль, а затем выключить и включить прибор.

Вход в интерфейс изменения пароля:

Введите предыдущий пароль:

Нажмите кнопку ON/OFF, на экране отобразится “|-”H“, и левый разряд (сотни) начнёт мигать. Измените отображаемое значение кнопками ▲ и ▼. Введите пароль таким же образом, как задаётся температура. После окончания ввода пароля нажмите кнопку ON/OFF.

Пароль введён неправильно:

Возврат паяльной станции к обычному рабочему режиму после отображения в течение 2 секунд текущего заданного значения температуры говорит о том, что пароль введён с ошибкой, и изменить температуру нельзя.

Пароль введён правильно:

Сообщение QIB на экране говорит о том, что пароль введён правильно. Через примерно 4 секунды прибор возвращается в обычный рабочий режим, а значение температуры можно изменить.

Ввод нового пароля:

При отображении на экране сообщения QIB нажмите кнопку ON/OFF, и на экране будет показано приглашение для ввода нового пароля: I_____1. Кнопками ▲ и ▼ задайте новый пароль.

Повтор ввода нового пароля:

Примечание: В пароле можно использовать цифры от 0 до 9. Пароль одинаков для обоих блоков паяльной станции. После задания пароля на одном из них изменение параметров второго блока также блокируется.

Как сменить пароль у паяльной станции АТР-1122?

Изначально в памяти паяльной станции установлен пароль "000". При этом допускается свободное изменение установки температуры.

Как установить температуру у демонтажной паяльной станции АТР-2103?

ВНИМАНИЕ: Всегда устанавливайте температуру на минимальное значение необходимое для выполнения работ.

Данная демонтажная паяльная станция имеет два вида настройки температуры: обычная установка температуры и установка температуры в процессе работы.

Температура может быть установлена в диапазоне от 200 °С до 480 °С при помощи кнопок управления температурой. Установите температуру, используя ниже приведённую таблицу.

Температура Печатная плата
280…350 °С Односторонняя печатная плата
320…400 °С Печатная плата со сквозными отверстиями
350…450 °С Многослойная печатная плата

Как откалибровать температуру нагрева паяльника при работе с индукционной паяльной станцией АКТАКОМ АТР-1121?

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

Как установить ждущий режим и авто выключение индукционной паяльной станции АКТАКОМ АТР-1121?

Если выбранный рабочий режим станции имеет функцию ждущего режима и паяльник не используется в течение 20 минут, то мощность, подводимая к нагревательному элементу, будет снижена, и на дисплее появится «—». Это означает, что станция перешла в ждущий режим и температура жала снизится до 200°С (если установка температуры была не менее 200°С) или до 50°С (если установка температуры была меньше 200°С) и будет оставаться такой до возврата станции в рабочий режим. Для возврата станции в рабочий режим: выключите питание станции а затем вновь включите его или нажмите любую кнопку или возьмите паяльник за ручку. Если паяльная станция не будет возвращена в рабочий режим в течение 40 минут после перехода в ждущий режим, то питание её будет автоматически выключено. Дисплей при этом будет погашен.

Выбор рабочего режима. Как это сделать при работе с индукционной паяльной станцией АКТАКОМ АТР-1121?

При появлении на дисплее , одновременно нажмите и удерживайте нажатыми кнопки «▲» и «▼», пока не дисплее не появится только одна цифра в младшем разряде. Это означает, что станция готова к выбору рабочего режима. Нажатие кнопок «▲» и «▼» будет изменять показание на дисплее в указанном ниже порядке:→0↔ 1↔ 2↔ 3↔ 4↔ 5↔ 6↔ 7← или →7↔ 6↔ 5↔ 4↔ 3↔ 2↔ 1↔ 0←После выбора рабочего режима для его сохранения в памяти станции нажмите кнопку «*».

Как установить пароль при работе с индукционной паяльной станцией АКТАКОМ АТР-1121?

Изначально в памяти станции установлен пароль – «000». При этом допускается свободное изменение установки температуры. Если требуется ограничить возможность изменения установки температуры, необходимо изменить пароль. Для выбора трехзначного пароля допускается использование цифр от 0 до 9.

Как установить температуру при работе с индукционной паяльной станцией АКТАКОМ АТР-1121?

ВНИМАНИЕ! Убедитесь, что установка температуры возможна (введен верный пароль или произведен его сброс).

Как включить подсветку у тестера антистатики АММ-2043?

Чтобы включить подсветку, нажмите и удерживайте в течение 1-3 секунд кнопку “POWER”

Что могут означать звуковые сигналы при работе тестера антистатики АММ-2043?

Звуковые сигналы могут означать следующее:

Какой предел регулирования при высоте газ-патрона?

Как на паяльной станции ASE-4202 переключить отображение температуры с градусов Фаренгейта (F) на градусы Цельсия (C)?

Если паяльная станция ASE-4202 измеряет температуру в °F, а вам необходимо перевести температуру в °C выполните следующие действия:


Рис. 1


Рис. 2

Как установить параметры паяльных станций АТР-1107/АТР-1109?

В режиме установки параметров можно регулировать следующие характеристики:

1. Отключите питание станции. Нажмите и удерживайте одновременно кнопки «▲», «▼». Включите станцию.

2. Продолжайте удерживать «▲», «▼» пока на дисплее не появится символ С (по Цельсию) или F (по Фаренгейту).

3. Когда на дисплее горит символ С или F, включен режим ввода параметров. Нажатие кнопок «▲», «▼» будет поочередно менять С или F. Для выбора С или F нажмите кнопку (*). После выбора С или F на экране начнет мигать трехзначное число. Установка значения параметра проводится по тому же принципу, что и установка температуры нагрева (см. вопрос «Как установить нужную температуру паяльника паяльных станций АТР-1107/АТР-1109?»). Убедитесь, что значение параметра не выходит за пределы нормы: 30. 150 °С. Если установленная температура не соответствует указанному диапазону, то на дисплее снова будет мигать трехзначное число. В таком случае следует ввести корректное значение параметра.

Как изменить установленную температуру на паяльных станциях АТР-1107/АТР-1109?

Нельзя изменить температуру, не переустановив карту. Это дает возможность:

Как установить нужную температуру паяльника паяльных станций АТР-1107/АТР-1109?

Что делать при плохой работе насоса вакуумных захватов АТР-9381/АТР-9382?

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

Проверьте, не загрязнена ли губка фильтра, установленная в разъеме 1 (Рис.1 и Рис.2). Если губка фильтра грязная – замените ее. Для этого открутите гайку воздушного шланга, удалите губку фильтра из разъема 1 (Рис.1 и Рис.2), замените ее на новую и установите воздушный шланг обратно. Если причина не в фильтре, то, возможно, сломан насос. Если необходим ремонт, обратитесь в сервис-центр.

Рис.1 Разъем для подключения воздушного шланга АТР-9381

Рис. 2 Разъемы для подключения воздушных шлангов АТР-9382

Как заменить фильтры вакуумного паяльника паяльных станций АТР-4204/4302/4501?

Замена внутренних фильтров.

Замена внешнего фильтра.

Фильтр является расходным элементом, для обеспечения нормального всасывания требуется его регулярная замена. Выдерните шланги с обеих сторон фильтра, выньте его и замените новым.

Как быть, если снизилась сила всасывания вакуумного паяльника у АТР-4302?

Что делать, если не получается полностью расплавить припой при использовании паяльных станций АТР-4204/4302/4501?

1. При демонтаже больших транзисторов, диодов и больших клемм с печатных плат с радиаторами, многослойных печатных плат, земляных или шин питания из-за недостаточной теплоемкости наконечника температура падает, и это затрудняет удаление припоя. Можно увеличить температуру, чтобы расплавить припой. Но значительно лучший способ – использовать вспомогательный нагреватель, чтобы разогреть плату до температуры 70 ºC и затем произвести демонтаж при помощи вакуумного паяльника.

2. Если наконечник поврежден, например, повреждение или эрозия покрытия, в этом случае наконечник должен быть заменен.

Как заменить нагревательный элемент паяльной станции АТР-4121?

Что означают символы на экране дисплея паяльной станции АТР-4121?

«S-E» свидетельствует о неисправности датчика температуры. В этом случае, нагревательный элемент должен быть заменён (нагревательный элемент и датчик температуры в сборе).

Если при работе устройства на дисплее отображается температура менее 50 °С и дальнейшего повышения температуры не происходит, это значит, что нагревательный элемент неисправен и его необходимо заменить.

Как осуществляется установка рабочих температур в память в паяльных станциях Актаком ASE-1132/1136?

В память паяльной станции Актаком ASE-1132/1136 может быть установлено до 3-ёх рабочих температур быстро программируемыми кнопками. Для того чтобы внести в память станции желаемую температуру надо:
— нажать и удерживать кнопку управления "1" до появления на дисплее надписи "PS2 = PR 2";
— удерживая кнопку управления "1", установить желаемую температуру на дисплее поворотным терморегулятором и отпустить кнопку "1".
Установленное значение сохранится в памяти.
Аналогичным образом можно установить желаемую температуру для кнопок управления «2» и «3».

Для того чтобы работать с установленной в память температурой, требуется после включения паяльной станции кратковременно нажать кнопку управления «1», «2» или «3».

Как я взломал паяльник

Фраза звучит несколько странно? Спасибо техническому прогрессу — не так давно «сфотографировать на телефон» звучало не менее странно.

image

В конце прошлого года я купил паяльную станцию, уже успевшую получить ярлык «народная». Её достоинства: удобные жала-картриджи T12, приличная мощность (до 72W в теории), быстрый нагрев (единицы секунд), невысокая цена. (Подробнее ознакомиться со станцией можно в этом шикарном обзоре)

Купил я самую последнюю версию hardware 2.1s, и немного расстроился, увидев что прошивка старая. Разумеется руки зачесались обновить. Зная что «сердцем» паяльной станции является STM32F103C8 (популярный микропроцессор ARM Cortex-M3 производства STMicroelectronics) — тем интереснее было покопаться, т. к. я когда-то уже моргал светодиодом на STM32F4Discovery.

Тут же были припаяны 4 провода SWD интерфейса, подключен программатор, залита прошивка.
И… Станция потребовала активацию!

Чтобы было понятнее, расскажу пару слов о разработчике этой станции. Вся информация почерпнута из интернета (и, частично, из самой прошивки). Железо и прошивку разработал некий китайский товарищ ZhongGuoxin (38827251@qq. com) приблизительно в 2014 году. Разработка активно шла в закрытой группе какого-то китайского форума. Видимо понимая тщётность попыток защитить разработку от клонирования своими «земляками», он сделал защиту в прошивке. Прошивка распространялась в виде бинарных модулей, и её мог залить в свежеспаянный клон любой желающий.

Почему именно так? Ведь есть гораздо более надёжные схемы, с распространением уже прошитых МК и обновлением зашифрованными BLOB-ами. Не знаю. Видимо тонкий баланс между затратами времени, удобством, популярностью и доходом. При старте прошивка генерирует коды ID1 и ID2, которые автор обменивает на ключ активации RG1 и RG2 за символическую сумму в 9 юаней (

Но как можно защитить прошивку, если злоумышленник имеет к ней доступ? Сейчас узнаем.

К сожалению, моих кодов активации, честно купленных вместе с устройством, мне не досталось. Забегая вперед скажу, что помимо обновления затребовать эти коды может перепайка микропроцессора (если пожгли ему ноги) или замена EEPROM. И такие случаи уже были неоднократно.

Т. к. владею своим экземпляром я правомерно, то в полном соответствии с ст. 1280 ГК РФ, могу «осуществлять действия, необходимые для функционирования программы»

Первый блин комом

Прошивка была загружена в IDA. Очень быстро найдено место где вводится код активации. Чтобы убедиться что я на верном пути — я пропатчил аргумент у функции, которую назвал DisplayString. Залил пропатченную версию. Не стартует!

Ну ничего страшного, наверное неверно понял назначение функции. Откатываю изменения. Патчу выводимый текст. Не стартует!

Тааак. Есть проверка целостности. Нужен отладчик. И мы её поймаем аппаратной точкой останова! В качестве отладчиков перебрал несколько вариантов, остановился на связке IDA gdb + OpenOCD. Сам по себе отладчик в IDA неудобен и глюковат, но возможность интерактивно редактировать дизасм прямо в отладчике перевесила.

Запускаю OpenOCD, ставлю watchpoint на чтение изменённых байт кода. Запускаю. Ватчпоинт не срабатывает… Как же так? Ведь проверка целостности 100% присутствует!
И вот тут я заинтересовался по-настоящему.

Исследуем данные

Полный размер прошивки 75512 байт. Это довольно много. Код от данных для нас уже отделила IDA. Получилось 48128 байт кода и 27384 байта данных, без учёта маленьких пятен локальных данных, расположенных в коде между функциями — особенность ARM Thumb.

Теперь неплохо бы понять что эти данные означают.

Самое простое — текстовые данные. Названия пунктов меню, жал, копирайты. Их оказалось больше 6кб. Среди текстов меню попались байты, очень похожие на 32 битные адреса в сегменте FLASH. По этим адресам располагались объемные подпрограммы, содержащие в себе вызовы ранее найденной DisplayString. Значит это обработчики пунктов меню. Приличный объём кода опознан.

Продолжаем. Раз экран станции монохромный — логично предположить что графические данные будут представлены в битовом (монохромном) виде. Вспомнив детство с ZX-Spectrum — было решено отображать байты столбцами: так я в 90е искал графику в играх, она заметно отличалась от данных и кода.

Была написана программка viewbin на питоне. Для удобства каждый блок в 256 байт отделён от соседнего. Всего в одном столбце по вертикали располагается ровно килобайт (4 блока). Следующий столбец относится к следующему килобайту.

image

В правой части хорошо заметны графические закорючки. Но в картинки они складываются плохо. А если наклонить голову вправо? Сначала можно заметить шрифт 8*16 (x*y): первые 8 байт образуют верхнюю половину символа, вторые — его нижнюю половину.

image

Остальные символы строятся по тому же приципу. Большой шрифт имеет размер 16*32, глифы иероглифов 16*16

image

Плюс есть ещё несколько служебных символов (значок цельсия, термометр, стрелка, чекбоксы). Суммарно почти 16 кб занято графикой.

Итого из 27 кб данных удалось сходу распознать 22 кб. Неплохо.

Перейдём к коду — 48 килобайт тугого THUMB кода. Он действительно весьма компактный. Например часто встречающаяся операция v1 & (

v2) это всего одна инструкция «BTC».

Что такое ARM Cortex M3

МК, помимо ARM ядра, содержит кучу периферийных модулей. Всё это хозяйство управляется регистрами, отображёнными на память. Этих регистров тысячи. Они объёдинены в группы по функциональному признаку, каждая группа выровнена.

Плюс т. н. BitBanding — когда доступ к слову (32 bit) означает атомарные установку или сброс единственного бита. Нетрудно прикинуть, что один 32 разрядный регистр займёт 128 байт в области BitBand. Итого регистры занимают совершенно сумасшедший размер адресного пространства.

Из Си кода работа с периферией выглядит как изменение именованного регистра периферии.

В ассемблере же эта работа выглядит как несколько уровней косвенной адресации. Обычных регистров CPU. Достали r1 из r2, по нему другой r0, а потом ещё раз r0 по смещению 0x0C. Что это — неясно совершенно.

Исследуем код

После ввода регистрационного кода вызывается несколько функций. Очищается экран. Выводится надпись (на китайском!). После чего вызывается ещё несколько функций. Сверяются два значения. И выводится либо одно, либо другое сообщение (на китайском!). После чего станция виснет.

Предположив что это и есть проверка кода я заменил условие. Ничего не изменилось. Поставил точки останова на вызываемых функциях и их внутренностях. Они вызываются из большого числа мест совершенно с разыми аргументами.

Понятнее не стало. Возвращаемся к началу. Так почему же не сработал WatchPoint подсчёта контроля целостности?

Я догадывался что причина в DMA (Direct Memory Access) контроллере. Тем более что STM32 имеет аппаратный модуль подсчёта CRC — даёшь ему задачу, и он сам читает байты из памяти через DMA, инкрементирует адрес, и считает контрольную сумму. Достаточно лишь дождаться окончания выполнения и прочитать результат из регистра.

Но чтобы исследовать работу с периферией надо корректно определить все регистры по их номерам. Регистров тысячи, их числовая форма скрыта от программиста слоем библиотечного кода. В дизассемблере нашёл константу — поищи что это за регистр. Заниматься прыжками datasheet-дизассемблер мне быстро наскучило. И я написал питон-скрипт для IDA (ссылка на GitHub), который генерирует основную массу регистров. А заодно определяет таблицу векторов прерываний, даёт имена обработчикам, оформляет точку старта и создаёт сегмент SRAM.
Стало чуточку понятнее.

Чтобы восстановить логику работы я предпочитаю начинать с маленьких функций. Они легче для понимания, а полезные ещё и часто используются.

Функции, использующие много битовой арифметики, были определены как Floating Point с помощью «грубой силы»: указатель команд ставился на начало функции. В регистры заносилось HEX представление плавающей точки (например числа «100.0» и «30.0»). (Ссылка на удобный Online конвертер). Результат функции конвертировался обратно в плавающий вид. Если на выходе имеем что-то осмысленное, типа «70.0» или «3.3333» — то смело можем давать имя. Оказалось что часть функций работает с float, часть c double.

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

Споткнулся я на нескольких noreturn функциях, на входе в которые lr указывал «вникуда», имея значение 0xFFFFFFFF, а стек был заполнен странными константами навроде 0x12121212, 0x09090909. Гугл настаивал что это FreeRTOS (Что?!
Операционная система реального времени в… ПАЯЛЬНИКЕ?).

Но вот с исходниками бинарный код сопоставить не получилось. Я проверил 10 версий, от 10.0.0 (2018) до 3.2.4 (2005). Везде сходство было лишь поверхностным. Поэтому ограничился именованием таких фукнций как TaskXXXXX, а общий код, который передавал им управление, как TaskCreate.

Исследуем работу периферии или Автоматизация отладки

Среди опознанных функции стандартной библиотеки оказались DMAInit, DMACmd, DMAGetCurrentDataCounter. Проблема заключалась в том, что вызывались они слишком уж много и часто. А я ленивый.

Поэтому я написал питон API для работы с функциями OpenOCD: Ссылка на GitHub. Команды шлются OpenOCD серверу по telnet протоколу. В качестве примера использования в каталоге «examples/dbgbot» лежит код робота, речь о котором пойдёт ниже.

На основе этого API я сделал робота, исследующего вызовы DMA. Робот реагирует на инициализацию DMA операции в функции DMA_Init. Протоколирует адреса периферии, памяти, направление передачи, количество и размер передаваемых элементов, а так же опциональный признак автоинкремента адресов источника и приёмника.

Для Wait надо ждать когда обнулится аппаратный счётчик. (Ещё есть сигнализация прерываниями, но это не наш случай.) Ждать надо продолжая исполнять команды, т. к. JTAG отладка полностью останавливает ядро микропроцессора.

Проблема оказалась в том, что автор не заморачивался с ожиданием, если давал DMA команду на небольшой объём данных — к тому моменту когда они ему становились нужны чип уже всё сделает. Для меня же это решение означало что я не могу надеяться на вызов DMAGetCurrentDataCounter для отслеживания окончания передачи. И когда этими данными начнут пользоваться я тоже не знал — если получать их слишком поздно они уже могут быть испорчены работой остального кода.

Поэтому пришлось применить эвристику: если размер передачи > 32 байт — будет использована явная проверка. Иначе после выдачи команды на трансфер я пошагово исполню столько инструкций, сколько байт запрошено на передачу.

Это не единственный «хак» — изучив весь код ожиданий, я пришёл к выводу, что он всегда занимает 4 байта после вызова DMAGetCurrentDataCounter.
Поэтому после первого срабатывания этой точки останова — получаем адрес возврата и переставляем точку останова на 4 байта за ним. Ожидание завершено!

B
0x200030b0 42 7e 42 7e | B

B
0x20002790 42 7e 42 7e 42 42 7e 40 | B

@
————————————————————————————-
Calc_CRC_7
CRC DMA LR:0x08007a7d P:0x40023008 (<=) M:0x200029c4 *(00000001) [0x0001] P4.M4.
CRC DMA LR:0x08007acd P:0x40023000 (<=) M:0x20002aac *(a7894d6e) [0x0076] P4.M4.
CRC DMA LR:0x08007acd P:0x40023000 (<=) M:0x20002aac *(a7894d6e) [0x0076] P4.M4.
CRC DMA LR:0x08007b1f P:0x40023000 *(fab893e0) (=>) M:0x20002aac [0x0001] P4.M4.

Видео работы робота с анализом DMA операций:

Функций, относящихся с посчёту CRC оказалось 8 (ВОСЕМЬ!). Ни одна не содержит параметры в явном виде, используются витиеватые вычисления. Часть из этих функций для рассчёта использует рекурсию, что дополнительно усложняет понимание.

Из дампа, сделанного роботом, отлично видно что константа (я назвал её MasterCRC) копируется из Flash в RAM, потом из RAM в RAM. Считается CRC на две половинки флеша: до этой констаны и после этой константы до самого конца, т. е. даже на незанятую прошивкой область. А это значит что если чип перед прошивкой предварительно не очистить — контрольная сумма не сойдётся!

Полный подсчёт CRC выполняется 4 раза. Ужас! Потом считается CRC на CRC. И CRC на CRC на CRC. Ужас! Сильно в манипуляции с CRC я вникать не стал.

DMA приносит первый успех

Анализ кода после получения ID чипа показал, что дважды вызывается одна и та же функция, сначала над первыми 6 байтами ID, а затем над вторыми. Функция обрабатывает переданный буфер, используя байты как индекс в 256-значном массиве, ксоря и сдвигая результаты.

Подозрение подтвердилось — вызовы вернули мои ID1 и ID2 коды.

Ногодрыжество

Определяя функции из стандартной библиотеки периферии я заметил обработку странной таблицы по адресу 0x800C23C. В ней описывались состояния каждого из 16 пинов всех 7 GPIO портов (вызовы — жуткий копипаст). Стало интересно какие пины для чего используются.

подтяжка:
IPU — push supply (умолчание, если не указано иное)
IPD — push ground
AIN — analog in
Out_OD — Out Open-drain
Out_PP — Out Push-pull

частота 50mhz (умолчание, если не указано иное)

image

Какие-то настройки в порту GPIO_C видимо остались мусором от старых версий/прототипов. Разводка поменялась, порт вообще отключили, а скорость зачем-то меняется.

Обратите внимание на подключение EEPROM Flash. Линии I2C заведены на ноги, где нет аппаратного I2C. Странное решение, не правда ли?

Ну тем лучше. Я никогда не работал с I2C. А тут представилась такая возможность пощупать его на уровне ручного управления сигналами на ножках МК! Скачал доку с сайта TI, нарисовал таблицу состояний, набросал код для робота. Чтобы он по изменениям пинов раскодировал передачу.

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

Ок, зная работу протокола даём имена функциям, поднимаясь уровень за уровнём до грозди функций Flash_ReadData / Flash_WriteData, малоотличающихся друг от друга (копипаст?)
Смотрю на ссылки — чтение и запись вызывается из места ввода кода. Интересно! Оказывается 4 байтовый ответный код после ввода пишется по флеш. А потом читается оттуда. Ожидание этих операций я и принял за проверку. А два разных сообщения на китайском — если прочитали тоже что и записали и если нет (аппаратная ошибка?).

Получается что после ввода код не проверяется. Он проверяется всегда при старте станции. И при ошибке проверки вместо основной RTOS задачи паяльника создаётся другая RTOS задача, которая занимается вводом кода и записью его во флеш. Чтож, логично.

Кроме того в соседнх флеш-функциях происходит чтение-запись солидного куска данных. Размером 0x3AE байт. Похоже на настройки. После их чтения вызывается функция вычисления кода по буферу с данными. До зубовного скрежета напоминающую функцию вычисления ID1 и ID2. И даже таблица с данными ещё одна, точно такая же. Зачем использовать такой код для проверки целостности настроек? Взял бы лучше CRC! Постойте, а что если…? Загоняю в гугл константы из таблицы — точно. Это и есть CRC. Точнее CRC16_CCIT. Две копии одной и той же функции. Две копии таблиц. Чтобы враг не догадался.

Последние шаги

Итак, мы контролируем чтение из флеша. «reset init». Точка останова быстро приводит нас месту где читается свежезаписанный ответ. Ставим watchpoint на прочитанные данные. «resume» Станция как ни в чём ни бывало показывет интерфейс ввода кода.

Опять DMA? Смотрим лог. Сразу после копирования прочитанного кода из флеш происходит два копирования блоков по 32 байта. Смотрим дизассемблер по адресу возврата из DMA операции. В коде видим после копирования 32 байт вызов странной функции с кучей xor внутри. Ставим точку останова.

При вызове функции видим буфер с какими-то данными, в последних 4 байтах которого лежат уже знакомые ID1 и ID2 станции. На выходе из функции видим 16 битное число. Ещё один вызов — буфер с другими данными, в конце так же лежат ID1 и ID2.

А что если результат функции и есть искомый код-ответ? Запускаем станцию, вводим полученные в отладчике числа, рестарт — и код принят!

Осталось понять что именно вычисляет эта загадочная функция. А делает она вот что:

Переписываем на Python. Проверяем — работает. Для отладки я попросил несколько ребят из интернетов, имеющих такие же станции, дать мне их ID и проверить сгенерированные RG. Проверили ещё на 5 станциях. Результат правильный.

Заключение

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

Паяльная станция

Мой рассказ о паяльной станции в первую очередь адресован тем, кто ещё не имеет таковой и, возможно, желает в ближайшее время её купить.

Действительно, не каждый начинающий радиолюбитель начал практическое знакомство с электроникой, имея под рукой паяльную станцию. Многие учились паять и обычным электрическим паяльником.

Свой рассказ о паяльных станциях я начну с обзора паяльной станции Lukey 936D. Да, в продаже полно комбинированных паяльных станций (паяльник + фен), но термовоздушную паяльную станцию я купил ранее. Поэтому мой взор пал на паяльные станции без фена, только паяльник и ничего более.

Вот так выглядит паяльная станция Lukey 936D. В комплекте идёт также подставка для паяльника и целлюлозная губка.

Аналоговая паяльная станция Lukey 936D с цифровой индикацией

Глядя с верхушки нынешних знаний, отмечу, что цифровые паяльные станции лучше, хотя бы тем, что более точно поддерживают температуру жала. Уже гораздо позже я приобрёл цифровой паяльник с термостабилизацией.

В реальности устройство паяльной станции весьма простое. Чтобы связать невидимой нитью понимания теорию и практику, приведу вначале схему паяльной станции Lukey936D, а затем покажу фотки реальных деталей и элементы схемы.

Схема паяльной станции Lukey 936D.

Схема паяльной станции Lukey 936D

Кликните для увеличения по картинке (откроется в новом окне).

Керамический нагреватель паяльника показан в виде конструктивно объединённого элемента из спирали нагревателя TH и тонкоплёночного термистора R.

Силовая часть показана отдельно: трансформатор T1, плавкий предохранитель F1 (F1AL250V) и выключатель питания SA1.

На схеме не показаны элементы защиты (ESD SAFE).

Теперь заглянем под "капот".

Схема индикации реализована на микросхеме DH7107GP (полный аналог ICL7107). Да, эта микросхема довольно часто применяется в измерительных приборах, но в данном случае она используется для отображения температуры с терморезистора (термистора). То есть в роли термометра.

Плата индикации температуры с россыпью семисегментных индикаторов.

Плата индикатора температуры паяльной станции Lukey 936d

Микросхема DH7107GP в панельке, + к параметру ремонтопригодность.

Микросхема ICL7107 на плате индикации паяльной станции Lukey 936D

Микросхема ICL7107 и панель

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

Силовая часть.

Силовой трансформатор паяльной станции

Плата управления.

Печатная плата паяльной станции Lukey 936D

В качестве задатчика температуры используется обычный переменный резистор на 100 кОм. Он устанавливается на передней панели. Из-за него бывают проблемы. Если цифры на дисплее постоянно скачут, то проверьте именно этот резистор. Возможно, отошёл или плохо "контачит" ползунок этого резистора.

Переменный резистор

На плате управления есть несколько подстроечных резисторов. На схеме они обозначены как PR1 и PR2. Без надобности крутить их не советую. Они задают режим работы станции.

Кроме прочего на основной печатной плате можно обнаружить диодный мост на диодах 1N4007 (или сборка DB107) и два интегральных стабилизатора положительной (L7805ABP) и отрицательной (79M05D) полярности на 5V. Двухполярное напряжение ±5V нужно для питания индикатора.

Интегральные стабилизаторы отрицательной и положительной полярности

По принципиальной схеме можно понять, как работает паяльная станция. Микросхема LM358 сравнивает эталонное, заданное оператором значение с тем, что оно получает от терморезистора в керамическом нагревателе. Далее если температура нагревателя ниже заданного, микросхема подаёт сигнал на открытие симистора VS1 (BT131-600 или 97А8). При этом индикаторный светодиод HL1 горит постоянно. Симистор VS1 открывает более мощный VS2 (BT-136-600E) и тот подаёт ток на нагревательный элемент TH1 керамического нагревателя.

Электростатическая защита.

Пару слов хотелось бы сказать о защите. Металлические элементы паяльника заземлены. Если разобрать паяльник, то можно обнаружить, что металлическая часть штуцера контактирует с пружиной.

Заземляющая пружина

Она в свою очередь подключена к заземляющему проводу сетевой вилки. Этот же провод подключен к магнитопроводу силового трансформатора.

Экранировка трансформатора и элементы защиты

Как оказалось, нагреватель в паяльнике качественный, керамический типа HAKKO 1321 (A1321).

Нагреватель HAKKO 1321

Именно тип нагревателя меня интересовал более всего. Перед покупкой я проверил, есть ли заветная "ступенька" у нагревателя. Стоявшая рядом Lukey 936A оказалась с нихромовым нагревателем.

Сам паяльник от станции в устройстве не представляет ничего особенного. Вся электрическая часть состоит из запаянного на плату керамического нагревателя и соединительного шнура с разъёмом типа "папа".

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

Цоколёвка разъёма паяльника

Источники:

https://www. aktakom. ru/support/faq/index. php? SECTION_ID=6747

https://habr. com/ru/post/350602/

https://go-radio. ru/pajalnaya-stantsiya. html

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: