Перейти к содержанию

    

как загрузить готовую прошивку через монитор J-Link?

Имеется несколько устройств с контроллерами STM32F103,имеется отлаженный hex-файл прошивки, хотел загрузить прошивку в контроллеры через программатор J-Link используя программу-монитор фирмы Segger.

В мониторе видно, что происходит подключение к процессору, отрабатывается команда h (стоп) и ..... кроме точек сказать нечего, потому что дальнейшие команды игнорируются.

Может кто подсказать, какая последовательность команд монитора должна подаваться для прошивки контроллера J-Link-ом ?

Повторюсь, что подключаю контроллер, вижу его, подаю стоп h , а дальше?

Изменено пользователем NikP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Может кто подсказать, какая последовательность команд монитора должна подаваться для прошивки контроллера J-Link-ом ?

Не очень понятно что за монитор Вы имеете в виду?

Готовый hex (или какой другой формат) легко шьётся с помощью JFlash.exe.

Предварительно в нём конечно нужно настроить подключение (SWD/JTAG, частоту, тип сброса, МК и т.п.).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я пробовал работать с программой JLink.exe ( J-Link Commander), про неё собственно и вопрос. С JFlash.exe не пробовал , но если Вы кратко опишете как её настроить и работать (просто последовательность команд) - буду весьма благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Я пробовал работать с программой JLink.exe ( J-Link Commander), про неё собственно и вопрос. С JFlash.exe не пробовал , но если Вы кратко опишете как её настроить и работать (просто последовательность команд) - буду весьма благодарен.

А Вы её запустите хотя-бы. ;)

Там интуитивно-понятный интерфейс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А в описании есть интуитивно понятные буквы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Когда я запустил JFlash.exe и попытался стереть флэш контроллера, то вывалилось сообщение "интуитивно понятными буквами" о том, что у меня нет лицензии и за её приобретением надо обратиться на sales@segger.com. Так что пока хотелось использовать бесплатные варианты.

Поэтому возвращаюсь к началу темы.

При запуске JLink.exe ( J-Link Commander-а) я подключаюсь к контроллеру, читаю флэш с адреса 0х00000000 для того, чтоб убедиться что реально подключился. Флэш читается (вижу реальную прошивку). Далее подаю команду стоп (h) и стирание флэш(erase); программа сообщает, что стирание выполнено, но реально эта команда не выполнена (опять же читаю начало флэш).

В чём причина? Может надо перед командой стирания ещё какие-то действия предпринять?

И большая просьба ко всем - пишите по делу, или не пишите вообще. Я понимаю, что задаю глупые вопросы (а когда разберусь и сам пойму, что тут никаких проблем нет), но пока не разобрался - для меня это актуально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
то вывалилось сообщение "интуитивно понятными буквами" о том, что у меня нет лицензии

Интуитивно как бы понятно, что если нет лицензии на программирование, то и через монитор не дадут программировать.

Можно пробовать IDE типа IAR или Keil и программировать через них.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Можно пробовать IDE типа IAR или Keil и программировать через них.

 

Дело в том, что через IDE всё прекрасно программируется и отлаживается. Но возникла необходимость поменять прошивку в приборах, которые отдали заказчикам. У них есть программатор, и хотелось бы отправить только готовый hex для непосредственной прошивки прибора, а не ехать в другой город и заморачиваться с установкой там Keil-а или тащить с собой ноут с IDE .

 

С JLink.exe вроде всё должно быть просто: подключается, видит процессор, читает содержимое флэш (и лицензию не просит) - а вот стирать ( и соответственно программировать) флэш не хочет. Самое главное, что скорее всего здесь действительно какой-то команды не хватает. Но уж вроде все варианты перепробовали, а результат ноль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
С JLink.exe вроде всё должно быть просто: подключается, видит процессор, читает содержимое флэш (и лицензию не просит) - а вот стирать ( и соответственно программировать) флэш не хочет. Самое главное, что скорее всего здесь действительно какой-то команды не хватает. Но уж вроде все варианты перепробовали, а результат ноль.

Простой команды записи флешь не существует.Тот же Сеггер в доках на J-link указывает, что разные камни имеют разные алгоритмы прошивки (адресация, размер стираемой страницы, тайминги). Поэтому используется "универсальный алгоритм" как в KEIL. Под камень (или серию МК) создается загрузчик, который работает в ОЗУ. Этот загрузчик записывается в МК, затем принимает прошивку (по частям) и записывает во флешь МК. Можно посоветовать такой алгоритм (если не получается штатными средствами)

1.Создать проект, который работает из ОЗУ, берет данные (1-8 кБ) по фиксированному адресу и записывает их во флешь. (данные тоже в ОЗУ располагаются).

2.Разбить прошивку (которая должна быть записана) на "порции" (те же 1-8 кБ)

3.Записать в МК проект из п.1. записать данные (порцию) по фиксированному адресу. Запустить на выполнение прошивку из п.1.

4.Повторить п.3 для каждой порции данных.

5.Считать всю прошивку и сравнить с исходным файлом.

Как то так.

Изменено пользователем редактор

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вроде понятно. То есть "лёгкой" жизни ждать не приходится : надо сделать то же , что сделано в IDE.

Спасибо, попробуем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1.Создать проект, который работает из ОЗУ, берет данные (1-8 кБ) по фиксированному адресу и записывает их во флешь. (данные тоже в ОЗУ располагаются).

...

5.Считать всю прошивку и сравнить с исходным файлом.

Иээх! Нелегка жизнь в командной строке! Живём под JFlash и не знаем всей правды жизни!... :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подключились к контроллеру через JFlash. Но программа выдаёт сообщение "Could not find CFI-compliant flash device". Можно ли подружить JFlash с конкретным контроллером и что для этого нужно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для этого нужно, как ни странно, в свойствах проекта (options -> project settings) выбрать соответствующий контроллер. Вам же внутрь 103-ей STM'ки надо прошивку залить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К сожалению, не в STM103. У нас Миландровский контроллер (у них просто написано, что близкий аналог STM103), ядро Cortex-M1.

В списке контроллеров JFlash для этого ядра выбора практически нет - только одна строчка: Cortex-M1.

Когда работаем с Keil, то в каталог этой среды копируем библиотечный файл Миландра и всё отлично идёт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
К сожалению, не в STM103. У нас Миландровский контроллер (у них просто написано, что близкий аналог STM103), ядро Cortex-M1.

 

У STM32F103 ядро Cortex-M3, а не М1. Техподдержку "Миландр" спрашивали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация