Страничка эмбеддера; Самодельный отладчик для ARM (j-link v5)

Программаторы, ISP, фьюзы, локбиты AlexGyver Technologies

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

Загрузка прошивки

В этом уроке мы рассмотрим загрузку прошивки в ардуино через внешние “программаторы”. Давайте вспомним, о чем уже говорили в одном из первых уроков: загрузка прошивки в Arduino возможна двумя способами:

  • “Напрямую” во flash память микроконтроллера при помощи ISP (In System Programming) внутрисистемного программатора.
  • При помощи загрузчика (bootloader), который живёт в начале flash памяти МК, принимает программный код по протоколу TTL (UART) и записывает его во flash память.

Загрузчик (bootloader)

Загрузчик живёт в самом начале Flash памяти МК и позволяет записывать прошивку, отправляемую через UART. Загрузчик стартует при подаче питания на МК, ждёт некоторое время (вдруг кто-то начнёт слать код прошивки по UART), затем передаёт управление основной программе. И так происходит каждый каждый раз при старте МК.

  • Загрузчик позволяет прошивать МК через UART;
  • Загрузчик замедляет запуск МК, т.к. при каждом запуске ждёт некоторое время для потенциальной загрузки прошивки;
  • Загрузчик занимает место во Flash памяти. Стандартный старый для Arduino NANO занимает около 2 кБ, что весьма существенно!

USB-TTL (UART)

Этот способ реализован прямо на платах Arduino при помощи USB-TTL (USB-UART) преобразователя, именно поэтому мы можем подключить плату к компьютеру и загрузить код. USB-TTL позволяет только загрузку данных во flash, остальные возможности (как у ISP программатора) ему недоступны. В то же время он ограничен только возможностями загрузчика, но в этом уроке мы рассматриваем только стандартные. Также USB-TTL мост позволяет микроконтроллеру общаться с компьютером по последовательному соединению (тот самый Serial и монитор com порта).

Есть платы без бортового USB-TTL, например Arduino Pro Mini. Для работы с ними нужно купить внешний USB-TTL преобразователь. Также загрузка прошивки через UART возможна и в “голый” микроконтроллер при условии наличия там загрузчика, который запишет принятый код во flash. Про запись загрузчика мы поговорим ниже.

UART “загружатор” подключается к пинам RX и TX Ардуино (или микроконтроллера), RX->TX и TX->RX, также обязательно подключается земля GND. Если у прошиваемой платы нет своего питания, то подключается и питание. Загрузчик отрабатывает при запуске МК, поэтому непосредственно перед загрузкой прошивки МК должен быть сброшен (перезагружен), и для этого на платах USB-UART есть вывод DTR (Data Terminal Ready), который подключается к пину RST Reset и собственно выполняет сброс перед перед загрузкой прошивки. На платах Pro Mini есть отдельный пин DTR.

USB-TTL Arduino
DTR DTR
RX TX
TX RX
GND GND
VCC/5V/3.3V VCC

Китайцы выпускают USB-TTL модули в широком ассортименте, но в целом они все одинаковые по своей сути. Ссылка на результат поиска на aliexpress, и ссылка на все USB-TTL в моём любимом магазине WAVGAT. Что использую я? В основном платку на CP2102. Перед заказом модуля обязательно убедитесь в том, что у него есть выход DTR, иначе этот модуль можно будет использовать только для “общения” с контроллером через COM порт.

Для работы с таким преобразователем нужно установить драйвер для чипа, на базе которого собран модуль, это может быть CP2102, CH340/341, FT232, PL2303 и другие. Прошивка загружается как обычно: выбираем порт, на котором сидит преобразователь, версию загрузчика и жмём загрузить, всё! Важный момент: на некоторых китайских версиях плат Arduino Pro Mini не распаян пин DTR, т.е. он не идёт на RST и автоматический сброс перед загрузкой прошивки не выполняется. В этом случае сброс нужно производить вручную, кнопкой RST, непосредственно перед загрузкой прошивки…

