vasta 0 27 октября, 2013 Опубликовано 27 октября, 2013 (изменено) · Жалоба Добрый день. Решил что-то сделать плату на 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, все нормально, программатор рабочий Где может быть загвоздка? Изменено 27 октября, 2013 пользователем vasta Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба Судя по листингу, программатор не переходит в режим SWD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasta 0 27 октября, 2013 Опубликовано 27 октября, 2013 · Жалоба Судя по листингу, программатор не переходит в режим SWD. Да, меня тоже удивила надпись JTAG, какие надо крыжики в утилите проставил, хз, может багофича у jflash такая, надо посмотреть, какой лог на рабочих платах. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasta 0 29 октября, 2013 Опубликовано 29 октября, 2013 (изменено) · Жалоба Судя по листингу, программатор не переходит в режим SWD. Переходит как будто. Если сменить крыжик SWD на JTAG чип перестает коннектиться. Здесь же Connect successull, но на любые действия ответ RAM check failed ЗЫ. Причем на разных платах, т.е это не ошибка монтажа, а чтото, чего я не понимаю( Изменено 29 октября, 2013 пользователем vasta Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 29 октября, 2013 Опубликовано 29 октября, 2013 · Жалоба Можно программировать через UART1. На сайте ST для этого есть программа Flash Loader Demonstrator. Это аналог программы Flash Magic для NXP. PS: перетыкание разъёма JTAG/SWD может убить процессор статическим электричеством. Перетыкание разъёма RS232 всегда безопасно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vasta 0 29 октября, 2013 Опубликовано 29 октября, 2013 · Жалоба Можно программировать через UART1. Таки да, только через юарт не отладишься Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
etoja 0 30 октября, 2013 Опубликовано 30 октября, 2013 · Жалоба Тестовую печать направляйте в RS232 через printf. Это позволяет отлаживать системы реального времени, а JTAG/SWD - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Allregia 9 7 ноября, 2013 Опубликовано 7 ноября, 2013 · Жалоба Тестовую печать направляйте в RS232 через printf. Это позволяет отлаживать системы реального времени, а JTAG/SWD - нет. Да ну?! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbour 0 7 ноября, 2013 Опубликовано 7 ноября, 2013 · Жалоба не гоните - через 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', которая и задает тип флеша в камне для программатора Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться