Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

J-Link ARM V8 программатор/отладчик: пример практического применения

Сегодня хочу поделиться с общественностью пожалуй самым популярным применением сего программатора — прошивкой принтера Samsung ML-2160. В определенных кругах известно как «унижение принтера ml-2160». Тема старая, но все равно много кто и сейчас «напарывается на грабли» при прошивке сего устройства. Кому интересно — прошу под кат. Осторожно — много фото!

Хочу начать с того, что в свободное от работы время я для развлечения и тренировки мозга и рук чиню всякую микропроцессорную электронику. Однажды пришел ко мне знакомый с просьбой «почини принтер». Был это популярный тогда Samsung ML-2160. И выглядел как недавний подопытный:
Хитрый самсунг хотел денег за родные картриджи, ну а людей exUSSR ставит в ступор цена оригинального картриджа — мы ведь лазерный принтер купили чтобы было дешево 😉 Первые версии принтера можно было откатить на старую прошивку без особых проблем, но в следующих прошивках такую возможность убрали.

В общем вечер гугла и мы заказываем программатор. Заодно рекомендую купить USB TTL-UART, чтобы видеть что нам отвечает принтер во время прошивки. Через пару недель к нам приезжает наш красавец:

и внутри:



На этом месте все обычно подключают программатор, качают последнюю версию софта с офсайта, ставят, запускают, наблюдают радостное окно программы, которая нашла программатор:
Но счастье их длится не долго: Говорят, некоторые после этого получают кирпич из программатора. Всех остальных просто задалбывает это окно. А всего лишь нужно было поставить софт v4.92 (setup_jlink_v492.zip). Сразу оговорюсь, что весь необходимый софт оставлю в конце обзора. Теперь включаем принтер. Кладем лист бумаги зажимаем и держим кнопку PrintScr на принтере примерно 10 секунд. Он радостно заморгает лампочкой и напечатает что-то подобное:Читаем строку Firmware version, видим версию ….02.00 и понимаем что не зря купили программатор. Теперь ставим драйвера. На случай если у вас их нет — SamsungUniversalPrintDriver22.
exe. Windows 10 подхватывает сама. Если вы еще не распаковали мой архив — самое время.
Копируем Boot.bin в c:\ (чтобы не бороться с проблемами с кодировками итд, хотите экспериментов — редактируйте download.jlink) Если поставили jlink не в каталог по умолчанию — редактируете путь в файле flashme.bat. Минимальный набор софта есть. Можно приступить к потрошению принтера 🙂 Отвертка Ph3 — наше все! Отключаем принтер от сети и откручиваем один саморез:и видим плату:
отстыковываем шлейфы и откручиваем 3 винта. Нам предстоит распаяться вот так:
распиновка разЪема на программаторе:
Тут следует обратить внимание что на кабеле распиновка зеркальная! 1 и 2 ногу программатора спаиваем вместе и в зависимости от положения джампера на плате подключаем к 3.3В принтера или нет. Если не хотите разбирать программатор, то померяйте напряжение на закороченном 1 и 2 контакте относительно земли: если там 3,3В есть, то паять к принтеру не надо.
Основная проблема теперь в том, что придется поднимать вторую от угла ногу процессора! Не вторую, по счету, а вторую от угла. Проблема здесь в том, что по инету бродит фото, где написано 2 ногу, фото крупным планом, но процессор другой! Увлекшись фотографированием я сам опять наступил на эти грабли и поднял не ту ногу! Но времени переснимать, к сожалению, не было.
Далее несколько фото того как поднимать ногу иголкой, но нога неправильная. Правильная нога на фото выше!
Процедура такова: капаем припоем (а лучше сплавом Розе/Вуда) на 2 крайних ноги.
Затем вставляем иголку, греем припой паяльником и поворачиваем немного против часовой стрелки:

Лишний припой убираем оплеткой
Теперь опускаем первую с края ногу и паяем провода ко всем контактным площадкам. В последнюю очередь паяемся ко второй с краю ноге процессора, предварительно зафиксировав скотчем/изолентой провод. В итоге получается вот такая экибана:
Еще раз повторюсь, что по этой фото я заметил что не туда припаял провод к процессору.
Паяем его правильно, припаиваем консоль (usb-uart) и подключаем шлейфы назад. Вот так должно получиться:ну и все вместе выглядит примерно так:
Все, с пайкой на пока закончили. Подключаем принтер, консоль, программатор у компьютеру. Если консоль паяли, то ставим например Tera Term, выбираем нужный порт и скорость 115200. Все остальное по умолчанию. Не забываем подключиться к порту.
Подключаем в сеть принтер. Нажимаем принтскрин на принтере и не отпускаем, нажимаем и отпускаем «сеть», ждем 3 секунды и отпускаем принтскрин. Принтер обычно перемагривается лампочками и загорается зеленая. Попутно в диспетчере задач видим устройства «нет подключенного принтера» и «поддержка usb принтера»:
Тем временем в консоли бегут буковки:
запускаем flashme.bat:
тем временем в консоли (Если честно, я не уверен насчет правильности последующей фотки ибо есть подозрение что я ее мог перепутать делая скрин плохого кабеля 🙁 ):

Этими действиями мы закинули загрузчик, и теперь нужно влить новую прошивку. Вливаем MA_2160_05. hd. Для этого перетягиеваем его на usbprns2.exe в проводнике или запускаем из командной строки «usbprns2.exe MA_2160_05.hd» я предпочитаю второй вариант: в консоли:

Ну вот и все — принтер унижен! 🙂 Отключаем все от принтера, снимаем плату, распаиваем и собираем все назад. Не забываем заклеить скотчем чип на картридже или вовсе его выковырять.
Напоследок хочу рассказать о проблемах при перепрошивке.
1. Вы припаяли что-то не так и не туда, тогда программа для прошивки не сможет подключиться к процессору, не отобразит регистры, выдаст кучу ошибок итд. Вы это увидите.
2. Случается так, что кабель принтера совсем Г, тогда вы получите вот такое в консоли: и это, собственно один из не многих случаев, когда нужна консоль. Сами понимаете — оно и тут не очевидно что кабель не очень, а без консоли вообще тоска.
3. Не делайте длинные провода от шлейфа программатора — поймаете помехи.
4. Иногда по какой-то причине принтеры с прошивкой V1. 01.02.00 отказываются прошиваться. Лучше сразу обновите до V1.01.02.01 — запустите ML216x_V1.01.02.01.exe, там по ходу разберетесь.
Кое какие фото не моей платы, а взяты с просторов инета — ибо не получились фото, а принтера уже не было…
Вот вроде и все. Будем надеяться что мой опыт кому-то пригодится.
Архив со всем необходимым тут

usbhub + usbasp + ch441 + j-link = one PCB / Хабр

Все началось с того, что мне в большом количестве понадобилось собрать/отладить устройства на базе AVR. Я взял USBASP, открыл документацию и с радостью обнаружил, что у него есть встроенная поддержка uart.

Как оказалось, потратив пару-тройку дней на поиск разнообразных драйверов, запустить такой мост под windows – задача маловероятная (с пингвинами все дружится практически “из коробки”). Если это не так – пишите в комментариях, но я не нашел ни одного работоспособного подтверждения в сети. В качестве временного решения собрал костыль: USBHUB + USBASP + USB-UART(ch440). Все работает, но как минимум – не эстетично, как максимум – устройства иногда отваливаются (с USB портами у моего старичка lenovo x230 все ок). Если подключать без USBHUBа, то заняты 2 из 3 usb портов + короткие провода (USBASP и USB-UART обычно имеют USB-разъемы сразу на плате).

Решено: изобретаю велосипед с подключением всего окружения на одной плате одним проводом с разъемом type-C.