Загрузка прошивки посредством загрузчика (bootloader) возможна с любого UART устройства, даже через Bluetooth. Но об этом мы поговорим в отдельном уроке.

Фьюзы (Pro)

Фьюзы (фьюз-биты) являются низкоуровневыми настройками микроконтроллера, которые хранятся в специальном месте в памяти и могут быть изменены только при помощи ISP программатора. Это такие настройки как выбор источника тактирования, размер области памяти под загрузчик, настройка отсечки по напряжению и прочее. Фьюз-биты собраны по 8 штук в байты (т.н. байты конфигурации), как типичный регистр микроконтроллера AVR. Таких байтов может быть несколько, они называются low fuses, high fuses, extended fuses. Для конфигурации байтов рекомендуется использовать калькулятор фьюзов (например, вот такой), в котором просто ставятся галочки на нужных битах, и на выходе получается готовый байт в hex виде. Рассмотрим на примере ATmega328p:

Важный момент: в AVR биты у нас инверсные, то есть 1 это выкл, 0 это вкл. Расставляя галочки в калькуляторе, мы формируем байт, галочка стоит – бит включен, но в результирующем байте включенные биты являются нулями. Об этом стоит задумываться при ручном составлении фьюз-байта, при использовании калькулятора можете об этом даже не вспоминать.

Что позволяют настроить биты?

  • CKSEL0CKSEL3 – выбор источника и частоты тактирования (уточняй в даташите на свой МК, какая конфигурация за что отвечает)
  • SUT0SUT1 – задержка старта МК после перезагрузки
  • CKOUT – дублирование тактирования на один из пинов (см. в даташите на какой)
  • CKDIV8 – делит тактовую частоту на 8
  • BOOTRST – если включен, МК запускается с загрузчика
  • BOOTSZ0BOOTSZ1 – задаёт размер сектора загрузчика
  • EESAVE – защита EEPROM от стирания во время выполнения полной очистки чипа
  • WDTON – если включить, то Watchdog будет принудительно включен без возможности отключения
  • SPIEN – опасный бит , при его отключении пропадает возможность прошивки через ISP, и возможность выключить этот бит в том числе*
  • DWEN – вкл/выкл отладочный интерфейс DebugWire. На других моделях бывает и JTAG, и его бит – JTAGEN
  • RSTDISBL – опасный бит , при его включении можно использовать ногу RST как обычный цифровой пин, но пропадает возможность прошивки через ISP и выключить этот бит как следствие*
  • BODLEVEL0BODLEVEL3 – настройка контроля напряжения (МК сбросится при падении ниже установленного напряжения)

* – прошивка возможна при помощи высоковольтного программатора

Лок-биты (Pro)

Лок-биты (lock-bits) позволяют управлять доступом к памяти микроконтроллера, что обычно используется для защиты устройства от копирования. Лок-биты собраны опять же в конфигурационный лок-байт, который содержит: BOOTLOCK01, BOOTLOCK02, BOOTLOCK11, BOOTLOCK12, LOCKBIT1, LOCKBIT2 (для ATmega328). Калькулятор лок-битов можно использовать этот.

BOOTLOCK биты позволяют запретить самому МК запись (самопрограммирование) во flash память (область программы и область загрузчика)А вот локбиты LOCKBIT позволяют запретить запись и чтение flash и EEPROM памяти извне, при помощи программатора, т.е. полностью защитить прошивку от скачивания и копирования:Таким образом включив LOCKBIT1 (лок-байт будет 0x3E) мы запретим внешнюю запись во Flash и EEPROM память, т.е. при помощи ISP программатора, а включив LOCKBIT1 и LOCKBIT2 (лок-байт: 0x3C) полностью заблокируем заодно и чтение данных из памяти микроконтроллера. Повторюсь, всё описанное выше относится к ATmega328p, для других моделей МК читайте в соответствующих даташитах.

