реклама на сайте
подробности

 
 
> Реализация программированияя Cortex-M0 по SWD, Кто занимался насколько это реализуем.
mempfis_
сообщение Aug 15 2013, 08:50
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Всем добрый день.

Выясняю возможность программирования одного процессора Cortex-M0 (Freescale, Kinetis) с помощью другого процессора посредством интерфейса SWD.
В документации на свой процессор в разделе Debug ничего как об протоколе SWD, так и о том как с помощью него можно программировать процессор не нашёл.
По самому интерфейсу SWD нашёл несколько диаграмм www.lpcware.com/content/image/diagrams и небольшое описание протокола Introduction to Cortex Serial Wire Debugging, Part One http://www.lpcware.com/content/blog/introd...ugging-part-one.
Также изучаю эту ссылку http://sourceforge.net/apps/mediawiki/stm3...title=Main_Page.

Как всегда разобраться нужно быстро, а времени на всё не хватает. Поэтому хочу спросить у форумчан - может кто реализовывал подобное и может поделиться информацией о самом интерфейсе SWD, протоколе общения с процессорами и инфой о том, как программировать процессор с помощью SWD.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Aug 16 2013, 09:12
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



mempfis_,
из OpenOCD для Вас будут интересны файлы:
arm_adi_v5.*
и
adi_v5_swd.c


я то еще старый OpenOCD модифицировал, он тогда про SWD еще ничего не знал, я просто влез в файл cortex_swjdp.c - теперь вся логика в arm_adi_v5

Так же понадобятся доки - IHI0031 ARM debug interface v5
DDI0419 arm architecture v6m reference manual


и прикладываю коротенькое описание SWD, очень полезное!

Прикрепленные файлы
Прикрепленный файл  15531.pdf ( 244.8 килобайт ) Кол-во скачиваний: 137
 
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 16 2013, 09:23
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(KRS @ Aug 16 2013, 12:12) *
mempfis_,
из OpenOCD для Вас будут интересны файлы:
arm_adi_v5.* и adi_v5_swd.c

и прикладываю коротенькое описание SWD, очень полезное!


a14.gif
Спасибо за весьма полезную информацию.
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 22 2013, 14:36
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Продолжаю заниматься SWD.
Выбрал libSWD-0.5. В принципе смог всё прикрутить к иару, но до результата пока рано т.к. ещё не разобрался каким образом выполнять операции на уровне управления ногами SWD.
Как я понял, для этого необходимо найти файлы, в которых описан jtag_interface

Код
/** OpenOCD as for now use global pointer to driver structure. */
extern struct jtag_interface *jtag_interface;


Оттуда мне необходимы методы
transfer(NULL, bits, mosidata, misodata, 0);
bitbang(NULL, "RnW", 0, &val);


Вот например описание функции libswd_drv_miso_8 в которой необходимо использовать jtag_interface->transfer():
Код
int libswd_drv_miso_8(libswd_ctx_t *libswdctx, libswd_cmd_t *cmd, char *data, int bits, int nLSBfirst){
if (data==NULL) return LIBSWD_ERROR_NULLPOINTER;
if (bits<0 && bits>8) return LIBSWD_ERROR_PARAM;
if (nLSBfirst!=0 && nLSBfirst!=1) return LIBSWD_ERROR_PARAM;

static int i;
static signed int res;
static char misodata[8], mosidata[8];

res=jtag_interface->transfer(NULL, bits, mosidata, misodata, LIBSWD_DIR_LSBFIRST);
if (res<0) return LIBSWD_ERROR_DRIVER;
/* Now we need to reconstruct the data byte from shifted in LSBfirst byte array. */
*data=0;
for (i=0;i<bits;i++) *data|=misodata[(nLSBfirst==LIBSWD_DIR_LSBFIRST)?(i):(bits-1-i)]?(1<<i):0;
LOG_DEBUG("OpenOCD's libswd_drv_miso_8(libswdctx=@%p, cmd=@%p, data=@%p, bits=%d, nLSBfirst=0x%02X) reads: 0x%02X", (void*)libswdctx, (void*)cmd, (void*)data, bits, nLSBfirst, *data);
return i;
}


Искал описание/реализацию jtag_interface в openOCD 0.7.0 и в интернете, но пока безуспешно.
Подскажите, кто занимался этим, где найти описание jtag_interface или примеры реализации.
Спасибо.



Возможно поторопился просить помощи....
Скачал архив openocd-libswd-master.zip в котором упоминается jtag_interface и есть примеры реализации.
Сейчас вечер, разбираться с архивом буду завтра.
Но если кто даст полезные ответы, то буду премного благодарен.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mempfis_   Реализация программированияя Cortex-M0 по SWD   Aug 15 2013, 08:50
- - Golikov A.   Если быстро надо может с другого конца? Почему име...   Aug 15 2013, 09:44
|- - mempfis_   Цитата(Golikov A. @ Aug 15 2013, 12:44) Е...   Aug 15 2013, 09:54
||- - scifi   Цитата(mempfis_ @ Aug 15 2013, 13:54) К с...   Aug 15 2013, 11:38
|- - Aner   QUOTE (Golikov A. @ Aug 15 2013, 12:44) Е...   Aug 15 2013, 10:50
|- - mempfis_   Нашел ещё такую ссылку http://forum.energymicro.co...   Aug 15 2013, 11:26
|- - demiurg_spb   Я думаю, вам стоит ознакомится с проектом blackmag...   Aug 15 2013, 11:40
|- - mempfis_   Цитата(demiurg_spb @ Aug 15 2013, 14:40) ...   Aug 15 2013, 17:18
- - vetal   20 секунд на arm + google = http://www.pjrc.com/ar...   Aug 15 2013, 10:06
- - KRS   даташит на SWD протокол есть на сайте ARM. Реализо...   Aug 15 2013, 18:12
|- - mempfis_   KRS спасибо за ссылки. Обязательно всё изучу. У ме...   Aug 15 2013, 19:42
- - skripach   Не знаю как в других кинетисах, в К20 есть EzPort ...   Aug 15 2013, 20:51
- - Budek   Здравствуйте всем! Работаю с stm32Lxx. Обращаю...   Aug 23 2013, 18:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 17:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01413 секунд с 7
ELECTRONIX ©2004-2016