CMSIS-DAP Debugger на STM32

Сделал CMSIS-DAP дебаггер на простом STM32F103C8 адаптере.
Неплохая замена J-Link/ULink и прочим адаптерам.
  • -2
  • 01 октября 2012, 05:29
  • x893

Комментарии (42)

RSS свернуть / развернуть
Ну и? Где описание, фотографии, впечатления? Что за дебаггер, чем хорош?
0
  • avatar
  • Vga
  • 01 октября 2012, 08:40
Думал ТС просто ошибся и выбрал обычный пос, вместо топика-ссылки. Открыл линк — ан нет, ТС полагает что это нормальный пост, и большего не требуется.
0
А вот сообщество, похоже, иак не считает)
0
Да наше сообщество это нечто. Столь разношерстное, что не понятно как вообще вместе уживаемся.
0
Из топика ничего не понял, но зато заинтересовался, что такое CMSIS-DAP.

Оказывается, на сайте ARM можно скачать спецификацию и код в общем виде, реализующий интерфейс USB-JTAG (или SWD), который можно прикрутить на любой армовский (а может и не только) контроллер с усб! И это дело будет работать с Кейлом. Там функции управления выводами выделены в конфиг (поднять TDO/ опустить TDO и т.д.) и могут быть посажены на любой вывод, какой удобен для разводки.

И предложено две адаптации: LPC-Link-II и OpenSDA.

В крайнем случае, любой желающий может посмотреть, как там сделан JTAG-интерфейс или SWD =)
0
Вот это классно. А какие оно МК поддерживает? Или любые и поддержка зависит исключительно от среды программирования/отладки?
0
Как минимум, Cortex'ы («The ARM® Cortex processors provide the CoreSight debug and trace unit.») То есть во всех кортексах стоит заведомо известный универсальный отладочный модуль =) И оный код знает, как с ним общаться.

Нативно там реализован конкретно стек DAP'a. Но ничто не мешает забрать оттуда только SWD или JTAG. И делать программатор хоть для AVR. Кроме лицензии, конечно.

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

Естественно, чтоб реализовать клон любого программатора, надо знать его USB-протокол. Но эта заготовка может существенно облегчить жизнь. Но можно свой автономный программатор собрать для обновления пачек заведомо известного типа устройств, вроде того, что тут недавно был показан для AVR (по JTAG/ISP).

Ох, да позволю копипасту из приложенной доки:
Provides a standardized interface for debuggers.
Interfaces to Keil MDK and ARM DS-5 are already available; adaption for 3rd party debuggers in preparation.
Access to CoreSight registers of all Cortex processor architectures (Cortex-A/R/M).
Connects via 5-pin JTAG or 2-pin Serial Wire Debug (SWD).
Supports multi-core debugging.
Easy to deploy to Debug Units based on Cortex-M microcontrollers.
Debug Unit may be integrated on an evaluation board.
USB using HID (Human Interface Device) driver class that avoids driver installation on host PC.

Конечно, без дров на HID оно будет шевелиться еле-еле, но никто не запрещает делать иначе Оо
+1
Драйвер для HID не нужен. Пакеты по 64 байта. По скорости работает точно так же как J-Link. Но так как DLL для поддержки маленькие, то визуально даже быстрее чем J-link. Проверял только SWD режим.
0
Я и говорю, что без дров=)

Отладке понятно, что много не надо. А вот прошивка/верификация большого кода, не тестового? Там, под сотню килобайт флеша если загонять?) Я не очень представляю, как много данных можно предать с помощью HID в секунду при помощи аппаратного HS/FS USB.
0
На большом не проверял. Тестовый код небольшой. У меня только J-Link, ULink, ST-Link есть — поэтому сравнить могу только с ними. Но визуально работает чуть быстрее J-Link'a. Если использовать LPC порт (размер пакета 1024), то скорость загрузки будет выше.
0
Я плохо смотрю, но где сама ссылка там на оный порт? Оо

Нашёл по ссылке три ссылки, все ведут на описания и блабла, ссылки на скачивание не нашёл.
0
Не стал публиковать код, так как версия 0.01 beta. Есть некоторые баги. Как только будет вариант стабильный — код появится для загрузки.
0
  • avatar
  • x893
  • 01 октября 2012, 12:49
эээ, а с какой целью тогда постили 2 строки текста?
0
Что бы люди знали об этом (не о мне, а о том что есть такой вариант отладчика)
0
Чёрт возьми, ну так и напиши — «есть такой отладчик — blablabla, сделал его, вот так получилось, вот так повторить, вот такие грабли...»
Ну к чему ссылка на непонять что? Нет, конечно, интересно, и многие (я в том числе) не знали об этом, но можно хоть несколько строк от себя добавить? Тут комменты (как обычно) в сотню раз полезнее оказались.
Или сделал бы тогда топик-ссылку…
+1
uni, перелогиньтесь!
0
Добавил архив для STM32F103C8 в пост
0
  • avatar
  • x893
  • 02 октября 2012, 01:16
Перенес бы ты лучше содержимое того поста сюда. Только на русском, английский у тебя довольно кривой.
0
Ну не всем дано Шекспира в оригинале читать.
0
Вот и скопируй сюда и на русском.
0
А не пофиг ли уже? Завтра о посте никто и не вспомнит, а кому надо сохранили линки на сам проект.
0
Повторил в 2-х экземплярах. При первом подключении к Windows7 определяется, пишет, что ставит драйвер, а затем пропадает из списка устройств. При последующих подключениях винда булькает, светодиоды на плате примерно на секунду засвечиваются и гаснут, девайса в списке устройств не наблюдаю. Оба ведут себя одинаково. Из отличий стабилизатор не на 3.0, а на 3.3 В, нет подтяжек на PA1 и PA4 (да вроде и не нужны), делитель к PB8 15k/22k на всякий стоит (вдруг используется в либе). Компилил в Кайл 4.54. Хелп
0
Винда хоть и не показывает, но адаптер кайл 4.54 видит. А вот таргет — нет — SWD/JTAG Communication Failure. Посмотрел мануал — ставится птичка HWRESET и Connect: under Reset, а в PORT_SWD_SETUP() заодно настраивается NRESET — попробовал бросить проводок к таргету — грузиться всё-равно не хочет. Таргет — вторая плата. Менял их между собой. Шнурок для заливки от ST-Link из STM32VLDiscovery и для соединения между платками использую один и тот же.
0
Отбой. При смене пинов не протянута смена макросов PIN_SWDIO_TMS_OUT_DISABLE()и PIN_SWDIO_TMS_OUT_ENABLE(). Одним CMSIS DAP залил другой:)
0
У меня под Keil сброс и загрузка проходят только если поставить Reset в SYSRESETREQ (для STM32F). В arm написал но ответа нет почему так. Cигнал RESET проходят, но сброс не происходит если ставить в другие значения. Keil (4.60) исходники тоже отказался давать (CMSIS_AGDI.dll, CMSIS_DAP.dll).
0
  • avatar
  • x893
  • 21 ноября 2012, 12:13
Я нашел Вашу переписку на сайте ARM. Тоже так настроил. В проекте поменял серийник USB на вариант из LPC-Link-II, да и имя на всякий случай оттуда же, потому как кайл издавна славится недокументированными особенностями, проявляющимися, например, при особенных камментов в коде. Комплект положил на Сахаре.
0
да — есть такой момент :)
0
проявляющимися, например, при особенных камментов в коде
А можно подробней?)
0
например, при удалении камментов с копирайтами из исходников либ для C51 можно было получить не совсем рабочий проект
0
Получил вчера плату от EnergyMicro
www.energymicro.com/tools/efm32-giant-gecko-starter-kit-efm32gg-stk3700
проверил на EFM32 этот отладчик — RESET нормально работает (Normal), видимо какая-то проблема с timeout на STM32
0
  • avatar
  • x893
  • 21 ноября 2012, 15:06
Сегодня не до того, но чуть позже проверю с имеющимся зоопарком — LPC1114/11U14/1343/1769/1788, STM32L151/F100/F103, EFM32G880F128
0
От LPCXpresso отпилил LPC1114/302 и подключил CMSIS DAP — при тех же настройках функционирует и прошивка, и дебаг.
0
LPC1769 шьётся, но не дебажится:( — позволяет сделать пару шагов и выпадает на PC 1FFF008E с RDDI-DAP Error, ну и отваливается эмулятор
0
Проблема с LPC1769, который опять же в составеа отпиленного таргета от LPCXpresso, выглядит так же, как по линку, но там вроде как помогла установка птички SWJ, а тут не помогает:(
0
Теперь дебаг LPC1769 работает. Там же на Сахаре добавил скрипт дебаггера (без которого попадали на бутлоадер — около 0x1FFF0080...)
0
LPC1343 полет нормальный
0
LPC11U14 полет нормальный
0
Приделал в код HID bootloader для смены прошивки, Только не знаю — надо это или сразу удалить?
0
  • avatar
  • x893
  • 24 ноября 2012, 23:13
А обновления-то ты где-то выкладываешь?
0
у меня на codeplex есть догин — там самое удобное. Или на блоге. Просто HID bootloader он понадобится только когда ARM сделает обновление кода для CMSIS-DAP.
0
Минус в том что пока CMSIS-DAP только Keil (и еще вроде в зачатке CoIDE) поддерживает. IAR забил, но думаю по сговору с Segger'ом. Осталось еще разобраться с IAD проблеммой с STM32 (хотя с LPC этой проблеммы нет) и тогда можно добавлять вторичный девайс (COM или CAN/SPI/I2C) для удобства отладки. Просто профессионалам моргающих led это не нужно (а их 99.9), а для начинающих полезно (типа меня)
0
CooCox пока только делает вид, что умеет с ним работать. На их форуме есть мануал по запуску OpenSDA. Попробовал вписать в usb_config.h параметры от OpenSDA — не шьёт (кайл с такими буквами работает), проинсталлировал чего они там рекомендуют — всё-равно глухо.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.