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

 
 
 
Reply to this topicStart new topic
> SiLabs'ы "встроенный вотч-дог" vs "запись Flash"
richie
сообщение Dec 22 2010, 14:10
Сообщение #1


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Использую процессоры от Silabs: 581, 344, 411, а ранее были 311 и 064.
Так что опыт есть.

Нареканий на процессоры, компилятор keil (успешно мигрирую на поздние версии) нет,
за исключением регулярного слетания отладчика с громким падением Keil'а.
Эта проблемка лезет из dll'ки отладчика EC-3. Пристальное вглядывание в землю отладчика
выявило короткие и редкие всплески при двигании мышкой, подключенной тоже по USB.
Но с этим как-то привык уже жить.


Неделю назад столкнулся с другой проблемой на 344 процессоре и до сих пор её решаю:
При интенсивной записи (10 раз в секунду) в страницу встроенного FLASH процессор ресетится,
в регистре источника ресета (RSTSRC) торчит бит-3 - источником ресета был watch-dog.
Такая частая запись флэша в работе устройства применяться не будет, просто шла отладка драйвера
на ПК и тут вылезла описанная выше проблема в устройстве.

Вотч-дог взведён на 3 мс - максимально возможное время для используемой конфигурации процессора.


1. Отключил вотч-дог - проблема пропала.
2. Вернул вотч-дог и наставил его доп. сбросов - не помогло.
3. Проанализировал код на наличие опасных мест связанных с запрещением прерываний. Ничего не нашёл.
4. Отключил запись во FLASH, оставив только запись во внешний EEPROM - проблема не проявляется.
5. Сделать эмуляцию ватч-дога для отлавливания места и состояния когда происходит истечение таймаута вотч-дога:
отключил настоящий ватч-дог и вместо него задействовал свободный таймер,
сконфигурировал его на аналогичный ватч-догу интервал,
а на его прерывание по переполнению поставил точку останова.
Запустил тестовую утилитку на ПК и ... ничего не произошло, всё работает, прерывание по переполнению таймера не возникает в течении 4 минут.
Уменьшал время таймера-эмулятора ватч-дога, до тех пор пока прерывание не начало появляться. Это начало происходить при времени < 0.2 мс.
Т.е. таймаута штатного вотч-дога гарантированно хватает.

Получив этот результат, мысли "куда копать" иссякли.
Go to the top of the page
 
+Quote Post
Igor_K
сообщение Dec 22 2010, 16:17
Сообщение #2


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

Группа: Validating
Сообщений: 113
Регистрация: 12-05-05
Пользователь №: 4 949



Забавно..
У меня подобным образом FLASH пишется на F022 и F314, сбоев не замечал.
Это под отладчиком проявляется или всегда?

Время цикла стирания 15мс + цикл записи 55мкс: может просто маловато 3х-милисекундного сторожа?

Сообщение отредактировал Igor_K - Dec 22 2010, 17:21
Go to the top of the page
 
+Quote Post
richie
сообщение Dec 23 2010, 05:53
Сообщение #3


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Игорь, спасибо за ответ!

Проявляется и в нормальном режиме и под отладчиком, что казалось сперва плюсом, думал отловлю быстро.
Проблема проявляется не сразу, для её вызова нужно непрерывно вызывать запись во флэш с указанной частотой в течении времени от 10 до 120 секунд.

Чтобы вызвать функцию записи флэш с интерфейса нужно сперва войти в режим записи "заводских настроек", разрешить команды запись,
записать новые значения, запретить команды записи, выйти из режима записи "заводских настроек".
Сама запись выглядит классически для этих процессоров: копирование страницы в ОЗУ, замена в ОЗУ значений параметров,
с контролем того что действительно что-то меняется, если были изменения, то стирание страницы флэш и запись всей страницы из ОЗУ.
По пути всякие контрольные суммы считаются, счётчики инкрементируются и т.д.

Время стирания флэш на 344 эти же 15 мс, прерывания на время стирания и сам вотч-дог запрещены, согласно рекомендациям SiLabs.
Отличия, конечно, от последовательности записи/стирания от апнотовских имеются: раздельная запись ключей, первая часть ключа
пишется в специально выделенном для этих целей прерывании, разрешение которого делается отдельной функцией, вторая часть ключа
пишется в самих функциях, но с обязательными проверками залочивания флэш и проверкой что первая часть ключа записалась.
Сделано так для избежания самопроизвольного стирания флэш при различных внешних условиях.

С утра появилась идея параллельно с ватч-догом дёргать дискретными выходами, коих есть две штуки, одним делать тогл при сбросе
вотч-дога, другим индицировать ресет. Этим выясню что, бывают ли действительно, при работе с вотч-догом, задержки большие 3 мс,
приводящие к ресету процессора.
Go to the top of the page
 
+Quote Post
ih_
сообщение Dec 23 2010, 07:27
Сообщение #4


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

Группа: Свой
Сообщений: 77
Регистрация: 2-04-08
Из: Россия, Киров
Пользователь №: 36 422



Цитата(richie @ Dec 22 2010, 20:10) *
...Получив этот результат, мысли "куда копать" иссякли.
Может быть от такой частой записи возрастает ток потребления, и за 10...120 секунд его источник выходит из рабочего режима, напряжение питания "проваливается" на короткое время.

Сообщение отредактировал ih_ - Dec 23 2010, 07:28
Go to the top of the page
 
+Quote Post
richie
сообщение Dec 23 2010, 07:58
Сообщение #5


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Цитата(ih_ @ Dec 23 2010, 13:27) *
Может быть от такой частой записи возрастает ток потребления, и за 10...120 секунд его источник выходит из рабочего режима, напряжение питания "проваливается" на короткое время.

Может быть, как-нибудь проверю и эту идею.
С другой стороны VDD-монитор включен, источником ресета он никогда не был.
Go to the top of the page
 
+Quote Post
richie
сообщение Dec 24 2010, 09:46
Сообщение #6


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

Группа: Свой
Сообщений: 147
Регистрация: 5-07-04
Из: Обнинск
Пользователь №: 261



Цитата(richie @ Dec 23 2010, 11:53) *
...
С утра появилась идея параллельно с ватч-догом дёргать дискретными выходами, коих есть две штуки, одним делать тогл при сбросе
вотч-дога, другим индицировать ресет. Этим выясню что, бывают ли действительно, при работе с вотч-догом, задержки большие 3 мс,
приводящие к ресету процессора.

Сделано...
В процессе добавил отслеживание ещё одной ноги, которая на том же PCA0 генерирует частоту наружу.
Диаграмма такая:
Прикрепленное изображение


Нулевой канал логического анализатора показывает ресеты,
первый канал - тоглы пина при сбросе ватч-дога,
третий канал - генерируемая процессором частота (~1,2 МГц).

Временной интервал между последним дёрганьем ватч-дога и ресетом - примерно 100 мкс.
Ресет это дёрганье ногой второй командой после джампа по вектору прерывания по ресету.
Реально прекращением работы программы на процессоре можно считать время прекращение генерации частоты,
которая перестала генерироваться через ~50 мкс после последнего сброса ватч-дога.

Источником ресета (по значению RSTSRC) снова является ватч-дог...
Go to the top of the page
 
+Quote Post

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

 


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


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