разбираем старую ЭКЛЗ (залочена от перепрошивки)

Есть старая списанная ЭКЛЗ на LPC2146FBD64 (LQFP64 package).

Общение с ней стандартно через UART микруху MAX3221 (3-V to 5.5-V Single-Channel RS-232 Line Driver/Receiver).

все логично через MAX3221:

пин Rx на P0.0/TXD0/PWM1 19 нога контроллера

пин Tx на 0.1/RXD0/PWM3/EINT0 21 нога контроллера

Микроконтроллеры NXP LPC2xxx имеют встроенный загрузчик, позволяющий прошивать память программ (flash) через последовательный порт (UART)

Теперь как прошиваем:

по логике любой контроллер должен шиться в уже запаянном состоянии (ISP) через какие-то внешние разъемы. Т.к. это просто тупо удобнее при изготовлении - не впаивать же уже прошитый контроллер. Опять же если поменять прошивку надо срочно как быть?

Ну как я понял все контроллеры шьются через UART ,но надо как-то перевести в режим прошивки. Это тупо ножка BOOT. Также для удобства прошивки надо найти ножку RESET.

У LPC2146FBD64 BOOT это P0.14(/EINT1/SDA1) это 41 ножка контроллера!

RESET это 57 ножка контроллера!

Итак BOOT у нас подтягивается через резистор 100К к =5В. Логично, чтобы в режим прошивки не активизировался по умолчанию. Но других выводов (контактов) для подачи 0 на BOOT я не нашел, кроме 1мм круглого пятачка. В принципе к нему можно подпаяться.

На выходе ЭКЛЗ правда имеется доступ к USB ногам контроллера , а также похоже еще I2C 2 контакта.

фотка 1

BOOT - Note: LOW on this pin while RESET(ТУТ ИНВЕРСИЯ) is LOW forces on-chip boot loader to take over control of the part after reset.

Получается надо так :

RESET = 1

BOOT =0

или другими словами

BOOT = 0

подали питание(включили)

ждем ... (можно 1 сек)

отпускаем BOOT (далее он через резистор подтянется к 3.3В)

и все .... контроллер перешел в режим прошивки. Проверим это так :

В программе FlashMagic жмем например Read Device Signature и видим нормальный ответ :

еще вот так в инете пишут:

До включения питания замкнуть выводы P0.14 и Reset на землю. Подать питание, подождать пока оно установится в номинальное значение. Перевести Reset в высокий логический уровень, подождать как минимум несколько миллисекунд и подать высокий уровень на P0.14.

фотка 2

CRP is at level 2 or 3

Read Security выдает :

фотка 3

Вот табличка значений CRP:

фотка 4

Пытаемся стереть Flash ( Erase Flash)

фотка 5

и о чудо - пишет, что стерлась. А на самом деле это не так. Ибо дальнейшие попытки что-то записать туда ничего не дают (Failed to send data to the device ). И старая прошивка живет спокойненько и ничего с ней не делается.

Нарыл в инете , что сообщение CRP is at level 2 or 3 не так уж плохо (контроллер якобы можно еще прошить , т.е. это все-таки level 2 означает).

Изучаем дальше плату в направлении поиска JTag выводов ... И вот они родимые пятачки на плате:

фотка 6

Подпаялся тонкими гибкими проводками с обмоток трансформатора к пятакам.

Открыл Keil проект с LPC2146 и увидел , что возможны такие варианты программаторов использовать:

фотка 7

У меня STLink2 JTAG/SWD только. Поэтому ждем с али J-Link или ULINK2 (оба по 800р.)

Пробовал в LPCXpress0 найти возможность хотя бы прошивки LPC-2146 - ничего не нашел.

Пришел ULINK2 и J-Link.

Но в результате по JTAG и SWD ничего не работает. Похоже контроллер у нас залоченный по CRP3.

Оказывается есть такая фича у NXP - установил CRP3 и дальше работай как есть и ничего с ним уже не сделать.

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

Тут еще нарыл в интернете схему от доброго человека

фотка 8

Файлы для скачивания