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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> msp430f2254. Зависание и выполнение произвольного куска кода в условиях помех
emark
сообщение Jun 24 2016, 12:03
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146



Доброго времени суток!

Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили sm.gif). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает.

Кто-нибудь сталкивался таким? Как решили?
Go to the top of the page
 
+Quote Post
mcheb
сообщение Jun 24 2016, 12:49
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 30-05-06
Пользователь №: 17 602



Цитата(emark @ Jun 24 2016, 15:03) *
Как решили?

Установкой драйвера руки.сис
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 24 2016, 13:35
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(emark @ Jun 24 2016, 16:03) *
Доброго времени суток!

Столкнулся со следующей проблемой. Есть автономное устройство, собранное на msp430f2254. Внешний WatchDog на устройстве отсутствует (сэкономили sm.gif). Питание аккумуляторное. От заказчика стали приходить претензии: зависает (лечится только переключением питания). Экспериментально было определено, что проблема в кварце (12 МГц). Но вопрос не в этом. Во время экспериментов я определил, что тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает.

Кто-нибудь сталкивался таким? Как решили?


Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка.
Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной).
Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.

Сообщение отредактировал Obam - Jun 24 2016, 13:38


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
emark
сообщение Jun 24 2016, 13:52
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146



Цитата(mcheb @ Jun 24 2016, 17:49) *
Установкой драйвера руки.сис


Конкретней... a то у меня libastral не установлена тоже...

Сообщение отредактировал emark - Jun 24 2016, 14:12
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 24 2016, 13:57
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Obam @ Jun 24 2016, 16:35) *
Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка.
Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной).

И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
emark
сообщение Jun 24 2016, 14:09
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146



Цитата(Obam @ Jun 24 2016, 18:35) *
Тыкать "…какой-нибудь железкой в ножки кварца…" не надо, он не для этого. Теоретически, если касанием XOUT колебания может и не будут сорваны, то касанием XIN - наверняка.
Рекомендации самые простые: дорожки до кварца как можно кроче, нагрузочные ёмкости должны соответствовать параметрам кварца, под кварцем только малосигнальная земля (ни какой сильноточной).
Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.


Тыча, я имитировал помеху. Результат был очень похожий.

Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла.

Цитата(Obam @ Jun 24 2016, 18:35) *
Аппаратный контроль за тактированием в MSP430 весьма развитый, отладчиком можно получить всё что нужно.

ммм... про отладчик поподробнее. У меня JTAG отладчик сразу виснет, если я подобными издевательствами занимаюсь.

Цитата(iosifk @ Jun 24 2016, 18:57) *
И уж если переразвести не удается, то можно сделать экраны из фольги и прикрыть ими от помех...


Мы этим и занимаемся (поскольку полностью от кварца отказаться не можем) + перевод MCLK на DCO

Сообщение отредактировал emark - Jun 24 2016, 13:59
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 26 2016, 14:10
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором.
Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть.
Для отлова демона можете в каждую пустышку поставить
контрольную точку и помучить девайс.
---
Смена режима тактирования. Вы устраните последствия а причина останется неизвестной.
Проверьте также осцилографом цепь питания на предмет выбросов и провалов.


ps
- постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым"
- сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный
пин будет P1OUT ^= 0x01. Его мониторить осцилографом.

Нахрена все это ?
Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер).




Сообщение отредактировал k155la3 - Jun 26 2016, 14:18
Go to the top of the page
 
+Quote Post
emark
сообщение Jun 26 2016, 16:13
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 2-10-05
Пользователь №: 9 146



Цитата(k155la3 @ Jun 26 2016, 19:10) *
Проверьте, не открыт ли какойнить флаг прерывания, не обеспеченный вектором.
Рекомендую на все вектора поставить обработчики-"пустышки". NMI - если есть.
Для отлова демона можете в каждую пустышку поставить
контрольную точку и помучить девайс.
---
Смена режима тактирования. Вы устраните последствия а причина останется неизвестной.
Проверьте также осцилографом цепь питания на предмет выбросов и провалов.


ps
- постарайтесь найти режим когда сбой-глюк устойчив. Другим методом, а не "кварцевым"
- сделайте "тест-проект", который будет отличаться от основного только тем, что на свободный
пин будет P1OUT ^= 0x01. Его мониторить осцилографом.

Нахрена все это ?
Возможно, в девайсе зависает LCD например (что ажбегом возможно если I2C и топорный софт-драйвер).


Эти все этапы я уже проделал.

Собрали установку генерации ЭМИ (из латора и прерывателя), с помощью которого и нашли слабое место нашего изделия (кварц), путем последовательного экранирования частей платы. Просто потом я нашел более простой путь - непосредственного воздействия металическим предметом на ножки кварца.

Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода...
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 27 2016, 05:37
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(emark @ Jun 24 2016, 20:09) *
Тыча, я имитировал помеху. Результат был очень похожий.
Меня смущает другое, возможность (и даже легкость), с которой можно MSP заставить выполнять произвольный кусок кода в прошивке. Обработка прерывания от сбоев генератора мне не помогла.

Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать.
Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный.
С таким-же успехом можете замкнуть любые произвольные ноги МК и удивиться: "что-ж это он неправильно стал работать-то?"
Go to the top of the page
 
+Quote Post
_3m
сообщение Jun 27 2016, 06:30
Сообщение #10


Знающий
****

Группа: Участник
Сообщений: 745
Регистрация: 28-12-06
Пользователь №: 23 960



