Сергей Борщ 0 Posted May 28, 2021 · Report post Я не знаю, как внутри работает SWD. Но знаю, что openocd позволяет через SWD читать/писать любые регистры. В том числе и регистры, ответственные за запись в option bytes. Процедура записи option bytes из программы через эти регистры описана в руководстве пользователя, раздел 3.2.2 Flash memory program and erase operations, подраздел Option byte programming. Если вы умеете через SWD писать/стирать флеш - предполагаю, что вы делаете это именно через эти регистры. Что мешает прочесть еще ровно одну страницу руководства пользователя и реализовать чтение/запись option bytes через дерганье этих регистров посредством SWD в соответствии с описанной в руководстве пользователя процедурой? Или я не понял вопроса? Или вы тут уже третью страницу глумитесь над человеком за то, что он не смог сам найти это описание процедуры записи/стирания? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Harbinger 0 Posted May 29, 2021 · Report post 27.05.2021 в 18:46, Ioann_II сказал: Стал пробовать сделать своё, на базе проекта с гитхаба. Ссылку на проект можно? Там немало есть подобного, но всё, что перепробовал - недоделанное. 27.05.2021 в 20:05, jcxz сказал: Зачем лепить свой лисапед, если существует готовое решение от Segger (J-Link)? Необходимость хоста + м.б. лицензионные соображения (не всякий J-Link можно использовать для mass production). Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted May 29, 2021 · Report post 1 час назад, Harbinger сказал: Необходимость хоста + м.б. лицензионные соображения (не всякий J-Link можно использовать для mass production). Какого "хоста"? О чём вы? И что значит "нельзя использовать для mass production" если эта функция там есть? Для чего тогда там эта функция предусмотрена производителем? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ioann_II 0 Posted May 29, 2021 · Report post 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 - пока не докопал. Может, не внимательно смотрел. Через регистры собирался попробовать. Кстати, какой документ вы показали на картинке? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Harbinger 0 Posted May 29, 2021 · Report post 7 часов назад, Ioann_II сказал: https://github.com/XIVN1987/DAPProg Рассматривал. В итоге отказался. Сделал некий гибрид из freedap (автор - участник этого форума) и нувотоновского mass storage бутлоадера. Но тут задача автономии не стояла. 7 часов назад, jcxz сказал: Какого "хоста"? О чём вы? И что значит "нельзя использовать для mass production" если эта функция там есть? Компьютера. В качестве которого и смартфон может выступать. Функция-то есть, но недёшево стоит. Может, это странно звучит - но таки столкнулся с необходимостью полной лицензионной чистоты всего и вся. И если разработка успешно ведётся в бесплатной среде, то тратить $500 дополнительно на каждое рабочее место регулировщика (J-Link Base Compact) как-то не очень. При том, что и там лицензия кастрированная - полноценный J-Flash признавать не хочет, только Lite. Стоп... имеются в виду Flasher? Но они тоже как бы не копеечные. Ну и скорость работы - немаловажная штука. Сейчас сотворённый мной девайс прошивает 128 кБ в целевом МК примерно за 12 секунд. Это возмутительно долго для серийного производства, придётся таки задействовать flash loader в RAM. (4 Ioann_II). А силабсовскую AN1011 не рассматривали? Там, правда, сделано через одно место. Вместо того, чтобы прикинуться "флешкой" для загрузки образа прошивки, оно наоборот, выступает хостом и хочет внешнего накопителя. Но вроде это несложно пофиксить. Как вариант - можно плясать от DAPlink, сделать автономным его тоже можно. Но структура проекта, с точки зрения меня, дилетанта - удручает. Дня два разбирался, что там к чему. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Сергей Борщ 0 Posted May 29, 2021 · Report post 9 часов назад, Ioann_II сказал: Тут не openocd... А какая разница? На втором конце шнурка все равно SWD. Если это может делать один инструмент - то же самое (теоретически) должен мочь и второй. 9 часов назад, Ioann_II сказал: Кстати, какой документ вы показали на картинке? Наверняка есть и более свежий. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
jcxz 4 Posted May 30, 2021 · Report post 19 часов назад, Harbinger сказал: Компьютера. В качестве которого и смартфон может выступать. Прочитайте название темы: "Автономный программатор". "Автономный" - это значит умеющий работать без компа/etc. По ссылкам, которые я приводил, есть документация (даже на русском). Прочитайте в ней раздел про "автономное программирование", как оно производится. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ioann_II 0 Posted May 30, 2021 · Report post Да, jcxz, по Вашим ссылкам программатор, судя по описанию, умеет прошивать наш МК. Жаль, что мы пошли не по тому пути (не тот программатор попробовали), но поиск выдал OffProg-1. Может быть, попробуем теперь тот, что вы указали. Но на данном этапе начал пробовать сделать сам, и думаю довести до конечного результата. Ну, во всяком случае, должен сделать попытку. Что на данном этапе и делаю. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Harbinger 0 Posted May 30, 2021 · Report post 7 часов назад, jcxz сказал: По ссылкам, которые я приводил, есть документация (даже на русском). Да понял, что речь о Flasher, дописал в предыдущем сообщении, а по одной из ссылок - недорогой клон его. Который автору темы м.б. подойдёт, а мне нет, по лицензионным соображениям. :( Чисто в техническом плане к JetLink нет претензий, на позапрошлой работе только их и использовали, там не столь строгий подход был. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
doc.a13x 0 Posted October 7, 2021 · Report post 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. Может есть идеи куда копать? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...