ISP программатор

Помимо записи данных во flash память, ISP программатор позволяет считывать её содержимое, полностью очищать, записывать загрузчик, считывать/записывать EEPROM память, а также перенастраивать фьюзы (fuses, fuse-bits) и лок биты. Также ISP программатор ваш единственный друг при работе с “голым” микроконтроллером. Давайте обо всём по порядку.

USBasp

Дешёвые ISP программаторы также есть в ассортименте у китайцев, рекомендую брать USBasp как самый распространенный. Поискать на алиэкспресс, мне нравится версия в корпусе. USBasp имеет не очень удобный выход 10-пин на шлейфе, поэтому рекомендуется купить также переходник 10-пин на 6-пин, который позволяет сразу подключаться к ISP header’у, который есть на большинстве плат Arduino. Внимание! Очень часто встречается брак в виде непропая контактов, поэтому во избежание проблем рекомендуется пропаять переходник и отмыть флюс (зубная щётка + бензин калоша).Быстрый старт:

  • Подключить usbasp к компьютеру
  • Скачать и установить драйвера на usbasp (скачать с моего сайта, скачать с Яндекс диска, ещё есть тут и тут)
  • Открыть диспетчер устройств и убедиться, что программатор определился системой
  • Открыть Arduino IDE
  • Выбрать usbasp в Инструменты > Программатор
Читайте также:  Как правильно проверить уровень масла в МКПП

Решение проблем

Решение большинства проблем с загрузкой через программатор (независимо от того, что написано в логе ошибки):

  • Вытащить и обратно вставить usbasp в usb порт
  • Вставить в другой usb порт
  • Переустановить драйвер на usbasp
  • Проверить качество соединения USBasp с МК
  • Перепаять переходник и отмыть флюс

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

  • USBasp: на плате есть перемычка JP3, которая включает режим низкой скорости загрузки. В новых версиях прошивки для USBasp скорость выбирается автоматически, но китайцы продают старую версию. Как прошить новую – ищите в интернете.

Arduino as ISP

Почти любая другая плата Arduino может стать ISP программатором, для этого нужно просто загрузить в неё скетч ArduinoISP:

  • Открыть скетч Файл > Примеры > 11. ArduinoISP > ArduinoISP
  • Всё! Ваша Arduino теперь стала ISP программатором
  • Подключаем к ней другую Arduino или голый чип по схеме ниже
  • Выбираем Arduino as ISP в Инструменты > Программатор
  • И можем писать загрузчики, фьюзы или загружать прошивку напрямую во Flash

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

10 мкФ на пин RST.

Решение проблем

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

  • Arduino ISP: нужно изменить частоту загрузки прошивки в скетче Arduino ISP и снова прошить его в ардуино-программатор (см. строку в скетче 45 и ниже);

Arduino IDE и программаторы

Загрузчик

Из Arduino IDE при помощи ISP программатора мы можем записать другой загрузчик (по факту загрузчик + фьюзы) и загрузить скетч, а также настроить/прошить фьюзы и лок-биты, но не очень удобным способом. Когда мы выбираем плату в Инструменты > Плата и загрузчик в Инструменты > Плата (загрузчик, bootloader), Arduino IDE автоматически делает “активным” нужный загрузчик. Нажимая Инструменты > Записать загрузчик мы прошиваем загрузчик, соответствующий выбранной плате и её настройкам. Также одновременно с загрузчиком прошиваются фьюзы и лок-биты, соответствующие выбранной плате в Arduino IDE. Как и где их поменять, смотрите чуть ниже.

