Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с SWD на ST
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
vasta
Добрый день.
Решил что-то сделать плату на ST (ST32F101ZCT6), до этого много проектанствовал на камнях от NXP.
Получил проблему на самом первом этапе при прошивке.
Собрал проект, попробовал отладить в иде, не вышло. Полез глубже, просто попробовал что-нибудь поделать из JFlash
Получил ошибку ram check failed
Конкретнее

Цитата
Connecting ...
- Connecting via USB to J-Link device 0
- J-Link firmware: V1.20 (J-Link ARM V8 compiled Jul 26 2011 17:31:24)
- JTAG speed: 100 kHz (Fixed)
- Initializing CPU core (Init sequence) ...
- Initialized successfully
- JTAG speed: 100 kHz (Fixed)
- Connected successfully
Erasing chip ...
- Erasing 128 sectors, 0x8000000 - 0x803FFFF
- ERROR: RAM check failed @ address 0x20000000.
- ERROR: Write: 0x03020100 07060504
- ERROR: Read: 0xAAAAAAAA AAAAAAAA
- ERROR: (0 bytes of RAM have been checked successfully)
- ERROR: Failed to erase chip
Disconnecting ...
- Disconnected


Похожая ошибка на другом камне описана тут
http://electronix.ru/forum/lofiversion/index.php/t88377.html
вроде как вопрос решился установкой внешнего кварца, я это не пробовал, ибо нелогично, внутри вроде должен быть генератор и должен работать
На программатор выведены NRST, SWDIO, SWCLK.
Выведены коротко, 20мм.
Попробывал засунуть программатор в плату с NXP, все нормально, программатор рабочий
Где может быть загвоздка?
Genadi Zawidowski
Судя по листингу, программатор не переходит в режим SWD.
vasta
Цитата(Genadi Zawidowski @ Oct 27 2013, 17:39) *
Судя по листингу, программатор не переходит в режим SWD.

Да, меня тоже удивила надпись JTAG, какие надо крыжики в утилите проставил, хз, может багофича у jflash такая, надо посмотреть, какой лог на рабочих платах.
vasta
Цитата(Genadi Zawidowski @ Oct 27 2013, 17:39) *
Судя по листингу, программатор не переходит в режим SWD.

Переходит как будто.
Если сменить крыжик SWD на JTAG чип перестает коннектиться.
Здесь же Connect successull, но на любые действия ответ RAM check failed
ЗЫ. Причем на разных платах, т.е это не ошибка монтажа, а чтото, чего я не понимаю(
etoja
Можно программировать через UART1. На сайте ST для этого есть программа Flash Loader Demonstrator. Это аналог программы Flash Magic для NXP.
PS: перетыкание разъёма JTAG/SWD может убить процессор статическим электричеством.
Перетыкание разъёма RS232 всегда безопасно.
vasta
Цитата(etoja @ Oct 29 2013, 21:47) *
Можно программировать через UART1.

Таки да, только через юарт не отладишься
etoja
Тестовую печать направляйте в RS232 через printf.
Это позволяет отлаживать системы реального времени, а JTAG/SWD - нет.
Allregia
Цитата(etoja @ Oct 30 2013, 09:44) *
Тестовую печать направляйте в RS232 через printf.
Это позволяет отлаживать системы реального времени, а JTAG/SWD - нет.

Да ну?!
Harbour
не гоните - через SWD чудесно пашет отладочный putc/printf :

Код
void debug_put(u8 i)
{
Delay(100);
if (!ITM_PORT)
   return;
ITM_PORT = i;
}

void debug_puts(const char *str)  
{
while (*str)
   debug_put(*(str++));
}

void debug_printf(const char *fmt, ...)
{
char b[128];
va_list args;
va_start(args, fmt);
vsprintf(b, fmt, args);
va_end(args);
debug_puts(b);
}


если уж очень хочется отлаживать события по микросекундам - мостырим свой буфер сообщений с таймстампами и неспешно его выводим второстепенным тредом в тот же SWD

чтобы jlink шил по SWD нужно ему команду соответствующую дать, удобственно из Makefile вызывать что-то типа :

Код
JLINK = ../stm32/JLink_Linux_V474
...
prg:
        -LD_LIBRARY_PATH=$(JLINK) $(JLINK)/JLinkExe jlink.cmd


где jlink.cmd из себя представляет

Код
si 1
device stm32fxxxrx // тут задаем свой девайс
h
erase
loadbin parshivka.bin 0
r
go
swoview


для прошивки пишем 'make prg'. Думается что трабла связана с отсутствием команды 'device', которая и задает тип флеша в камне для программатора
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.