Цитата(emark @ Jun 24 2016, 15:03) *
... тыкая какой-нибудь железкой в ножки кварца на раз получаем такое зависание, а иногда (довольно часто) пыполнения кода программы, отвественного за стирания внутреннего программного Flash с понятным результатом. MCLK от кварца. Если MCLK сделать от DCO проблема исчезает.
Кто-нибудь сталкивался таким? Как решили?

Было 1-в-1 как у вас, включая самопроизвольное стирание флэш.
Перешел на тактирование от dco с периодической подстройкой по кварцу. По другому не лечится: в msp кварцевый генератор малопотребляющий, амплитуда на кварце мизерная он сбивается от малейшего чиха. Сам процессор однотактный а они капризны в отношении тактирования. Так что на экранирование и переразводку можете даже не тратить время - не поможет.
При работе от dco msp очень устойчив.

Цитата(jcxz)
Этим Вы не помеху симитировали. В нормально разведённом устройстве помеха не должна туда попадать.
Имхо - таким образом можно почти любой МК "заставить выполнять произвольный кусок кода в прошивке". Так как сбиваете тактирование, следовательно портится например выбираемый в данный момент код на произвольный.

Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК.
Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места.
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 27 2016, 07:19
Сообщение #11


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(emark @ Jun 24 2016, 18:09) *
ммм... про отладчик поподробнее. У меня JTAG отладчик сразу виснет, если я подобными издевательствами занимаюсь.


Подробнее чем в SLAU144J гл.5 не будет, а я так понимаю с нею вы знакомы. Странно, почему вам не удаётся обслужить OFIFG.
Опять же п. 5.2.7: "If a fault is detected for the crystal oscillator sourcing the MCLK, the MCLK is automatically switched to
the DCO for its clock source. This does not change the SELMx bit settings. This condition must be handled by user software." - на этот пункт эрраты часом нет?

Если вы действительно имитируете тяжёлую помеховую обстановку, то JTAG законно отваливается.

Кстати выдежка из DS ни чем не поможет?
[attachment=101469:Tbl.png]



--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 27 2016, 08:01
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(emark @ Jun 26 2016, 19:13) *
Эти все этапы я уже проделал.
. . . .
Еще раз повторю, меня сильно смущает что сбивая тактовый генератор (пусть варварскими методами), можно запустить произвольный кусок кода прошивки. Раньше на MSP я с таким не сталкивался. С зависанием худо-бедно справится внешний watchdog, а вот с исполнением произвольного куска кода...


Чтобы я делал, IMHO
- если есть возможность - задать внешнее "неубиваемо-гарантированое" тактирование и проверить гипотенузу что вылет из-за слета тактирования
(или помехи на тактовый вход)
- для ВЧ тактирования должен отрабатывать флаг неисправности генератора.
и даже если тактирование вообще нет - процессор должен переключаться на VLO (по F22XX семейству точно не знаю)
- проверить тип кварца, его "глючность" (контафакт), обвеску-емкости / настройку генератора.
Рекомендации по типовой схеме включения из даташита на кварц.
Мне попадались глючные 32768.
- проверить как девайс реагирует на ВЧ импульсную помеху
(смс на рядом лежащий мобильник). Эсли слетатет - экранировать - фильтровать.
итд в томже стиле sm.gif



Цитата(Obam @ Jun 27 2016, 10:19) *
... Странно, почему вам не удаётся обслужить OFIFG. ...

Демонов изгонять выкуривая
slaz167j.pdf, искать литерал "OFIFG"
sm.gif


Сообщение отредактировал k155la3 - Jun 27 2016, 08:40
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 27 2016, 08:23
Сообщение #13


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(emark @ Jun 24 2016, 15:03) *
Кто-нибудь сталкивался таким? Как решили?


Да, бывают такие случаи.

Тогда надо сделать так чтобы микроконтроллер не становился антенным противовесом.
Т.е. надо создать искусственный противовес рядом с кварцем, это может быть USB кабель, оплетка какого-нибудь экранированного интерфейсного кабеля, например CAN или плейн большой площади.

Тогда можете тыкать отверткой прямо в ноги кварца и ничего не произойдёт.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 27 2016, 08:26
Сообщение #14


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(_3m @ Jun 27 2016, 09:30) *
Помеха всегда попадает потому что идеальной защиты от помех не бывает. Вопрос в степени ослаблении помехи и чувствительности входов МК.
Попробуйте сбить старый 4-х тактовый pic16 или классический 12-тактовый mcs-51 (cmos версию). Они "тыкание" в кварц вообще не замечают. Если кварц закоротить останавливаются, раскоротишь продолжают работать с того же места.

Когда-то давно нам в Элтех клиент прислал результаты опытов. Он пьезо-поджигалкой для газа тестировал разные стартовые наборы микроконтроллеров.
так вот, меги сбивались, а НЕКовские - нет. Поищите статью, автор Горюнов...
А вывод такой. Все микроконтроллеры сделаны для разного применения. Если Вы хотите применить в "промышленности" микроконтроллер, сделанный для "бытовухи", то имеете то, что имеете. Выбирайте микроконтроллер сделанный для "автопрома". Там уровень помех значительно выше и МК сразу делали менее к ним чувствительными...

А "сегодня" - экраны, развязки земель по входу и по выходу, фильтрация питания...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 27 2016, 08:28
Сообщение #15


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(k155la3 @ Jun 27 2016, 12:01) *
Цитата
(Obam @ Jun 27 2016, 10:19) *
Демонов изгонять выкуривая
slaz167j.pdf, искать литерал "OFIFG"
sm.gif



Эт когда это я такое писал?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 6th August 2025 - 18:39
Рейтинг@Mail.ru


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