Рассмотрим на примере записи загрузчика для atmega328, стоящей на китайской плате Arduino NANO. На данный момент китайцы прошивают в МК старую версию загрузчика, которая называется old bootloader в меню платы. Оригинальные платы идут с более современным загрузчиком, поэтому при работе с китайскими платами нам приходится выбирать old bootloader для загрузки прошивки через бортовой usb порт. Подключим usbasp по схеме выше, выберем его как программатор в Инструменты > Программатор, выберем плату Arduino NANO, загрузчик для atmega328 (первый в списке). Нажмём записать загрузчик. Всё! Теперь плату можно шить через бортовой usb порт, выбирая первый загрузчик. Он кстати легче, быстрее “прошивает” и сама прошивка быстрее “запускается”.

Убираем загрузчик

В стандартном “ядре” Arduino не предусмотрен вариант “без загрузчика”. Для того, чтобы вручную убрать поддержку загрузчика, нужно уметь работать с boards.txt и фьюзами: нужно будет изменить фьюз BOOTRST и подправить максимальный размер скетча. Есть более простой вариант – найти и установить ядро, в котором реализован выбор загрузчика с вариантом “без загрузчика”, например для ATmega328 это miniCore и наше GyverCore.

Загрузка скетча

Через Arduino IDE можно зашить скетч через программатор, для этого надо нажать Скетч > Загрузить через программатор. Это очень удобно в том случае, когда МК используется без загрузчика.

Фьюзы

Конфигуратор платы в Arduino IDE устроен следующим образом: каждой плате в Инструменты > Плата соответствует свой набор настроек, включая фьюзы, которые прошиваются вместе с загрузчиком . Некоторые из них:

  • Загрузчик (путь к файлу)
  • Скорость загрузки (через загрузчик)
  • Объем доступной flash и sram памяти
  • Весь набор фьюзов и лок-биты

Файл конфигурации называется boards.txt и найти его можно в папке с ядром Arduino: C:Program Files (x86)Arduinohardwarearduinoavroards.txt. Документацию на boards.txt можно почитать здесь. При желании можно вывести нужные фьюзы через калькулятор (читайте выше), изменить их в boards.txt (главное не запутаться, для какой выбранной конфигурации платы делается изменение) и прошить в МК, нажав Инструменты > Записать загрузчик.

  • Фьюзы подписаны как low/high/extended fuses, можно вставлять полученное в калькуляторе значение.
  • Локбиты работают следующим образом: unlock_bits это локбиты, которые прошьются до записи загрузчика (при нажатии на кнопку Записать загрузчик). А вот после прошивки загрузчика будут автоматически прошиты lock_bits, которые и определят доступ к памяти контроллера во время его работы. Чтобы защитить прошивку от чтения – ставим lock_bits 0x3C.

Такая работа с фьюзами максимально неудобна, но есть и другие варианты:

  • Ядро GyverCore для atmega328, в нем мы сделали кучу готовых настроек фьюзов прямо в настройках платы, читайте в уроке про GyverCore. Несколько загрузчиков, включая вариант без загрузчика, выбор источника тактирования и другие настройки в один клик мышкой.
  • Программа AVRdudeprog, про нее поговорим ниже

Avrdudeprog

Avrdudeprog – утилита от русского программиста, являющаяся удобной оболочкой для avrdudue. Скачать AVRDUDE_PROG можно с официального сайта (прямая ссылка на загрузку, на всякий случай зеркало на моём ЯД и FTP этого сайта). В рамках этого урока, программа умеет следующее:

  • Чтение/запись/очистка flash памяти
  • Чтение/запись/очистка eeprom памяти
  • Полная очистка чипа
  • Калькулятор фьюзов и локбитов (чтение/запись)

Более подробный обзор на avrdudeprog можно посмотреть здесь . Давайте посмотрим на калькулятор фьюзов. Выбираем свой микроконтроллер и программатор (можно добавить другие модели микроконтроллеров и программаторов, читай тут). Переходим во вкладку Fuses, нажимаем прочитать. При успешном чтении увидим текущий набор настроек своего чипа. Можно их поменять и загрузить. Важно! Галку инверсные биты не трогаем! Лок-биты и отключение RST заблокирует микроконтроллер, не трогайте их, если такой цели нет! Можно загружать прошивку или загрузчик из .hex файла, указав путь к ней на первой вкладке в окне Flash. Очень удобная утилита для низкоуровневой работы с МК.

