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

Прошивка CORTEX M4 без программатора через SWD

Здравствуйте.

Вопрос, как можно прошить  STM32F без STLink через SWD.

Может есть какие то готовые решения на Python ?

Задача простая - прошить одним контроллером c Linux другой

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


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

38 minutes ago, MKdemiurg said:

Здравствуйте.

Вопрос, как можно прошить  STM32F без STLink через SWD.

Может есть какие то готовые решения на Python ?

Задача простая - прошить одним контроллером c Linux другой

Ответ

https://support.google.com/websearch/answer/134479?hl=ru
https://www.pcbway.com/blog/technology/OpenOCD_on_Raspberry_Pi__Better_with_SWD_on_SPI.html
https://codensolder.com/blog/rip-swd-programmer

 

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


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

Во-первых, микроконтроллер можно прошить через UART, переведяе го в режим запуска системного загрузчика (ножка Boot0). Во-вторых, можно раскопать на st.com документацию по SWD и написать самостоятельно прошивальщик.

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


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

От участника этого же форума. 

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

Во-вторых, можно раскопать на st.com документацию по SWD

На arm.com, собственно.

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


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

On 6/23/2023 at 9:33 PM, Harbinger said:

От участника этого же форума. 

На arm.com, собственно.

о, благодарю .

 

Я ж так понимаю, что все Cortex поддерживают CMSIS-DAP, включая китайские GD32 и AD32 ? Это же модуль ядра?

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


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

16 часов назад, MKdemiurg сказал:

Я ж так понимаю, что все Cortex поддерживают CMSIS-DAP, включая китайские GD32 и AD32 ? Это же модуль ядра?

Отладчик это модуль ядра. Прошивкой он не занимается. Флэш прошивается либо путем загрузки небольшого кода прошивальщика в RAM либо манипулированием регистрами контроллера флэш через отладчик. У каждой модели МК свой собственный алгоритм прошивки, это никак не стандартизировано ARM.

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


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

On 7/7/2023 at 1:03 PM, _3m said:

Отладчик это модуль ядра. Прошивкой он не занимается. Флэш прошивается либо путем загрузки небольшого кода прошивальщика в RAM либо манипулированием регистрами контроллера флэш через отладчик. У каждой модели МК свой собственный алгоритм прошивки, это никак не стандартизировано ARM.

Это понятно.

Вопрос в унификации DAP интерфейса.

Я же шью GD32 как STM32 - значит сам интерфейс то унифицирован, а разница только в периферии?

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


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

1 hour ago, MKdemiurg said:

Вопрос в унификации DAP интерфейса.

Когда-то давным-давно я использовал вышеупомянутый код Алекса для прошивки NRF52. А он его под Atmel'овские кортексы писал. Так что да, SWD довольно стандартный.

Проблема, правда, в том, что SWD ногодрыгом получается довольно медленный. Я в итоге сделал микро-загрузчик, который SWD пишет в RAM, а вся основная прошивка передаётся по UART.

Какая магия используется в JLink / STLink, я не разбирался.

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


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

В 13.07.2023 в 11:29, esaulenka сказал:

Проблема, правда, в том, что SWD ногодрыгом получается довольно медленный. Я в итоге сделал микро-загрузчик, который SWD пишет в RAM, а вся основная прошивка передаётся по UART.

Там проблема не в ногодрыге как таковом, а в многократном обращении по SWD к регистрам контроллера FLASH. В J-Link и полноценном CMSIS-DAP это обходят похожим образом - Flashloader пишется в RAM и обращается к регистрам непосредственно. По SWD только команды и данные получает.

В 13.07.2023 в 11:29, esaulenka сказал:

Какая магия используется в JLink / STLink, я не разбирался.

Попытался с помощью Ghidra, но забросил - времени на это баловство порядочно нужно. ST-Link с виду проще.

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


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

После разбирательств с OpenOCD выяснил следующее.

Можно использовать готовые интерфейсы системных вызовов Linux.

sysfsgpio

linuxgpiod

Но возник вопрос...А что такое  remote BitBang в OpenOCD?

https://github.com/openocd-org/openocd/blob/master/contrib/remote_bitbang/remote_bitbang_sysfsgpio.c

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


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

2 hours ago, MKdemiurg said:

А что такое  remote BitBang в OpenOCD?

Удалённое махание ногами (BitBang) через внешний сервер (программу) через TCP. Используется с реально удалёнными железками и с симуляторами (Spike в частности использует)

 

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


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

39 minutes ago, xvr said:

Удалённое махание ногами (BitBang) через внешний сервер (программу) через TCP. Используется с реально удалёнными железками и с симуляторами (Spike в частности использует)

 

Это чтото типа TCP канала на  JLINKе ?

 

А ещё вопрос . Для использования linuxgpiod  - мне достаточно переопределить ноги в dln-2-gpiod.cfg  интерфейсе OpenOCD ?

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


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

8 minutes ago, MKdemiurg said:

Это чтото типа TCP канала на  JLINKе ?

 

Я не в курсе, что такое 'TCP канала на  JLINKе', а этот работает так:

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

2. Отдельно запускается OpenOCD и ему дают IP адрес (и порт) сервера из п1.

 

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


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

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

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

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

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

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

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

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

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

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