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

 
 
 
Reply to this topicStart new topic
> STM32F373 - проблемы с прошивкой, через SW
styuf
сообщение Jan 4 2017, 13:36
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Добрый день, товарищи!

Возникла у меня такая проблема: появилась необходимость запрограммировать STM32F373 в наборе с разной периферией. В качестве программатара использую stm32l-discovery. В качестве среды - keil 5. Проект собрал, в качестве тестовой програмки решил помигать светодиодом на плате (PA1). Получился вот такой код:

CODE
#include "stm32f37x.h"

int i=0;

int main(void)
{
GPIO_InitTypeDef GPIO_IS;
/* GPIOD Periph clock enable */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
GPIO_IS.GPIO_Pin = GPIO_Pin_All;
GPIO_IS.GPIO_Mode = GPIO_Mode_OUT;
GPIO_IS.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_IS.GPIO_OType = GPIO_OType_PP;
GPIO_IS.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOA, &GPIO_IS);

while(1)
{
GPIO_Write(GPIOA, 0xFF);
while(i<100000) i++;
i=0;
GPIO_Write(GPIOA, 0xFF);
while(i<100000) i++;
i=0;
}
}
#include "stm32f37x.h"

Сразу оговорюсь, не осознал прблему и затер старый код, так что возможно использовался порт B. Сам код эффекта не имеет (ибо при переходе по внутренним while-ам состояние не меняется).
Далее, я попытался прошиться из под keil через SW. Плата увиделась, прошивка прошла. А тут и началась беда. больше плата не распознавалась, понять почему, а тем более исправить, я не смог.

Попробовал стандартуную утилиту к ST-LINK - эффект тот-же: скорее всего исключил проблему с keil.
Попробовал вернуть программатар на МК discovery - работает: вроде как исключил проблемы с программатором.
Не пробовал: подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очент=ь сложно - она никак не разведена на плате(

В голове созрел такой вариант: раз ноги SWDIO и SWCLK сопряжены с шиной порта A, я снял с них функцию отладочных входов/выходов.

Больше вариантов я не придумал, разве что МК погорел (чур меня).

Надеюсь на вашу мудрость и понимание вороса help.gif .

Сообщение отредактировал styuf - Jan 4 2017, 14:20
Go to the top of the page
 
+Quote Post
amiller
сообщение Jan 4 2017, 13:47
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Вообще то я не силен в CMSIS, не приходилось использовать.
Но вроде как инициализируете порт F, а пишите в А, нет?
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 4 2017, 13:50
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Поправил! Спасибо, что указали на ошибку. Как я уже сказал, код я старый затер, но точно помню, что все порты были в соответствии.
Go to the top of the page
 
+Quote Post
amiller
сообщение Jan 4 2017, 13:54
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Тогда и далее в цикле:
Вы в обоих случаях пишите 0xFF, что не приводит к изменению состояния выходов.
Похоже код не имеет отношения к проблеме, если она вообще существует...
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 4 2017, 13:57
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Код действительно не имеет смысла, о чем я и говорил в топике. Он был создан с единственной целью - прошить что-то в МК. опять же с другой стороны данный код не должен мешать последующей прошивке. Но проблема на лицо: первый раз проект залился в МК, после чего МК перестал определяться средствами прошивки и отладки.

И понимаю ваш скепсис по поводу проблемы. Проблема не с кодом, который не претендует на что-то правильное и работающее. Проблема вот с чем: мог ли я програмно обрезать себе функцию отладки и прошивки через порт SW, и если да, то как это исправить.

Сообщение отредактировал styuf - Jan 4 2017, 13:59
Go to the top of the page
 
+Quote Post
amiller
сообщение Jan 4 2017, 14:03
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Значит я неправильно прочитал Ваше письмо.
Видимо проблема в том, что Вы задействовали _все_ выводы порта А, в том числе и интерфейса SWD.
Хотя чтобы отменить функционал SWD, надо вроде Remap ног делать.
Тем не менее ST-LINK Utility умеет прошивать в разных режимах.
Вероятно Вам поможет опция "Under Reset", или что-то в этом духе.
Чтобы прошивка ничего не успела сделать с ногами.


Сообщение отредактировал amiller - Jan 4 2017, 14:07
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 4 2017, 14:13
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Попробовал сейчас снизить частоту для ST-LINK до 100 кГц. Не подключился. Перепробовал все комбинации режимов и ресетов - тоже самое.

Не пробовал еще подключить кроме ног SWDIO и SWCLK еще ногу ресета. Завтра попробую, но очень сложно - она никак не разведена на плате(

Сообщение отредактировал styuf - Jan 5 2017, 05:50
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 5 2017, 05:53
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Проблема решилась добавкой ресета к SWD шине. Как правильно говорил amiller, если перезагрузить МК, то порт А не успеет проинициализироваться и прошиться удастся.
Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 5 2017, 06:53
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (styuf @ Jan 5 2017, 07:53) *
Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.
Вы просто когда будете перенастраивать порт А, настраивайте PA14, PA15 в режим SWD. Или просто не трогайте, если ваша библиотека такое позволяет.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jan 5 2017, 17:48
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(styuf @ Jan 5 2017, 00:53) *
Думаю добавить теперь в код задержку перед инициализацией ног в несколько секунд, на всякий пожарный, что бы успевать прошиться, если что-то пойдет не так.


А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах?


--------------------
ASB
Go to the top of the page
 
+Quote Post
styuf
сообщение Jan 6 2017, 11:55
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 4-02-10
Пользователь №: 55 287



Цитата(Aleksandr Baranov @ Jan 6 2017, 00:48) *
А почему нельзя жить дальше с добавленным ресетом, не думая ни о каких портах?


Проблема вот в чем: плата уже используется по целевому назначению, никто переразводить её не будет ради добавления шины ресет от МК до порта SWD. А с напаянным к ножке МК проводком плату ни заказчику не покажешь, не на испытания не поставишь. Во и приходится изгаляться(

Сообщение отредактировал styuf - Jan 6 2017, 11:55
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 02:43
Рейтинг@Mail.ru


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