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

 
 
> Непонятный рестарт программы
Вячик13
сообщение Jun 18 2018, 07:53
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604



Имеется устройство на базе микроконтроллера STM32F100RC. Для него разработано программное обеспечение под Keil 4.22a:
Total RO Size (Code + RO Data) 76796 ( 75.00kB)
Total RW Size (RW Data + ZI Data) 7776 ( 7.59kB)
Total ROM Size (Code + RO Data + RW Data) 76944 ( 75.14kB)
Устройство (весовой терминал ротационных промышленных весов) установлено на промышленном объекте у заказчика в количестве 3 штук.

Наблюдается следующий эффект. Через произвольное время (от 3 до 30 минут) происходит сброс программы. Причём сброс странный. Статические переменные обнуляются, но сброс не "ловится" при отладке (установка breakpoint как в в начале SystemInit(), так и в начале main()). Мало того, при рестарте программы должно производиться тестирование дисплеев из 7-сегментных индикаторов (в начале main()), но оно не происходит.
В программе используется WDT IWDG, но это не его рук дело. Эти явления происходят на всех 3 устройствах. До этого я разработал более 20 аналогичных проектов на этом же устройстве с аналогичной структурой программы, но подобного никогда не наблюдал.

Буду благодарен за любой совет.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Jun 18 2018, 08:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Вячик13 @ Jun 18 2018, 10:53) *
Наблюдается следующий эффект. Через произвольное время (от 3 до 30 минут) происходит сброс программы. Причём сброс странный. Статические переменные обнуляются, но сброс не "ловится" при отладке (установка breakpoint как в в начале SystemInit(), так и в начале main()). Мало того, при рестарте программы должно производиться тестирование дисплеев из 7-сегментных индикаторов (в начале main()), но оно не происходит.

Так может это и не сброс, а именно обнуление ОЗУ вследствие программной ошибки?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 18 2018, 08:14
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(aaarrr @ Jun 18 2018, 11:13) *
Так может это и не сброс, а именно обнуление ОЗУ вседствие программной ошибки?

Или стек переполняется, например, при интенсивных прерываниях, и собой затирает данные в ОЗУ ...
Go to the top of the page
 
+Quote Post
Вячик13
сообщение Jun 18 2018, 09:53
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604



Цитата(kovigor @ Jun 18 2018, 10:14) *
Или стек переполняется, например, при интенсивных прерываниях, и собой затирает данные в ОЗУ ...

Нет. Во-первых в данной системе нет интенсивных прерываний:
1) системные часы (каждую миллисекунду);
2) АЦП - 1 раз в 10 миллисекунд;
3) КПДП передатчика SPI (каждую миллисекунду);
4) 2 прерывания UART (не работали, поскольку не было компьютера верхнего уровня).
Во-вторых, как я уже писал, аналогичная система и в других проектах (даже есть более нагруженные).
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 18 2018, 10:11
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Вячик13 @ Jun 18 2018, 12:53) *
Во-вторых, как я уже писал, аналогичная система и в других проектах (даже есть более нагруженные).

Хорошо. Ловим сброс чисто аппаратно. Подпаиваем на плату светодиод и при сбросе зажигаем его. И в программе делаем так, чтобы выключить его можно было только оператору, например, нажатием кнопочки ...
Go to the top of the page
 
+Quote Post
Вячик13
сообщение Jun 18 2018, 10:27
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604



Цитата(kovigor @ Jun 18 2018, 12:11) *
Хорошо. Ловим сброс чисто аппаратно. Подпаиваем на плату светодиод и при сбросе зажигаем его. И в программе делаем так, чтобы выключить его можно было только оператору, например, нажатием кнопочки ...

Спасибо, но вряд ли. Если это аппаратный сброс, то в любом случае должна была сработать подпрограмма тестирования индикаторов. А она гоняет по индикатору "палочки", а затем отображает дату и версию программы. я бы это увидел.

Цитата(kovigor @ Jun 18 2018, 12:21) *
Страшны не асинхроники, а контакторы, которые их включают. В момент коммутации возникают радиопомехи. И они могут быть особенно мощными и сокрушительными, если контакты не задемпфированы. Как у вас с этим, а ?
Если дело в этом, то запитка от аккумулятора в качестве эксперимента (а я вам настоятельно советую попробовать этот вариант) может и не помочь, т.к. помехи проходят сквозь эфир. Да, вместо аккумулятора можно использовать обычный UPS, физически (вилкой) отключенный от розетки и питающийся от аккумулятора. Это в том, например, случае, если ваш прибор питается от 220В и запитать его прямо от аккумулятора затруднительно или неудобно ...

В период наблюдения явления на площадке ещё шли монтажные работы и ничего такого не включалось
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 18 2018, 10:28
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Вячик13 @ Jun 18 2018, 13:27) *
В период наблюдения явления на площадке ещё шли монтажные работы и ничего такого не включалось

Болгарка, дрель, перфоратор, сварочник ? Нет ? Вы уверены ?
И еще, я бы все-таки стек попробовал увеличить ...
Go to the top of the page
 
+Quote Post
Вячик13
сообщение Jun 18 2018, 10:37
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 71
Регистрация: 17-01-12
Пользователь №: 69 604



Цитата(kovigor @ Jun 18 2018, 12:28) *
Болгарка, дрель, перфоратор, сварочник ? Нет ? Вы уверены ?
И еще, я бы все-таки стек попробовал увеличить ...

Тогда проконсультируйте, пожалуйста, как. Я в Keile этого никогда не делал. Где это находится?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jun 18 2018, 10:40
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Вячик13 @ Jun 18 2018, 13:37) *
Тогда проконсультируйте, пожалуйста, как. Я в Keile этого никогда не делал. Где это находится?

Сходу не припомню, давно не занимался. Вот, что нашлось за первую же минуту:

http://www.keil.com/support/man/docs/rlarm...ar_cfgstack.htm
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Вячик13   Непонятный рестарт программы   Jun 18 2018, 07:53
- - kovigor   Цитата(Вячик13 @ Jun 18 2018, 10:53) Буду...   Jun 18 2018, 08:11
|- - Вячик13   Цитата(aaarrr @ Jun 18 2018, 10:13) Так м...   Jun 18 2018, 09:27
|- - aaarrr   Цитата(Вячик13 @ Jun 18 2018, 12:27) А ка...   Jun 18 2018, 09:50
|- - Вячик13   Цитата(aaarrr @ Jun 18 2018, 11:50) memse...   Jun 18 2018, 10:19
|- - kovigor   Цитата(Вячик13 @ Jun 18 2018, 13:19) ... ...   Jun 18 2018, 10:21
|- - jcxz   Цитата(Вячик13 @ Jun 18 2018, 13:19) Оста...   Jun 18 2018, 10:47
|- - Вячик13   Цитата(jcxz @ Jun 18 2018, 12:47) Вам ука...   Jun 18 2018, 11:07
|- - jcxz   Цитата(Вячик13 @ Jun 18 2018, 14:07) Пред...   Jun 18 2018, 11:14
|- - Вячик13   Цитата(jcxz @ Jun 18 2018, 13:14) Ну знач...   Jun 18 2018, 11:20
|- - jcxz   Цитата(Вячик13 @ Jun 18 2018, 14:20) Спас...   Jun 18 2018, 11:38
|- - Obam   Цитата(jcxz @ Jun 18 2018, 14:38) А в исп...   Jun 19 2018, 14:47
|- - jcxz   Цитата(Obam @ Jun 19 2018, 17:47) В STM32...   Jun 19 2018, 15:05
|- - Obam   Цитата(jcxz @ Jun 19 2018, 18:05) Это поч...   Jun 19 2018, 15:14
- - k155la3   Цитата(Вячик13 @ Jun 18 2018, 10:53) . . ...   Jun 18 2018, 12:56
- - редактор   склоняюсь к версии "дикого" указателя (н...   Jun 19 2018, 16:59
- - Михась   Цитата(редактор @ Jun 19 2018, 23:59) скл...   Jun 21 2018, 12:34


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

 


RSS Текстовая версия Сейчас: 19th June 2025 - 13:50
Рейтинг@Mail.ru


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