Jtag программатор своими руками

Для многих любителей, самое болючее в переходе на новую процессорную архитектуру –необходимость заиметь железяки для заливки кода в камень и для отладки его там. Ну признайтесь, вы хотели проиграться с АРМами, но мысля – а как-же это чудо запрограммировать останавливала вас в этой светлой затее и дальше дело не шло!

В этой статье предлагаю вам сконструировать клон отладчика j-link v5 фирмы Keil. Клон называется mt-link.

Параметры

J-link – классический отладчик для АРМов. Это настоящий быстрый отладчик, а не поделка типа Wiggler’a. Максимальная скорость шины – 12МГц. Мне, к примеру, при скорости 1МГц работать вполне комфортно. AvrDragon на той-же частоте и рядом не валялся, тормозюка.

Читайте также:  Nissan x trail t31 регламент то

Более подробно о характеристиках отладчиков можно почитать в талмудах типа https://ftp.iar.se/WWWfiles/jlink/J-Link_J-TraceARM-2.pdf.

Я приведу самое важное из него – стандартную распиновку JTAG’a (вид на разъем отладчика):

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

Manufacturing and selling these clones is an illegal act
for various reasons, amongst them trademark, copyright and unfair business practise issues.

Я — же лично собрал клон исключительно в некоммерческих исследовательских и образовательных целях.

Изготовление

Тут все как всегда – делаем платку, паяем детали. Платка довольно сложная, рассчитанная на заводское производство, но выкрутиться можно. Я-же выкрутился )

Берем схему тут:

Она-же, только в p-cad.

Ну и плата в p-cad’е:

И, на всякий случай, прошивка:

Для того, чтобы посмотреть P-CAD файлы, вы можете сказать P-CAD Viewer – он бесплатен и найти его в интернете – не проблема.

Делаем платку. Очень повезло, что в P-CAD Viewer’е вполне адекватная печаталка и плату для фоторезиста распечатать таки можно.

Как видно, главная деталька – at91sam7s64, на лицо типичная проблема курицы и яйца. И она, к счастью, тут решена!

Контроллеры at91sam7 имеют USB загрузчик – достаточно только воткнуть USB разъем в компьютер, загрузить с сайта атмела (https://atmel.com, если кто не догадался) пакет at91-isp, установить ее запустить входящую в комплект SAM-PROG.

Теперь – как запустить загрузчик?

Для этого нужно:

Все, контроллер должен обнаружится и будет готов к программированию.

Если вы пользуетесь IAR’ом, то запустите:

C:Program FilesIAR SystemsEmbedded Workbench 5.4arminjlink.exe

Программка обновит прошивку отладчика до текущей версии. В ней так-же можно проверить работу некоторых выводов ( напишите команду “?”, вам все распишут ).

Все, с arm7 должно работать. Если вы предполагаете работать с cortex, то придется еще зайти на

и скачать оттуда “Software and documentation pack V4.11m”. При установке нужно будет разрешить заменить dll’ку иара.

Все, кортекс по JTAG’e теперь тоже поддерживается!

Результаты

Отладчик был использован с LPC1756 (Cortex-M3, если кто не в курсе). Я сравнил его с оригинальным J-LINK от IAR v5.4. Естественно, нет никакой разницы.

Естественно, человеческая мысль не стоит на месте, уже есть схемы и прошивки вплоть до восьмой версии отладчика. Найти их можно тут:

Я не собирал, но если вы таки соберете, прошу поделиться.

Мой порыв сделать MT-link умер после того как обаружилось, что на ARM становится Linux, а прошивать можно через COM/Ethernet.

А вот для AVR’ов жизнь заставляет делать USB программатор:-( Теперь вот думаю какой=)

BSVi Reply:
21 февраля, 2010 at 12:01

Те армы на которые становится линукс — это уже не эмбеддед, это компы ) Да и не так уж часто они и нужны. По поводу программатора для АВР ничего сказать не могу — сам юзаю дракона )

Detruanto Reply:
21 февраля, 2010 at 14:01

Да, компы))) Но таки приятно: сунул флешку — видит; сунул SD-карту — видит; даже USB винт на 500Гб сунул — тоже видит.
Для эмбеддеда они таки подходят, если не ставить линукс, а писать сосмому. Хотя, обычно и меги хватает, ибо серьезно я этим не занимаюсь.

А этот MT-Link 5.0 c кортексами под Keil работать будет через JTAG?

BSVi Reply:
23 февраля, 2010 at 12:18

Да, в кейле должен работать — это клон сеггеровского линка.

Сергей, а вы можете посоветовать какой-нибудь наиболее перспективный ARM процессор для освоения? Хочется чтобы была производительность приличная по сравнению с AVR, и главное наибольшая безглючность. Смотрел на STM32 Cortex-M3, они вроде ничего, но говорят доки кривые и есть глюки в переферии, есть на данный момент AT91SAM7S32 и LPC2134, но ядро SAM7 не очень шустрое. Как вижу, вы выбрали Cortex-M3 от LPC, какие в пользу этого были доводы? Как впечатление от проца?

BSVi Reply:
19 марта, 2010 at 10:55

Вообще, мне жутко не нравится выражение «процессор для освоения». Процессор должен выбираться под конкретную задачу.

У лпцшных кортексов очень развитая переферия, опробованная на lpc2000, эрраты практически пустые, частота очень высокая — 100МГц, ну и для моей конкретной задачи он подошел, поэтому его и использовал.

Начинать осваивать контроллеры я рекомендую с 8-битных авр/пиков — там больше специфических граблей.

Electroniq Reply:
19 марта, 2010 at 11:33

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

Answer Reply:
20 января, 2011 at 0:01

Ну не знаю, я не согласен. Выбирать процессор под конкретную задачу — их слишком много, и все они в чём то, но разные. Не знаю, может я один такой, но ведь тогда придёться каждые пол-года учить новую архитектуру, что затратно по силам и по времени. А потом перейти не так то легко. Нужен софт , отладчики, библиотеки, операционки и много еще чего… Дорого выходит. Интересно конечно так, поковырять чуть чуть. Разве не в этом плюс контроллеров? Один (Ну не один, но и не все сразу) знаешь, круто на нём программируешь ничего лишнего не учишь. Я сейчас:
1) Пишу для соревнований проект под новый для меня PIC
2) Разгребаю по работе в институте проц ATmega 644
3) Начал осваивать STM8/Пытаюсь хотя как то начать STM32

При этом на компе горы всяких MpLab’ов, IAR’ов, AVR Студий и так далее.
Не говоря уже о Eagl, Proteus, Multisim….
Плюс для каждого свой программатор, разные языки программ…

С другой стороны представление обо всём надо иметь, а знать всё нельзя. Ну вот, что думал, то и сказал=))) Аминь! ))

BSVi Reply:
20 января, 2011 at 0:13

Новая архитектура учится ровно за день (чтение доки), и то это далеко не всегда нужно — ведь производитель компилятора сделал это за нас. Если знаешь основные принципы — все архитектуры кажутся похожими. Я лично совершенно не чувствую никакого дискомфорта при переходе с архитектуры на архитектуру.

А можно с помощью этого отладчика скажем залезть в проц к КПК ?
ЗЫ А как с следующими версиями ARMов?

BSVi Reply:
27 августа, 2010 at 18:18

>А можно с помощью этого отладчика скажем залезть в проц к КПК ?
Можно, только среда должна поддерживать этот проц.

