Сергей Борщ 143 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба Посмотрите осциллографом на ногу RESET отказавшей платы. Если по какой-то причине идет постоянный перезапуск программы - на ноге RESET будут постоянные импульсы. Если они там есть - думать, почему происходит перезапуск. Можно доработать загрузчик, чтобы по определенному уровню на какой-то из ног он не передавал управление основной программе, а выдавал в какой-то отладочный канал контрольную сумму своей области и областей приложения. Если эта часть загрузчика в отказавшем приборе не будет работать - можно будет сделать вывод о порче загрузчика, если будет - поможет определить, это порча основной программы или какая-то непредусмотренная ее реакция на внешние условия (на какое-то состояние области настроек, например). У меня на STM32WL5 были похожие симптомы при невосстановимой порче корректирующего кода флеша - при попытке чтения сбойнувшей ячейки происходило исключение NMI. В вашем F42x такого механизма нет во флеше нет, но, возможно, есть другой, похожий. Что в вашей программе происходит при возникновении необработанного исключения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба 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: On 3/26/2023 at 9:16 PM, Сергей Борщ said: У меня на STM32WL5 были похожие симптомы при невосстановимой порче корректирующего кода флеша - при попытке чтения сбойнувшей ячейки происходило исключение NMI. В вашем F42x такого механизма нет во флеше нет, но, возможно, есть другой, похожий. Что в вашей программе происходит при возникновении необработанного исключения? отличный вопрос, будем выяснять, спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 143 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба 10 минут назад, fpga_student сказал: Во-первых я конечно же смотрел и reset и boot0 и питание. На столе все идеально и откуда бы там что взялось ? Отсюда: Ну раз там все чисто - значит как минимум постоянного циклического перезапуска не происходит и программа где-то "зависла". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба On 3/26/2023 at 10:01 PM, Сергей Борщ said: Отсюда: Ну раз там все чисто - значит как минимум постоянного циклического перезапуска не происходит и программа где-то "зависла". Вах. Да была такая тема, теперь вспоминаю. Крутая мысля. Спасибо. Такто я конечно вяленько проверял. 2 раз из 20. Да нужно тщательнее. Буду. Программист говорит на NMI у нас будет while(1) и это очень похоже. Но тогда остается вопрос, с чего мог бы убиться флешь ? Загрузчик угробить флешь не должен, тк обновление происходит с SD, и после обновления образы прошивок загрузчик с SD стирает, соответственно на следующем перезапуске ему просто нечего писать. Тогда получается что все подозрения на процедуры записи настроек в память проца в основной программе, на повреждение области флеша с настройками и NMI ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба В 26.03.2023 в 22:04, fpga_student сказал: Но тогда остается вопрос, с чего мог бы убиться флешь ? Кто знает, а можно ли, запустив заводской загрузчик, сравнить содержимое флешь с исходным файлом (при установленной RDP)? В 26.03.2023 в 22:17, adnega сказал: Кто знает, а можно ли, запустив заводской загрузчик, сравнить содержимое флешь с исходным файлом (при установленной RDP)? Отбой - нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба On 3/26/2023 at 10:17 PM, adnega said: Кто знает, а можно ли, запустив заводской загрузчик, сравнить содержимое флешь с исходным файлом (при установленной RDP)? В памяти проца несколько рабочих областей. 1. Загрузчик. 2. Основная программа. 3. Область хранения настроек ПО. Сравнить ВСЕ там не очень просто. А что такое RDP ? В версию повреждения флэша не укладывается оживание платы после полной перезаписи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба Ни разу не видел на STM32 проблем с порчей флешь. А изделий производится тысячами в год. Уверен, во флешь все хорошо, а МК прохлаждается в районе HF. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба adnega, я программировал МК лет 15 тому назад) Будьте добры, расшифровывайте свои сообщения для уже не таких посвященных( Первая ссылка в гугле для RDP - это remote desktop protoсol, что явно не про STM. А сакрального я уже не в курсе(( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба В 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, например. Все - пока настройки не почистите плата будет всякий раз кирпичица. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба 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: Все - пока настройки не почистите плата будет всякий раз кирпичица. Проблема в том, что я вроде проверял эту ситуацию. Как минимум один раз точно. Пытался закинуть новые файлы на обновление. Обновление не пошло. Это значит дохлый загрузчик. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба У меня в изделии всегда есть зеленый светодиод РАБОТА, по миганиям которого можно судить о состоянии контроллера. В обычной работе мигает раз в секунду со скважностью 2. В загрузчике скважность значительно меньше. При сбое кварца - работает от внутреннего RC-генератора и мигает чаще. При активном обновлении еще чаще. При глобальном фэйле - SOS морзянкой передает и т.п. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 242 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба 1 час назад, fpga_student сказал: Обьясните, плз, почему Вы так считаете Запись во внешнюю память - довольно крупная вещь. По длительности исполнения и прочему. А значит - она внесёт существенные изменения в тайминги работы программы. И баг ПО (если именно он во всём повинен) может просто переехать в другое место. И начать портить что-то другое. Да даже если бы и не внёс, то чего именно вы от него ожидаете? какой полезной инфы? Что будет запись типа "я такая-то функция вызвала сбой"? Сбои они на то и сбои, что всегда происходят в тех местах, где их никто не ожидает. А не там, где вы будете пытаться их фиксировать... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба On 3/26/2023 at 10:34 PM, adnega said: У меня в изделии всегда есть зеленый светодиод РАБОТА, по миганиям которого можно судить о состоянии контроллера. В обычной работе мигает раз в секунду со скважностью 2. В загрузчике скважность значительно меньше. При сбое кварца - работает от внутреннего RC-генератора и мигает чаще. При активном обновлении еще чаще. При глобальном фэйле - SOS морзянкой передает и т.п. бывалый. Светодиод я поставил)) опыт есть. А вот программист статусы так подробно не прописал. Там и так несколько мегабайт прошивка, я не стал прессовать( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба Если есть свободный пин, то можно на него привесить очистку памяти настроек и запись туда заводских значений. Или командой загрузчика убивать настройки до заводских. В 26.03.2023 в 22:35, fpga_student сказал: бывалый. Светодиод я поставил)) опыт есть. А вот программист статусы так подробно не прописал. Там и так несколько мегабайт прошивка, я не стал прессовать( Ну, для HardFault можно навесить спец индикацию - это не сложно, а кучу вопросов отбросит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fpga_student 0 26 марта, 2023 Опубликовано 26 марта, 2023 · Жалоба On 3/26/2023 at 10:35 PM, jcxz said: Запись во внешнюю память - довольно крупная вещь. По длительности исполнения и прочему. А значит - она внесёт существенные изменения в тайминги работы программы. И баг ПО (если именно он во всём повинен) может просто переехать в другое место. И начать портить что-то другое. Да даже если бы и не внёс, то чего именно вы от него ожидаете? какой полезной инфы? Что будет запись типа "я такая-то функция вызвала сбой"? Сбои они на то и сбои, что всегда происходят в тех местах, где их никто не ожидает. А не там, где вы будете пытаться их фиксировать... Я сказал FRAM, она работает на 40МГц. Достаточно быстро, чтобы сильно не гадить ПО, кроме того есть аппаратные очереди. Записанный стек позволит хотя бы понять, в одном и том же месте происходит сбой или в разных, если в одном то как минимум укажет направление куда смотреть. On 3/26/2023 at 10:36 PM, adnega said: Ну, для HardFault можно навесить спец индикацию - это не сложно, а кучу вопросов отбросит. Видимо теперь будем, спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться