При использовании загрузчика (см. « Последовательный загрузчик для Freedom Board с Processor Expert »), я обычно защищаю области флэш-памяти загрузчика, чтобы приложение не было случайно стерто приложением ;-). При программировании моих плат с помощью P & E Multilink, прошивка P & E автоматически разблокирует и удалит микросхему. Это не то же самое, если работать с Segger J-Link, так как требует дополнительных действий.
Сбой программирования с защищенной FLASH
Если я попытаюсь перепрограммировать защищенный загрузчик с помощью Segger J-Link (как в CodeWarrior, так и в Eclipse / KDS с GDB), загрузка завершится неудачно. Эффект в том, что приложение на плате почему-то не соответствует тому, что должно быть. Глядя на консоль, он показывает, что стирание завершилось неудачно (но о реальной ошибке не сообщалось) :-(:
Jlink: Failed to erase sectors 0 @ address 0x00000000 (Algo135: Flash protection violation. Flash is write-protected.)
Интеграция 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.)
Что мне нужно, это снять защиту памяти и затем стереть ее.
стирание
Segger J-Link имеет очень быстрое программирование. Частично эта скорость заключается в том, что прошивка Segger проверяет каждую FLASH-страницу, действительно ли она должна быть запрограммирована, и только затем она стирает и перепрограммирует эту страницу. Таким образом, загрузка дважды одного и того же приложения фактически не затронет флэш-память. Кроме того, он не выполняет полное удаление устройства: он только программирует страницы, которые я использую в своем приложении. Преимущество этого — первая скорость. И это не стирает данные приложения, которые я использую, в энергонезависимой памяти (см. « Данные конфигурации: использование внутренней флэш-памяти вместо внешней EEPROM »). Однако иногда мне действительно нужно очистить все свои данные во FLASH, а затем мне нужно стереть все свои страницы FLASH на устройстве.
У Segger есть продукт под названием «J-Flash», который используется для прошивки и удаления устройств вне среды IDE. Существует бесплатная версия Lite, которую можно скачать с Segger. Эта утилита не предназначена для использования в производстве. С помощью этой утилиты у меня есть графический интерфейс для стирания и программирования моего устройства.
Но 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
❗ Мне нужно сделать операцию стирания сразу после разблокировки. а) установить устройство б) разблокировать и в) стереть, иначе не получится?
Резюме
Чтобы перепрограммировать защищенные секторы FLASH с помощью Segger J-Link, мне нужно сначала разблокировать и массово стереть устройство. Для этого есть утилита J-Link Commander, которая имеет интерфейс командной строки для снятия защиты и удаления устройства. Только для стирания J-Flash (и Lite) является очень полезным инструментом, особенно для получения «чистой» памяти устройства.
Для меня способ и инструменты Segger очень мощные. В этом случае все очень гибко, но не так очевидно. Поэтому я надеюсь, что этот пост поможет другим разблокировать и стереть его устройство.
Счастливого стирания ?