>А как с следующими версиями ARMов?
Поддерживает все армы с интерфейсом JTAG, не поддерживает SWD

Доброго времени суток.
Скажите пожалуйста, среда H-JTAG с ним работать будет?
И еще :я так понимаю МК серии LPC2xxx он поддерживает?

BSVi Reply:
31 августа, 2010 at 17:36

>среда H-JTAG с ним работать будет?
Не пробовал, но должна.

>я так понимаю МК серии LPC2xxx он поддерживает?
Безоговорочно и непредотвратимо.

Доброго времени суток.
Еще один вопрос: не пробовали программировать из-под Keil’a?

Читайте также:  Басистый выхлоп - как сделать звук авто лучше своими руками

BSVi Reply:
18 сентября, 2010 at 19:09

Нет, не пробовал.

Доброго времени суток. У меня есть такой отладчик — отличная штука, но недавно наткнулся на форуме электроникса на тему по апгрейду девайса до седьмой версии. Цена вопроса — 2 перемычки и пол часа времени на перепрошивку. Зачем? — чтобы получить SWD. Смысл в том, что кидаются 2 перемычки от проца к разъему JTAG, т.е. в режиме JTAG обмен с таргетом идет через буфер, а в режиме SWD напрямую, буфер вырубается. Попробовал, запаял перемычки, заменил прошивку на 7ю версию и теперь работаю только по SWD, очень удобно — всего 4 провода, да и то один просто для замера питания таргета. Делал в спешке, поэтому не все помню. Подробности можно найти на указанном форуме в теме что-то вроде «Китаеза линк».

BSVi Reply:
10 декабря, 2011 at 20:15

Я в итоге купил китайский клон 8 версии, скоро выложу обзор. Там есть и SWD и SWO.

Blambik Reply:
15 августа, 2013 at 21:15

Посмотрел на ПП и ужаснулся. Спектра видать рулила. ��

Blambik Reply:
15 августа, 2013 at 21:20

Дешевле купить �� затраты не стоят тех денег. всего то 130 грн и будет вам шастя ��

Создать новую ветку комментариев

Вы должны войти или зарегистрироваться чтобы оставить комментарий.

Создаем устройство для соединения JTAG-интерфейса спутникового ресивера

Для сборки устройства нам понадобятся следующие элементы:

1. Резисторы с сопротивлением 100 Ом, 0,125 W – 4 шт.

2. Одна из микросхем серии 74HCT244, 74HC244 либо аналоги К1554АП5 (есть еще и 1554АП4, только у нее один из входов ОЕ «инверсный», а другой «прямой», это обязательно учитывайте при сборке схемы) и К1564АП4.

3. Компьютерный шнур с одним разъемом 25 pin М (со штырьками). Другой конец провода может быть с любым разъемом, это не столь важно, то есть подойдёт абсолютно любой, например модемный, от принтера или SCSI-вый. Длина шнура (кабеля) может быть любая, в примере мы будем использовать шнур длиною около трех метров.

4. Проводок-косичка от COM-порта. Выглядит она следующим образом:

Это девятижильный провод, с одного конца у него черный пластмассовый 10-контактный разъем, с другого – разъем COM-порта. Нам нужен собственно проводок с черным пластмассовым разъемом. Если у вас завалялся старый системник, можно там посмотреть этот проводок.

Схема, которую мы будем создавать , это упрощенная схема Altera ByteBlaster II Download Cable. В этой PDF-ке находится принципиальная полная схема устройства, но её можно и упростить, потому что JTAG-режиме задействуются не все выводы разъема JTAG на плате ресивера. Схема подключается к LPT-порту компьютера. Она готова к работе сразу после того, как вы её соберёте.

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

Так как деталей всего ничего – 5 штук, то собирать устройство мы будем не на плате, а «на весу». Собираем все, глядя на схему . В воздухе у нас останутся неиспользуемые выводы микросхемы, разъема к LPT-порту и косички. Они ни к чему подключаться не будут. Единственное что, для стабильной работы устройства, входы 2A0-2A3 (№11, 13, 15 и 17 на схеме) лучше заземлить, то есть подключить к общему проводу.

