ivainc1789 0 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба STM32F030F4P6, IAR v7.60.1, Jet-Link Ultra. Уже в который раз попадаю на одни и те же грабли: если внутри main делаю попытку переинициализировать SWDIO и SWCLK как выход в лог 1 / выход в лог 0 соответственно, то отладчик более не может подключиться к MCU. Странно, но код переинициализации выводов расположен после точки останова main - то есть по сбросу должны быть активны дебажные свойства пинов. Лечится это тяжело, и у меня - только в Иаре, если в опциях стоит "подключаться во время сброса". Замыкаем вывод сброса на землю и отпускаем одновременно с запуском дебага. В этом случае, с ...дцатой попытки удается подключиться к кристаллу и стереть его, после чего можно нормально шить правленной прошивкой. Прошу помощи: кто и как организует работу с этими выводами, чтобы и отлаживать можно было, и коннектился дебаггер нормально, и после отладки и прога могла нормально работать с переиниц выводами? Сейчас у меня они выведены на разъем без пуллапов и пулдаунов (по идее должны использоваться внутренние...). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба А в программе есть вначале сброс оговоренных ног в состояние по умолчанию? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба А в программе есть вначале сброс оговоренных ног в состояние по умолчанию?Так по сбросу же и есть дебажные свойства выводов по умолчанию! А Иар рапортует, что не может подключиться, хотя еще даже до main точки останова не дошли... Как я понимаю, Иар коннектится во время сброса, подключает дебаггер и встает на main. То, что где то далее произойдет переиниц выводов он еще не знает... Так ведь? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба Не знаю, как в 030. У меня в другом была включена защита. И тогда доступиться до этих ножек можно было только при сбросе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба Замыкаем вывод сброса на землю и отпускаем одновременно с запуском дебага Неужели программатор этого не умеет делать? ST-Link v2 с легкостью рулит ногой RST. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба Странно, но код переинициализации выводов расположен после точки останова main - то есть по сбросу должны быть активны дебажные свойства пинов.Не знаю, как это организовано при работе с кортексами, но старые ARM7TDMI работать при активном сигнале сброса не могли и с ними работа происходила примерно так: Отпускается сброс, (процессор при этом начинает работать и успевает кое-что сделать), отладчик дает команду halt, останавливает ядро, расставляет точки останова (если стоит галочка - ставит точку останова на входе в main()) , ставит счетчик команд на первую команду и запускает выполнение (если стояла галочка "бежать до main()). Так вот, если процессор от отпускания сброса до halt успевал запретить JTAG или поломать тактирование - ситуация была в точности ваша. Производителями отладчиков рекомендовалось в отладочной версии программы в самое начало стартапа ставить задержку из пустого цикла, чтобы за время исполнения этой задержки отладчик успевал выполнить команду halt. Возможно, для кортексов у отладчиков в режиме без галочки "подключаться с зажатым Reset" алгоритм работы такой же. Для стирания такого кристалла можно перед сбросом зажать ногу BOOT0 - тогда кристалл запустится в режиме встроенного загрузчика, swd останется активным и сможет стереть кристалл. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ivainc1789 0 9 мая, 2016 Опубликовано 9 мая, 2016 · Жалоба Сейчас подпаял RESET пин и проблема решилась - теперь возможно автоматом соединиться. Получается, для SWD подсоединение к пину RESET необходимо, если выводы SWDIO и/или SWCLK будут переинициализированы как GPIO позже. Или видимо лучше как вариант, сделать у RESET пина контактную площадку для отладки, чтобы не тянуть антенну к разъему... В итоге, как мы не пытаемся прийти к минимальному кол-ву пинов в SWD - все равно получается от 4 до 5-ти... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба В итоге, как мы не пытаемся прийти к минимальному кол-ву пинов в SWD - все равно получается от 4 до 5-ти... Если для прошивки на производстве, то в некоторых случаях достаточно SWDIO и SWCLK, т.к. запитать и получить землю можно через разъем питания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 8 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Если для прошивки на производстве, то в некоторых случаях достаточно SWDIO и SWCLK, т.к. запитать и получить землю можно через разъем питания. Мы для прошивки на производстве пользуем двух-проводной RS, но все равно те же 6 пино-проводов. После программирования через RS он используется по назначению в устройстве. И все Cool w/o SWDIO & SWCLK! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Мы для прошивки на производстве пользуем двух-проводной RS, но все равно те же 6 пино-проводов. После программирования через RS он используется по назначению в устройстве. И все Cool w/o SWDIO & SWCLK! А как же ножки BOOT ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aner 8 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба А как же ножки BOOT ? Понятно что не догнал, еще разок ... 6 пинов это +; -; Reset; Boot0; Rx;Tx Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Понятно что не догнал, еще разок ... 6 пинов это +; -; Reset; Boot0; Rx;Tx Обсуждалась минимизация числа проводников. В итоге, как мы не пытаемся прийти к минимальному кол-ву пинов в SWD - все равно получается от 4 до 5-ти... Можно, конечно, сделать джампер "BOOT0" и кнопку "Reset", а для прошивки использовать существующий в некоторых изделиях UART/RS232/422-порт. Кста, я тоже везде стараюсь выводить эти самые 6 пинов (uart используется как отладочная консоль). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
den1234567 0 6 июня, 2018 Опубликовано 6 июня, 2018 · Жалоба Всех приветствую! Схожая ситуация, но с другой стороны. На таком же камне. После отладки проги по SWD, активировал РА13 и РА14 на выход (так должно быть по задумке) - не работают. Дебагер тоже перастает работать, но так и должно быть! Снял инициализацию РА13 и РА14, все вернулось. Нужно что бы заработали ноги РА13 и РА14. Может кто сталкивался? Может компилятор ставит какой затык? Или подпалил ноги пока отлаживал прогу? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 7 июня, 2018 Опубликовано 7 июня, 2018 · Жалоба Нужно что бы заработали ноги РА13 и РА14. Может кто сталкивался? Может компилятор ставит какой затык? Или подпалил ноги пока отлаживал прогу? Все прекрасно работает. Нужно записать правильное значение в GPIOA->MODER (пины 13 и 14 в MODE_OUTPUT). GPIOA->MODER = 0 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN0) // ( 6) LCD1602_RS | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN1) // ( 7) LCD1602_E | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN2) // ( 8) LCD1602_D4 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN3) // ( 9) LCD1602_D5 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN4) // (10) LCD1602_D6 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN5) // (11) LCD1602_D7 | (GPIO_MODE_INPUT << GPIO_MODER_PIN6) // (12) ENC_A | (GPIO_MODE_INPUT << GPIO_MODER_PIN7) // (13) ENC_B | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN9) // (17) CON_TX. USART1_TX | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN10) // (18) CON_RX. USART1_RX | (GPIO_MODE_INPUT << GPIO_MODER_PIN11) // (17) free | (GPIO_MODE_INPUT << GPIO_MODER_PIN12) // (18) free | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN13) // (19) TXEN [SWDIO (debug)] | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN14); // (20) WL [SWCLK (debug)] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 2 7 июня, 2018 Опубликовано 7 июня, 2018 · Жалоба 6 пинов это +; -; Reset; Boot0; Rx;Tx Можно сделать хитрый PCB-разъем (навроде камаковских разъемов или ISA): пока вставляете, закоротится сначала Boot0, потом Reset, потом отпустится Boot0 и отпустится Reset. В итоге от платы к компьютеру только 4 проводочка идти будет… Сам прошиваю STM32 только через бутлоадер (т.к. это очень удобно: после прошивки этот же преобразователь USB<->TTL используется для отладки), но Boot и Reset делаю в виде кнопочек и жму их вручную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться