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

ARM удумал новый отладочный интерфейс. Причем даже не отладочный интерфейс, а прошивку на базе CMSIS для железного отладчика который через RDDI-DAP dll общается с дебагером на хосте.

 

Benefits of CMSIS-DAP

  • 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.

 

проект в стадии: Version 0.01 - Beta (даты файлов 19.06.2012)

 

ЗЫ ознакомится можно в местных закромах.

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


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

ARM удумал новый отладочный интерфейс. Причем даже не отладочный интерфейс, а прошивку на базе CMSIS для железного отладчика который через RDDI-DAP dll общается с дебагером на хосте.

 

Отличная новость.

Как понимаю, дело обстоит так, что теперь можно приобрести плату LPC-Link-II , например в составе LPCXpresso, залить туда прошивку из CMSIS-DAP и получить JTAG отладчик круче чем J-Link или его клоны?

 

Странно только, что вместе с исходниками не дают схемы того самого LPC-Link-II.

 

Впрочем имея исходники никто не мешает сделать свой JTAG отладчик на любом микроконтроллере.

Ну щас гонка копеечных JTAG-ов начнется! ;)

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


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

Оптимально LPC1343. ROM HID можно заюзать, да и прошиву первоначально залить через встроенный usb загрузчик.

 

Только вот быстрее J-Link оно вряд ли будет. У J-Link годами наработанная поддержка, исполняемый код в отлаживаемых контроллерах, "аппаратный" JTAG и оптимизированный BULK. А здесь похоже пока только ногодрыг по HID USB. Ну и только Keil (хотя это будет недолго).

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


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

Отличная новость.

Как понимаю, дело обстоит так, что теперь можно приобрести плату LPC-Link-II , например в составе LPCXpresso, залить туда прошивку из CMSIS-DAP и получить JTAG отладчик круче чем J-Link или его клоны?

тут весь вопрос в скорости, причем даже не самого "ногодрыганья" для JTAG или SWD, а именно обмена с компом. Т.к. USB еще и HID если не будет нормальной очереди команд каждая транзакция по USB в лучшем случае 2 ms.

 

Например на Beaglebone установлен XDS100v2 (просто FTDI) подключил к IAR (ну о том что он работает один раз, потом надо перегружать среду, я не буду говорить, т.к. он использует тулзы от TI) но только при открытых регистрах CPU время шага несколько секунд. Потому что вместо того что бы сразу спустить вниз очередь команд и получить ответ, все идет мелкими шажками по 2 ms....

 

 

А здесь похоже пока только ногодрыг по HID USB. Ну и только Keil (хотя это будет недолго).

Даже ногодрыганьем можно получить отличную скорость - главное что бы с хостом нормальные очереди команд были!

Не только keil, еще DS-5. Т.е. возможно будет получить отладчик для Cortex-Ax.

Хотя сейчас IAR уже умеет работать через J-link, например с Beaglebone AM3359 попробовал!

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


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

Протокол в общем не уровня GDB сервер, где уже сразу память, регистры процессора и т.п. читаются.

Но и гораздо выше уровня ногодрыганья! Блочная передача, полинг DAP регистра есть. В общем название правильное - протокол именно доступа к DAP. Скорость должна вполне приличная получиться.

 

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


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

Есть желающие поковыряться?

По быстрому совокупил с примером HID для LPC1343.

Вроде подает признаки жизни - девайс определяется, реагирует на настройки.

Но дальше что то никак...

В части ногодрыга все на макросах.

Что то лыжи остановилмсь ;)

Сообща все веселее...

 

ЗЫ:

Нашел ашЫПку:

static __forceinline uint32_t PIN_SWDIO_IN      (void) {
    return ((LPC_GPIO1->DATA & (1<<PIN_SWD_D))>>7); // дальше в программе анализируется бит 0...
}

 

Клокается вроде все правильно, но все-равно не дышит...

LPC1343_DAP.rar

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


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

Клокается вроде все правильно, но все-равно не дышит...

IMHO для начала надо попробовать законнектится через SWD и считать IDCODE напрямую вызывая функции SW-DP.

Там в начале надо подать от 50 клоков при SWDIO = 1 (что бы очистить возможные незавершенные транзакции), потом подать 0xE79E, потом еще раз от 50 клоков при SWDIO = 1.

А потом считать IDCODE.

 

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


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

Дык задача так не стоит - во что бы то ни стало к чему-нить подключиться...

Задача - заюзать в том же Keil штатно без всякого шаманства ;)

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


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

Задача - заюзать в том же Keil штатно без всякого шаманства ;)

Ну так надо же определить почему не работает.

А хотя бы лог команд которые по USB приходят есть?

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


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

Теперь есть:

 

DAP command = 00  Seq: 02-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 00  Seq: 03-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 00  Seq: 04-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 00  Seq: 01-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 00  Seq: 02-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 00  Seq: FF-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 00  Seq: FE-00 00 00 00 00 00 00  //ID_DAP_Info
DAP command = 02  Seq: 01-00 00 00 00 00 00 00  //ID_DAP_Connect 
DAP command = 11  Seq: 20-A1 07 00 00 00 00 00  //ID_DAP_SWJ_Clock
DAP command = 04  Seq: 00-64 00 00 00 00 00 00  //ID_DAP_TransferConfigure
DAP command = 13  Seq: 00-00 00 00 00 00 00 00  //ID_DAP_SWD_Configure 
DAP command = 01  Seq: 00-01 00 00 00 00 00 00  //ID_DAP_LED
DAP command = 12  Seq: 33-FF FF FF FF FF FF FF  //ID_DAP_SWJ_Sequence     
DAP command = 12  Seq: 08-00 00 00 00 00 00 00  //ID_DAP_SWJ_Sequence 
DAP command = 05  Seq: 00-01 02 00 00 00 00 00  //ID_DAP_Transfer
DAP command = 03  Seq: 00-00 00 00 00 00 00 00  //ID_DAP_Disconnect  
DAP command = 01  Seq: 00-00 00 00 00 00 00 00  //ID_DAP_LED

 

Для LPC1768:

Сначала 51 клок при высоком уровне и 8 клоков при низком

Срубается на команде ID_DAP_Transfer

01 02 посылается и ожидается от LPC1768 3 бита подтверждения ACK.

Смотрел осциллографом - LPC не отвечает...

 

Для STM32 ( ничего не подключено):

 

DAP command = 12 Seq: 33-FF FF FF FF FF FF FF

DAP command = 12 Seq: 10-B6 ED 00 00 00 00 00

DAP command = 12 Seq: 33-FF FF FF FF FF FF FF

DAP command = 12 Seq: 08-00 00 00 00 00 00 00

DAP command = 05 Seq: 00-01 02 00 00 00 00 00

DAP command = 03 Seq: 00-00 00 00 00 00 00 00

DAP command = 01 Seq: 00-00 00 00 00 00 00 00

 

 

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


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

Так 0xE79E не посылается - чип не будет по SWD работать! (может LPC1000 и будет т.к. JTAG нету) но именно эта последовательность переключает на SWD!

 

Сначала 51 клок при высоком уровне и 8 клоков при низком

посмотрел свои старые исходники на битбанге - у меня 16 клоков при низком уровне.

 

т.е. общая последовательность такая:

64 клока при высоком уровне.

16 клоков отправка 0xE79E

16 клоков при низком уровне

50 клоков при высоком уровне

16 клоков при низком уровне

 

Первые 64 клока нужны для очистки состояния если SWD уже работал.

я уже не помню зачем нужны 16 клоков при низком уровне.

 

Но 0xE79E надо обязательно посылать!

 

Может быть Вам просто стоит подправить исходники что бы при первой команде ID_DAP_SWD_Configure или ID_DAP_SWD_Clock отправлялось

64 клока при высоком уровне.

16 клоков отправка 0xE79E

16 клоков при низком уровне

 

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


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

Первым делом это попробовал, гогда углУбился ;)

Правда подавал по 55 "единичек".

 

При взведенной галке "SWJ" последовательность отрабатывается как на нижнем логе ("для STM") всегда.

(просто для LPC забыл выставить).

 

Но там может и с командой ID_DAP_Transfer тоже что то не так.

Не срабатывает...

 

Вычитал в сети такое:

"

> + /* More than 50 TCK/SWCLK cycles with TMS/SWDIO high,

> + * putting both JTAG and SWD logic into reset state.

> + */

> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,

> + /* Switching sequence enables SWD and disables JTAG

> + * NOTE: bits in the DP's IDCODE may expose the need for

> + * an old/deprecated sequence (0xb6 0xed).

> + */

> + 0x9e, 0xe7,

> + /* More than 50 TCK/SWCLK cycles with TMS/SWDIO high,

> + * putting both JTAG and SWD logic into reset state.

> + */

> + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,

"

 

DLL-ки из Keil и из вашего архива выдают такую байду (0xb6 0xed) ...

Пускай авторы допиливают :)

Увы, суетиться, думаю, (пока?) нет смысла.

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

И все не так уж красиво и открыто?

 

Кстати, а где удалось тиснуть архивчик, если не секрет?

Что то в открытом доступе я его не нашел...

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


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

Кстати, а где удалось тиснуть архивчик, если не секрет?

Что то в открытом доступе я его не нашел...

Да в открытом доступе ее нет, но новее у них ничего нет.

 

Да там исходники ногодрыганья не так интересны, как хидеры! Особенно которые лежат в папке RDDI.

К тому же там написано что их скоро удалят и внесут в RDDI, который не во всех вариантах доступен.

А вот DLL можно написать свою и получить отладчик даже на FTDI для DS-5

 

К тому же в исходниках RDDI/example лежит преобразователь RDDI-DAP в RDDI-CMSIS-DAP (в верхнем коменте в файле неверно указано, к ULINK это не имеет отношения вроде)

т.е. видно еще один вариант RDDI будет.

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


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

Не могу сказать про LPC - но я скачал файл CMSISDAP-DL-00001-r0p1-00rel0.zip

Переделал его под STM32F103, присоединил его к STM32VLDISCOVERY и по крайне мере тест проходит.

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

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


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

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

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

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

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

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

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

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

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

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