Распиновка . Проводки в компьютерном кабеле, как правило, разных цветов. Необходимо подпаять проводки к выводам разъема. Если они там уже есть, нужно записать какой цвет какому выводу соответствует. С 18-ого по 25-ый выводы и 15-ый надо замкнуть друг с другом прямо на разъеме.

Проводок-косичка имеет не номерок, а цветовой маркер (красная/черная полоса на крайнем проводнике). Крайний проводник с маркером – первый. Дальше все проводники считаются по порядку: 2, 3, 4, …, 9.

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

Случается, что на платах нет маркировки первого вывода разъема JTAG. В таком случае пользуются мультиметром. Можно и просто подключать наугад, так как нет никакого риска выхода из строя устройств.

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

Записываем в ресивер загрузчик через интерфейс JTAG

После того, как собрали все устройство, начинается работа с программой EJTAG_TT.

Эта программа является универсальной при работе с несколькими процессорами. Раньше использовались другие программы, например, EJFlasher. Чтобы программа EJTAG TT работала, нужно LPT-порт компьютера поставить в режим ECP, кроме того, потребуется драйвер прямого доступа в NT-системе (Windows NT, 2000, XP, Vista и выше). Это драйвер GiveIO.sys, он идет в комплекте с программой. Если драйвер не установить, то программа не запустится, а на экране появится сообщение об ошибке. Также программа не будет работать, если кабель не подключен, если неправильно произведено подключение к разъему ресивера или же если сам ресивер неисправен.

Действовать надо в следующем порядке:

1. Присоединиться к ресиверу и полностью стереть флешку.

2. Отключить питание ресивера и JTAG (обязательно!).

3. Заново подключить питание.

4. Соединиться с ресивером и записать загрузчик.

Запуск программы выглядит так:

Здесь мы настраиваем определенные параметры настройки: тип процессора – NEC EMMA2, тип флеши, в данном случае, Intel 16 bit. Если у вас другая микросхема, то следует выбрать «AMD 16 bit» (только для ресиверов is, потому что у них только 2 типа схем – Intel и AMD-совместимости). Далее жмем «Коннект». Появляется окно, в котором находится отчет, какая флешка и какой процессор были найдены.

В выпадающем списке «Длина» устанавливаем значение «200000» и нажимаем «Стереть блок(и)». После этого, появится окно, в котором будет показано, какие блоки удалены. Если процедура прошла успешно, действуйте далее. Выключаем электропитание ресивера из розетки, отсоединяем JTAG, ждем несколько секунд и подсоединяем его обратно, включаем ресивер в розетку. Запускаем программу и нажимаем «Коннект». Появляется окно, в котором видно, в строке «Первые 16 байт флеши» одни значения FFFF.

Далее нажимаем «Записать». Появится окно, где нужно выбрать файл загрузчика. Выбираем его, и запись начинается. Продолжительность записи составляет около 30-ти секунд.

Когда процедура записи загрузчика завершится, выключаем ресивер, отсоединяем JTAG от него, подсоединяем его к COM-порту и непосредственно устанавливаем нужную прошивку.

Если ресивер через COM-порт не прошивается по какой-то причине, то можно воспользоваться и JTAGом. Просто открываете файл прошивки, в меню «Address» выбираете «Main Program» и нажимаете на запись. Через JTAG запись производится дольше, чем через COM-порт, так что придется подождать часок-другой.

Комментариев/отзывов к записи: 1

Редко но иногда просто необходимо использовать интерфейс отладки JTAG . В частности здесь рассмотрим вариант восстановление одного из наиболее распространенных спутниковых ресиверов на процессоре Ali 33 globo 41 и его клонов.

Ссылка на основную публикацию
Adblock detector