© 2024 DiyTronic

Восстанавливаем убитый китайский JLink в Linux

Получил по почте китайский JLink. Ну и конечно-же захотелось подключить и проверить по крайней мере живое ли оно, особенно учитывая тот факт, что диск в комплекте был разбит вдребезги, а продавец отказался помочь добыть заветный софт. Как нетрудно догадаться из заголовка устройство в результате было убито. Расскажу как же таки его восстановить.

Как убить JLink

Итак первым делом после подключения проверил список USB устройств.

$ lsusb
...
Bus 003 Device 004: ID 1366:0101 SEGGER J-Link PLUS
...

Отлично — как минимум устройство обнаружилось.

Далее отсюда https://www.segger.com/jlink-software.html были установлены утилиты для работы с JLink. Я использую для работы Linux поэтому использована была именно линуксовая версия.

Ну и далее был запущен J-Link Commander

$ JLinkExe
SEGGER J-Link Commander V4.92
Compiled Sep 30 2014 09:34:56
Updating firmware:  J-Link ARM V8 compiled Sep 22 2014 23:26:43
Replacing firmware: J-Link ARM V8 compiled Sep  2 2011 17:54:36
Communication timeout. Emulator did not re-enumerate.
J-Link>

Вот тут-то и кроется засада. В этом месте JLink автоматически находит новую версию прошивки и тянет её с интернета. Далее прошивка обновляется и большой привет — у нас в руках чёрный пластмассовый кирпич.

При повторном подключении JLink его даже не видно среди USB устройств.

Как восстанавить JLink

Начитавшись всякого на профильных форумах для начала решил восстановить все как было. Для этого нашёл в сети прошивку для JLink, вскрыл корпус и выполнил шаманский ритуал для восстановления. Многие пишут, что у них нужные для обряда контакты не выведены, но мне повезло — у меня они были выполнены в виде штырьков, были подписаны и соответственно легко замыкались обычным джампером о старого винчестера. В общем полный список действий:

Стираем flash

  • Отключаем USB
  • Замыкаем контакты ERASE
  • Подключаем USB
  • Ждём 2 секунды
  • Отключаем USB
  • Размыкаем ERASE

Восстанавливаем загрузчик

  • Замыкаем TST
  • Подключаем USB
  • Ждём 10-20 сек
  • Отключаем USB
  • Размыкаем TST
  • Подключаем USB

В системе должен появиться COM порт.

Но это только начало. Теперь надо как-то залить в устройство прошивку. Для этого нужна утилита sam-ba. Запускаем — выбираем появившийся COM-порт. Выбираем файл прошивки. Sam-ba спросить сначала насчет разлочить — согдашаемся, после окончания прошивки она предложит наоборот залочить — не соглашаемся. Перетыкаем USB и видим как зелёная лампочка вновь светится. Ура — JLink снова заработал.

Но не тут-то было — про очередной попытке запустить J-Link Commander снова получаем кирпич. Причём никаких вариантов не дать ему обновиться я не нашёл (убив на это еще несколько циклов восстановления).

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

Помогла перепрошивка вот этой версией http://electronix.ru/forum/index.php? showtopic=59841& st=540#post-main-1284937.

В результате сейчас наблюдаю вто такую картину

$ JLinkExe
SEGGER J-Link Commander V4.84f ('?' for help)
Compiled May  9 2014 20:12:27
DLL version V4.84f, compiled May  9 2014 20:12:24
Firmware: J-Link ARM V8 compiled Jul 17 2014 12:31:18
Hardware: V8.00
S/N: 158005115
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 0.000V
J-Link>

На этом геморрой с подключением JLink считаю законченным.

Для Windows пишут, что можно просто использовать старую версию J-Link Commander (меньше 4.40), но для Linux старых версий нет, поэтому мне этот способ не подошёл.

Ссылки по теме

Комментарии