Статьи

Разблокировка и стирание FLASH с Segger J-Link

При использовании загрузчика (см. « Последовательный загрузчик для Freedom Board с Processor Expert »), я обычно защищаю области флэш-памяти загрузчика, чтобы приложение не было случайно стерто приложением ;-). При программировании моих плат с помощью P & E Multilink, прошивка P & E автоматически разблокирует и удалит микросхему. Это не то же самое, если работать с Segger J-Link, так как требует дополнительных действий.

Защищенные FLASH-страницы с помощью Processor Expert

Защищенные FLASH-страницы с помощью Processor Expert

Сбой программирования с защищенной FLASH

Если я попытаюсь перепрограммировать защищенный загрузчик с помощью Segger J-Link (как в CodeWarrior, так и в Eclipse / KDS с GDB), загрузка завершится неудачно. Эффект в том, что приложение на плате почему-то не соответствует тому, что должно быть. Глядя на консоль, он показывает, что стирание завершилось неудачно (но о реальной ошибке не сообщалось) :-(:

Jlink: Failed to erase sectors 0 @ address 0x00000000 (Algo135: Flash protection violation. Flash is write-protected.)
J-Link не удалось стереть в CodeWarrior

J-Link не удалось стереть в CodeWarrior

Интеграция GNU ARM Eclipse Segger с GDB (например, Kinetis Design Studio) не лучше: без знака ошибки, единственная вещь — это скрытая ОШИБКА в журнале консоли JLinkGDBServerCL:

ERROR: Failed to erase sectors 0 @ address 0x00000000 (Algo135: Flash protection violation. Flash is write-protected.)
ОШИБКА Algo135 Flash Protection Нарушение в связи с неудачным программированием FLASH

ОШИБКА Algo135 Flash Protection Нарушение в связи с неудачным программированием FLASH

Что мне нужно, это снять защиту памяти и затем стереть ее.

стирание

Segger J-Link имеет очень быстрое программирование. Частично эта скорость заключается в том, что прошивка Segger проверяет каждую FLASH-страницу, действительно ли она должна быть запрограммирована, и только затем она стирает и перепрограммирует эту страницу. Таким образом, загрузка дважды одного и того же приложения фактически не затронет флэш-память. Кроме того, он не выполняет полное удаление устройства: он только программирует страницы, которые я использую в своем приложении. Преимущество этого — первая скорость. И это не стирает данные приложения, которые я использую, в энергонезависимой памяти (см. « Данные конфигурации: использование внутренней флэш-памяти вместо внешней EEPROM »). Однако иногда мне действительно нужно очистить все свои данные во FLASH, а затем мне нужно стереть все свои страницы FLASH на устройстве.

У Segger есть продукт под названием «J-Flash», который используется для прошивки и удаления устройств вне среды IDE. Существует бесплатная версия Lite, которую можно скачать с Segger. Эта утилита не предназначена для использования в производстве. С помощью этой утилиты у меня есть графический интерфейс для стирания и программирования моего устройства.

J-Flash Lite

J-Flash Lite

Но J-Flash Lite не может разблокировать мои заблокированные страницы Flash :-(.

Если мое устройство не заблокировано, я могу использовать CodeWarrior «Flash file to target» (см. « Мигание с помощью кнопки (и волшебной палочки) »), чтобы стереть устройство:

Стирание устройства с флэш-файла на цель

Стирание устройства с флэш-файла на цель

Опять же, это не работает, если устройство заблокировано. CodeWarrior имеет еще одну функцию под названием «Целевая задача», которую можно использовать для стирания / незащищенности (если ваше устройство поддерживается), см. « Устройство защищено? «.

Поэтому мне нужно использовать другой инструмент для разблокировки и снятия защиты с моего устройства: J-Link Commander .

Разблокировка и стирание с помощью J-Link Commander

Для разблокировки устройства в Segger есть утилита под названием «J-Link Commander», доступная по адресу http://www.segger.com/jlink-software.html . В Windows это двоичный файл «jlink.exe», который представляет собой утилиту командной строки. Для разблокировки устройства используйте

unlock Kinetis
Разблокировка устройства

Разблокировка устройства

Но, похоже, мне нужно сделать разблокировку, а затем стереть, чтобы сделать ее постоянной. Чтобы стереть устройство, я могу использовать ту же утилиту командной строки. Но мне нужно сначала указать имя устройства, а затем я могу стереть его (пример для KL25Z):

device mkl25z128xxx4
unlock kinetis
erase

❗ Мне нужно сделать операцию стирания сразу после разблокировки. а) установить устройство б) разблокировать и в) стереть, иначе не получится?

Разблокировка и стирание с помощью J-Link Commander

Разблокировка и стирание с помощью J-Link Commander

Резюме

Чтобы перепрограммировать защищенные секторы FLASH с помощью Segger J-Link, мне нужно сначала разблокировать и массово стереть устройство. Для этого есть утилита J-Link Commander, которая имеет интерфейс командной строки для снятия защиты и удаления устройства. Только для стирания J-Flash (и Lite) является очень полезным инструментом, особенно для получения «чистой» памяти устройства.

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

Счастливого стирания 🙂