Перейти к содержанию
    

Контроллер самостирается. Кто виноват и что делать (с) Мать (с)

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

У меня на STM32WL5 были похожие симптомы при невосстановимой порче корректирующего кода флеша - при попытке чтения сбойнувшей ячейки происходило исключение NMI. В вашем F42x такого механизма нет во флеше нет, но, возможно, есть другой, похожий. Что в вашей программе происходит при возникновении необработанного исключения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/26/2023 at 9:16 PM, Сергей Борщ said:

Посмотрите осциллографом на ногу RESET отказавшей платы. Если по какой-то причине идет постоянный перезапуск программы - на ноге RESET будут постоянные импульсы. Если они там есть - думать, почему происходит перезапуск.

Во-первых я конечно же смотрел и reset и boot0 и питание. На столе все идеально и откуда бы там что взялось ? Заказчика я заставил комплектовать машины MeanWell, они вроде неплохие.

 

On 3/26/2023 at 9:16 PM, Сергей Борщ said:

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

про загрузчик уже есть идея после его запуска перед передачей управления в основную программу сделать вывод сообщения с паузой скажем 5с, чтобы убедиться на 100% что дохлый именно загрузчик а не основной код. 10% шансов я оставлял на то, что основная программа не повреждается, но дохнет, тк запарываются настройки. Хотя, кажется я проверял и это однажды.

 

On 3/26/2023 at 9:16 PM, Сергей Борщ said:

image.thumb.png.fb559554eaa904993db1ac3e43772cad.png

 

On 3/26/2023 at 9:16 PM, Сергей Борщ said:

У меня на STM32WL5 были похожие симптомы при невосстановимой порче корректирующего кода флеша - при попытке чтения сбойнувшей ячейки происходило исключение NMI. В вашем F42x такого механизма нет во флеше нет, но, возможно, есть другой, похожий. Что в вашей программе происходит при возникновении необработанного исключения?

 

отличный вопрос, будем выяснять, спасибо.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, fpga_student сказал:

Во-первых я конечно же смотрел и reset и boot0 и питание. На столе все идеально и откуда бы там что взялось ?

Отсюда:

image.png.bf2576a797130f3ed4c882615f5ed12d.png

Ну раз там все чисто - значит как минимум постоянного циклического перезапуска не происходит и программа где-то "зависла".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/26/2023 at 10:01 PM, Сергей Борщ said:

Отсюда:

image.png.bf2576a797130f3ed4c882615f5ed12d.png

Ну раз там все чисто - значит как минимум постоянного циклического перезапуска не происходит и программа где-то "зависла".

Вах. Да была такая тема, теперь вспоминаю. Крутая мысля. Спасибо. Такто я конечно вяленько проверял. 2 раз из 20. Да нужно тщательнее. Буду.

 

Программист говорит на NMI у нас будет while(1) и это очень похоже. Но тогда остается вопрос, с чего мог бы убиться флешь ?

 

Загрузчик угробить флешь не должен, тк обновление происходит с SD, и после обновления образы прошивок загрузчик с SD стирает, соответственно на следующем перезапуске ему просто нечего писать. Тогда получается что все подозрения на процедуры записи настроек в память проца в основной программе, на повреждение области флеша с настройками и NMI ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 26.03.2023 в 22:04, fpga_student сказал:

Но тогда остается вопрос, с чего мог бы убиться флешь ?

Кто знает, а можно ли, запустив заводской загрузчик, сравнить содержимое флешь с исходным файлом (при установленной RDP)?

В 26.03.2023 в 22:17, adnega сказал:

Кто знает, а можно ли, запустив заводской загрузчик, сравнить содержимое флешь с исходным файлом (при установленной RDP)?

Отбой - нельзя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/26/2023 at 10:17 PM, adnega said:

Кто знает, а можно ли, запустив заводской загрузчик, сравнить содержимое флешь с исходным файлом (при установленной RDP)?

В памяти проца несколько рабочих областей. 1. Загрузчик. 2. Основная программа. 3. Область хранения настроек ПО.

Сравнить ВСЕ там не очень просто. 

 

А что такое RDP ?

 

В версию повреждения флэша не укладывается оживание платы после полной перезаписи.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ни разу не видел на STM32 проблем с порчей флешь. А изделий производится тысячами в год. Уверен, во флешь все хорошо, а МК прохлаждается в районе HF.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

adnega, я программировал МК лет 15 тому назад)

 

Будьте добры, расшифровывайте свои сообщения для уже не таких посвященных( Первая ссылка в гугле для RDP - это remote desktop protoсol, что явно не про STM. А сакрального я уже не в курсе((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 26.03.2023 в 22:19, fpga_student сказал:

В памяти проца несколько рабочих областей. 1. Загрузчик. 2. Основная программа. 3. Область хранения настроек ПО.

Сравнить ВСЕ там не очень просто. 

У меня тоже есть все эти регионы памяти. Но приложение перед запуском проходит контроль CRC32, и при несовпадении сидим в загрузчике и ждем корректное обновление.

Настройки тоже имеют локальную контрольную сумму и ищется последняя запись с правильной суммой - она будет содержать настройки.

Если ни одной записи не найдется, то загружаются настройки по-умолчанию.

В 26.03.2023 в 22:19, fpga_student сказал:

А что такое RDP ?

Защита от чтения.

В 26.03.2023 в 22:19, fpga_student сказал:

В версию повреждения флэша не укладывается оживание платы после полной перезаписи.

Можно записать некорректные настройки в область хранения настроек ПО. Затем эти "плохие" значения спровоцируют HardFault, например.

Все - пока настройки не почистите плата будет всякий раз кирпичица.

 

image.thumb.png.133dffe81c28a0f45f99ae7b94d7fd36.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/26/2023 at 10:27 PM, adnega said:

У меня тоже есть все эти регионы памяти. Но приложение перед запуском проходит контроль CRC32, и при несовпадении сидим в загрузчике и ждем корректное обновление.

У нас точно также

 

On 3/26/2023 at 10:27 PM, adnega said:

Настройки тоже имеют локальную контрольную сумму и ищется последняя запись с правильной суммой - она будет содержать настройки.

вот здесь я не уверен что есть контроль

 

On 3/26/2023 at 10:27 PM, adnega said:

Если ни одной записи не найдется, то загружаются настройки по-умолчанию.

Защита от чтения.

Можно записать некорректные настройки в область хранения настроек ПО. Затем эти "плохие" значения спровоцируют HardFault, например.

именно такая версия падения основного кода. Те самые 10%

 

On 3/26/2023 at 10:27 PM, adnega said:

Все - пока настройки не почистите плата будет всякий раз кирпичица.

Проблема в том, что я вроде проверял эту ситуацию. Как минимум один раз точно. Пытался закинуть новые файлы на обновление. Обновление не пошло. Это значит дохлый загрузчик.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня в изделии всегда есть зеленый светодиод РАБОТА, по миганиям которого можно судить о состоянии контроллера. В обычной работе мигает раз в секунду со скважностью 2. В загрузчике скважность значительно меньше. При сбое кварца - работает от внутреннего RC-генератора и мигает чаще. При активном обновлении еще чаще. При глобальном фэйле - SOS морзянкой передает и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, fpga_student сказал:

Обьясните, плз, почему Вы так считаете

Запись во внешнюю память - довольно крупная вещь. По длительности исполнения и прочему. А значит - она внесёт существенные изменения в тайминги работы программы. И баг ПО (если именно он во всём повинен) может просто переехать в другое место. И начать портить что-то другое.

Да даже если бы и не внёс, то чего именно вы от него ожидаете? какой полезной инфы? Что будет запись типа "я такая-то функция вызвала сбой"? :wink:  Сбои они на то и сбои, что всегда происходят в тех местах, где их никто не ожидает. А не там, где вы будете пытаться их фиксировать...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/26/2023 at 10:34 PM, adnega said:

У меня в изделии всегда есть зеленый светодиод РАБОТА, по миганиям которого можно судить о состоянии контроллера. В обычной работе мигает раз в секунду со скважностью 2. В загрузчике скважность значительно меньше. При сбое кварца - работает от внутреннего RC-генератора и мигает чаще. При активном обновлении еще чаще. При глобальном фэйле - SOS морзянкой передает и т.п.

бывалый. Светодиод я поставил)) опыт есть. А вот программист статусы так подробно не прописал. Там и так несколько мегабайт прошивка, я не стал прессовать(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

В 26.03.2023 в 22:35, fpga_student сказал:

бывалый. Светодиод я поставил)) опыт есть. А вот программист статусы так подробно не прописал. Там и так несколько мегабайт прошивка, я не стал прессовать(

Ну, для HardFault можно навесить спец индикацию - это не сложно, а кучу вопросов отбросит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/26/2023 at 10:35 PM, jcxz said:

Запись во внешнюю память - довольно крупная вещь. По длительности исполнения и прочему. А значит - она внесёт существенные изменения в тайминги работы программы. И баг ПО (если именно он во всём повинен) может просто переехать в другое место. И начать портить что-то другое.

Да даже если бы и не внёс, то чего именно вы от него ожидаете? какой полезной инфы? Что будет запись типа "я такая-то функция вызвала сбой"? :wink:  Сбои они на то и сбои, что всегда происходят в тех местах, где их никто не ожидает. А не там, где вы будете пытаться их фиксировать...

Я сказал FRAM, она работает на 40МГц. Достаточно быстро, чтобы сильно не гадить ПО, кроме того есть аппаратные очереди. Записанный стек позволит хотя бы понять, в одном и том же месте происходит сбой или в разных, если в одном то как минимум укажет направление куда смотреть.

 

On 3/26/2023 at 10:36 PM, adnega said:

Ну, для HardFault можно навесить спец индикацию - это не сложно, а кучу вопросов отбросит.

Видимо теперь будем, спасибо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...