Jump to content

    
stas00n

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

Recommended Posts

Я не знаю, как внутри работает 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

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

Share this post


Link to post
Share on other sites
27.05.2021 в 18:46, Ioann_II сказал:

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

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

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

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

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

Share this post


Link to post
Share on other sites
1 час назад, Harbinger сказал:

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

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

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

Share this post


Link to post
Share on other sites
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 - пока не докопал. Может, не внимательно смотрел. Через регистры собирался попробовать. Кстати, какой документ вы показали на картинке?

Share this post


Link to post
Share on other sites
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, сделать автономным его тоже можно. Но структура проекта, с точки зрения меня, дилетанта - удручает. Дня два разбирался, что там к чему.

Share this post


Link to post
Share on other sites
9 часов назад, Ioann_II сказал:

Тут не openocd...

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

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

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

image.png.681174559514c0d8c8bdb3f1ab4bcaad.png

image.png.91ddfc3987726e860f50b122adee17f5.png

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

Share this post


Link to post
Share on other sites
19 часов назад, Harbinger сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
7 часов назад, jcxz сказал:

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

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

Share this post


Link to post
Share on other sites
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. 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.