Вспомнил про ch441 (у него есть конфигурационный вход, позволяющий работать как USB-SPI/I2C мост, а также как USB-UART, в т.ч. с наличием #DTR, но об этом позже).

Начал разработку платы с USBHUBа. Выбор пал на дешевый FE1.1.

На 4pda нашел тему про сh441 и “доработки”, в т.ч. про дополнительную плату с согласователями уровней (для прошивки SPI флешек с 1.8в). Зачем городить бутерброд, если можно поставить согласователи на саму плату.

Добавил согласователи на UART (один переключатель на плате позволяет выбрать питание usbasp и одновременно уровень сигналов uart 5в/3.3в).

Пока неспешно собирал схему, параллельно столкнулся с проблемой китайских j-link адаптеров со слетающими прошивками. Решил добавить еще и программатор для ARM (В первой версии платы поставил обычный st-link на stm32f103, в последней версии j-link на stm32f205).

Три USB порта хаба заняты, четвертый usb вывел на USB-A (питание платы через предохранитель на 1А).

Терпеть не могу суперпозицию USB, с подключением с третьей попытки, потому поставил USB-typeC.

Как раз обзавелся самодельным микроскопом (eken h9 + гелиос 44-2).

Вывел разъем для прошивки adruno-плат без встроенного usb-uart (как раз нога #DTR через конденсатор), просто потому что смог.

Добавил аналоговый мультиплексор 4052, чтобы переключать UART между usbasp/внешним разъемом/stm32f205(для прошивки).

Бонусом – получилась “вещь в себе” – самопрошивающийся программатор. ch441 в режиме SPI может прошить usbasp, а в режиме UART может прошить stm32f205 (для старого бутлоадера 2.0), либо прям по USB (DFU для версии бутлоадера 3.0)

В итоге плата стала 4-слойной с размерами 70 мм х 35 мм.

Надеюсь, кому-нибудь мой опыт пригодится.

Гербера, инструкции по сборке, список элементов, схему, прошивки выложил на

https://4pda.to/forum/index.php?showtopic=884713&st=6720#entry106407720

Зеркало (у кого нет регистрации на 4пда), схема и архив:

Схема
Архив

Моя первая статья на Хабре, кидайте тряпками.

Описание интерфейса J-Link

Перейти к основному содержанию

  • &nbsp Вакансии
  • Видео
  • Блог
  • Устойчивость

J-Link и J-Trace имеют разъем JTAG, совместимый с ARM Multi-ICE. Разъем JTAG представляет собой 20-контактный разъем с прорезью изоляции (IDC) с ключом (штекер 2,54 мм), который соединяется с разъемами IDC, установленными на ленточном кабеле.

В следующей таблице перечислены выводы J-Link/J-Trace JTAG:

* В более поздних продуктах J-Link, таких как J-Link ULTRA+, эти контакты зарезервированы для расширения прошивки. Их можно оставить открытыми или подключить к GND в обычной среде отладки.
Они не являются существенными для JTAG/SWD в целом.

Разъем J-Link и J-Trace JTAG также совместим с отладкой ARM Serial Wire Debug (SWD).

В следующей таблице перечислены выводы J-Link / J-Trace SWD.

* В более поздних продуктах J-Link, таких как J-Link ULTRA+, эти контакты зарезервированы для расширения прошивки. Их можно оставить открытыми или подключить к GND в обычной среде отладки. Они не являются существенными для JTAG/SWD в целом.

Подробную информацию о SWO/SWV см. в следующих документах:

 

Компоненты CoreSight — Техническое справочное руководство

Cortex™-M3 — Техническое справочное руководство

cJTAG.

В следующей таблице перечислены выводы J-Link / J-Trace cJTAG.

Штифт Сигнал Тип Описание
1 VTref Вход Это целевое опорное напряжение.
Он используется для проверки наличия питания у цели, для создания опорного логического уровня для входных компараторов и для управления выходными логическими уровнями цели. Обычно он питается от Vdd целевой платы и не должен иметь последовательного резистора.
2 Vsupply NC Этот контакт не подключен в J-Link. Он зарезервирован для совместимости с другим оборудованием. Подключитесь к Vdd или оставьте открытым в целевой системе.
3 Не используется NC Этот контакт не используется J-Link при работе в режиме cJTAG.
5 Не используется NC Этот контакт не используется J-Link при работе в режиме cJTAG.
7 TMSC Ввод/вывод Двунаправленный контакт данных. Используется для передачи сериализованных данных TDI, TMS и TDO
9 TCKC Выход Тактовый сигнал для целевого ЦП. Рекомендуется, чтобы этот вывод был вытянут до определенного состояния целевой платы. Обычно подключается к TCK целевого процессора.
11 Не используется NC Этот вывод не используется J-Link при работе в режиме cJTAG.
13 Не используется NC Этот контакт не используется J-Link при работе в режиме cJTAG.
15 nСБРОС Ввод/вывод Сигнал сброса целевого ЦП. Обычно подключается к выводу RESET целевого ЦП, который обычно называется «nRST», «nRESET» или «RESET». Этот сигнал является активным низким сигналом.
17 Не используется НЗ Этот контакт не подключен в J-Link.
19 Питание 5 В Выход Этот контакт может использоваться для питания некоторых плат eval.

Контакты 4, 6, 8, 10, 12, 14, 16, 18, 20 — это контакты GND, подключенные к GND в J-Link. Они также должны быть подключены к GND в целевой системе.

* В более поздних продуктах J-Link, таких как J-Link ULTRA+, эти контакты зарезервированы для расширения прошивки. Их можно оставить открытыми или подключить к GND в обычной среде отладки. Они не являются существенными для cJTAG в целом.

Программатор-отладчик Segger J-Link EDU mini

Программатор-отладчик Segger J-Link EDU mini

Я очень доволен программатором-отладчиком Segger J-Link и выпуском Segger J-Link EDU mini 9.0168 менее чем за 20 долларов США, я попробовал.

Этот программатор-отладчик предназначен исключительно для образовательных и некоммерческих целей.

Оборудование

Программатор подключается непосредственно к USB-порту компьютера и имеет стандартный разъем 2 x 5 0,05″.

Контакт 1 очень четко указан на шелкографии.


Удивительно, но Segger предлагает 20-контактный плоский кабель вместо ожидаемого 5-жильного. Поэтому мне пришлось купить 10-контактный кабель 2×5 Socket-Socket 1,27 мм IDC (SWD) длиной 150 мм от Adafruit.

Я успешно протестировал Segger J-Link mini на Arduino Due, Adafruit Feather M0, Adafruit Feather nRF52, LaunchPad MSP432, Arduino Primo Core.

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

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

Подключение к платам

Я протестировал Segger J-Link со следующими платами:

  • Adafruit Feather M0
  • Adafruit Feather NRF52
  • Arduino Due
  • Arduino Primo Core
  • Launchpad MSP432

Действительно приятно иметь одинаковые инструменты для всех досок!

Программное обеспечение

Одни и те же инструменты работают нормально, включая базовые J-Link T ools Suite и более сложные приложения Ozone , графический отладчик.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *