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

STM32 автономный программатор (flasher) - SWD

Я не знаю, как внутри работает SWD. Но знаю, что openocd позволяет через SWD читать/писать любые регистры. В том числе и регистры, ответственные за запись в option bytes. Процедура записи option bytes из программы через эти регистры описана в руководстве пользователя, раздел 3.2.2 Flash memory program and erase operations, подраздел Option byte programming. Если вы умеете через SWD писать/стирать флеш - предполагаю, что вы делаете это именно через эти регистры. Что мешает прочесть еще ровно одну страницу руководства пользователя и реализовать чтение/запись option bytes через дерганье этих регистров посредством SWD в соответствии с описанной в руководстве пользователя процедурой? 

image.thumb.png.c2360cea3a0c925276a9218ba1574694.png

Или я не понял вопроса? Или вы тут уже третью страницу глумитесь над человеком за то, что он не смог сам найти это описание процедуры записи/стирания?

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


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

27.05.2021 в 18:46, Ioann_II сказал:

Стал пробовать сделать своё, на базе проекта с гитхаба.

Ссылку на проект можно? Там немало есть подобного, но всё, что перепробовал - недоделанное.

27.05.2021 в 20:05, jcxz сказал:

Зачем лепить свой лисапед, если существует готовое решение от Segger (J-Link)? 

Необходимость хоста + м.б. лицензионные соображения (не всякий J-Link можно использовать для mass production).

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


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

1 час назад, Harbinger сказал:

Необходимость хоста + м.б. лицензионные соображения (не всякий J-Link можно использовать для mass production).

Какого "хоста"? О чём вы? :wacko2:

И что значит "нельзя использовать для mass production" если эта функция там есть? Для чего тогда там эта функция предусмотрена производителем?

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


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

1 час назад, Harbinger сказал:

Ссылку на проект можно? Там немало есть подобного, но всё, что перепробовал - недоделанное.

Необходимость хоста + м.б. лицензионные соображения (не всякий J-Link можно использовать для mass production).

https://github.com/XIVN1987/DAPProg

Алгоритмы программирования выдёргиваются из Keil, выдёргивалка тут https://github.com/mbedmicro/FlashAlgo

Это тоже сырое. Но запустить удалось. Со сбросом целевого МК пришлось немного повозиться смотрите файл swd_host.c, там функции swd_set_target_state, надо проверять state не только на RUN, но и на RESET_RUN - тогда работает. И странно выглядит функция swd_set_target_reset и её вызовы.

10 часов назад, Сергей Борщ сказал:

Я не знаю, как внутри работает SWD. Но знаю, что openocd позволяет через SWD читать/писать любые регистры...

Тут не openocd... Пока не разобрался ещё, доступны ли эти регистры, хотя собирался попробовать. Как тут пишется во FLASH - пока не докопал. Может, не внимательно смотрел. Через регистры собирался попробовать. Кстати, какой документ вы показали на картинке?

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


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

7 часов назад, Ioann_II сказал:

Рассматривал. В итоге отказался. Сделал некий гибрид из freedap (автор - участник этого форума) и нувотоновского mass storage бутлоадера. Но тут задача автономии не стояла.

7 часов назад, jcxz сказал:

Какого "хоста"? О чём вы? :wacko2:

И что значит "нельзя использовать для mass production" если эта функция там есть?

Компьютера. В качестве которого и смартфон может выступать.

Функция-то есть, но недёшево стоит. Может, это странно звучит - но таки столкнулся с необходимостью полной лицензионной чистоты всего и вся. И если разработка успешно ведётся в бесплатной среде, то тратить $500 дополнительно на каждое рабочее место регулировщика (J-Link Base Compact) как-то не очень. При том, что и там лицензия кастрированная - полноценный J-Flash признавать не хочет, только Lite. 

Стоп... имеются в виду Flasher? Но они тоже как бы не копеечные.

Ну и скорость работы - немаловажная штука. Сейчас сотворённый мной девайс прошивает 128 кБ в целевом МК примерно за 12 секунд. Это возмутительно долго для серийного производства, придётся таки задействовать flash loader в RAM.

(4 Ioann_II). А силабсовскую AN1011 не рассматривали? Там, правда, сделано через одно место. Вместо того, чтобы прикинуться "флешкой" для загрузки образа прошивки, оно наоборот, выступает хостом и хочет внешнего накопителя. Но вроде это несложно пофиксить.

Как вариант - можно плясать от DAPlink, сделать автономным его тоже можно. Но структура проекта, с точки зрения меня, дилетанта - удручает. Дня два разбирался, что там к чему.

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


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

9 часов назад, Ioann_II сказал:

Тут не openocd...

А какая разница? На втором конце шнурка все равно SWD. Если это может делать один инструмент - то же самое (теоретически) должен мочь и второй.

9 часов назад, Ioann_II сказал:

Кстати, какой документ вы показали на картинке?

image.png.681174559514c0d8c8bdb3f1ab4bcaad.png

image.png.91ddfc3987726e860f50b122adee17f5.png

Наверняка есть и более свежий.

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


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

19 часов назад, Harbinger сказал:

Компьютера. В качестве которого и смартфон может выступать.

Прочитайте название темы: "Автономный программатор". "Автономный" - это значит умеющий работать без компа/etc.

По ссылкам, которые я приводил, есть документация (даже на русском). Прочитайте в ней раздел про "автономное программирование", как оно производится.

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


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

Да, jcxz, по Вашим ссылкам программатор, судя по описанию, умеет прошивать наш МК. Жаль, что мы пошли не по тому пути (не тот программатор попробовали), но поиск выдал OffProg-1. Может быть, попробуем теперь тот, что вы указали. Но на данном этапе начал пробовать сделать сам, и думаю довести до конечного результата. Ну, во всяком случае, должен сделать попытку. Что на данном этапе и делаю.

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


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

7 часов назад, jcxz сказал:

По ссылкам, которые я приводил, есть документация (даже на русском).

Да понял, что речь о Flasher, дописал в предыдущем сообщении, а по одной из ссылок - недорогой клон его. Который автору темы м.б. подойдёт, а мне нет, по лицензионным соображениям. :( Чисто в техническом плане к JetLink нет претензий, на позапрошлой работе только их и использовали, там не столь строгий подход был.

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


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

29.05.2021 в 09:25, Ioann_II сказал:

https://github.com/XIVN1987/DAPProg

Добрый день. Воспользовался этой библиотекой, но столкнулся со странной проблемой: я без проблем могу читать\шить  F1 и F4 семейства. А вот с L0  не работает ( были проверены L052C8 и  L073RZ. L4 для проверки нет...).

Ввиду специфики будущего использования, предусмотрен HW сброс. Все алгоритмы вытягивал из Кейла.

 

Сталкивались ли вы с такой странной проблемой? Судя по дебагу, ошибка происходит в самом начале, на моменте инициализации  "target_flash_init()"

...
if (0 == swd_flash_syscall_exec(&flash_algo.sys_call_s, flash_algo.init, flash_start, 0, 0, 0)) {
        return ERROR_INIT;
    }
...

На этом моменте уже вылетает ERROR_INIT. 

Может есть идеи куда копать?

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


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

Озадачился девайсом для автономной прошивки МК STM32. На Али Экспрессе приобрёл девайс показанный на картинке. Как пользоваться не совсем понятно. В Винде определяется как USB-устройство Luele.CMSIS-DAP. 

Keil его тоже видит как Luele.CMSIS-DAP. При попытке что то загрузить в чип в Keil ничего не происходит. Пишет что не обнаруживает SWD-девайса. Как использовать эту штуку в качестве офф-лайн загрузчика тоже не понятно.

Может кто пользовал такой девайс. Расскажите что к чему...

stm32_off_loader.jpg

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


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

5 часов назад, EugeNNe сказал:

Как использовать эту штуку в качестве офф-лайн загрузчика тоже не понятно.

А откуда такая уверенность, что оно это может? Китаезы нарисовать на коробочке могут что угодно, как на заборе)))  Вскройте его, может там обычный МК без доп памяти стоит и работает, как простой USB-JTAG...

Типа такого - https://aliexpress.ru/item/1005001376821868.html?sku_id=12000016385698710

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

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


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

42 минуты назад, mantech сказал:

А откуда такая уверенность, что оно это может? Китаезы нарисовать на коробочке могут что угодно, как на заборе)))  Вскройте его, может там обычный МК без доп памяти стоит и работает, как простой USB-JTAG...

Типа такого - https://aliexpress.ru/item/1005001376821868.html?sku_id=12000016385698710

 

Вроде как в описании обещают... https://aliexpress.ru/item/1005004442741480.html?sku_id=12000029195377928). Но вот выясняется что ПО надо под эту штуку, которое непросто раздобыть оказывается.

А тот на который Вы ссылку привели, у меня имеется в инструментах. Вполне себе работает.

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

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


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

9 минут назад, EugeNNe сказал:

Но вот выясняется что ПО надо под эту штуку, которое непросто раздобыть оказывается.

Вот интересно, т.е. чтобы работать автономно, ему нужен комп с ПО?)) И что за "автономность" получается?  Автономный в моем понимании, подключил к компу, залил прошивку или неск. прошивок, отключил, принес к устройству, запитался от него или батарейки встроенной, нажал кнопочку "прошить", там что-то замигало, потом загорелось зеленое - ок или красное ошибка, вот это автономность.

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


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

8 часов назад, EugeNNe сказал:

Озадачился девайсом для автономной прошивки МК STM32.

https://jet-link.ru/

Или как то так http://zdevs.ru/ru/zf-stm/user_guide.html

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...