-
- В режиме, в котором слетает прошивка, обращения к записи во флеш
нет. То есть сама функция присутствует в коде. Однако она пишет в
задефайненый адрес (он не вычисляется) и в ней жестко присутствует
стирание страницы по этому же адресу. И этот адрес очень далеко от
начала. - my504(11.07.2023 13:22)
- Но нет ли разрешения на изменение флешки? Ниже верно сказали -
закомментировать нахер вообще весь код, что может флешку
разлочивать. - POV(11.07.2023 13:46)
- Я уже написал, что в функции записи во флеш имеется совершенно
линейный код в котором ПЕРЕД ЗАПИСЬЮ выполняется СТИРАНИЕ СТРАНИЦЫ.
Но попробовать можно. Правда все осложняется нерегулярностью
происходящего. На стенде лежат два десятка плат питающихся от
источника с таймером включения/выключения от сети и порой нужно
ждать неделю и больше. - my504(11.07.2023 14:18)
- Самое неприятное с закомментированием функции записи в том, что
непонятно что делать потом с результатом. Каким бы он ни был. Я не
могу убрать запись в продакшене. Это сохранение конфигурации
устройства при настройке. - my504(11.07.2023 15:10)
- А аппаратный патч произведенных плат возможен? - RxTx(11.07.2023 15:42)
- Не только возможен, но и необходим, по видимому. Всего плат отбраковалось порядка полсотни... - my504(11.07.2023 15:45)
- Это даст понимание. Софт портит сам себя или иное. Без этого дальше
думать не о чем. - POV(11.07.2023 15:11)
- Это точно не софт. Доступ к функции записи длинен и зело труден.
Для штатной записи нужно получить шифрованный пакет от ПО с
правильной командой на запись, которое (ПО с интерфейсным блоком)
на стенде в принципе отсутствует. Там лежат два десятка плат с
поданным питанием и маленькими петлями в разъеме антенн,
отключенными интерфейсами и индикацией и лишь на расстоянии
полметра от них включен передатчик с крошечной петлей в качестве
антенны заставляет работать эти my504(124 знак., 11.07.2023 15:26 - 15:28)
- ну да, это если логикой нормальной работы пользоваться... а если
прикинуть что при сбое, просто рандомно переходим по памяти и
попадаем на функцию записи, то всё становится гораздо проще... и
да, при ЭМСе у нас, у нас даже осциллограф некоторые функции
вспомнил =)) у него открылись функции более старшей модели, видимо
пролетело и записалось куда не нужно... sav6622(127 знак., 12.07.2023 08:49)
- Ну не верит человек. Что поделать, у нас свобода вероисповедания.
Каждый волен игнорировать те свидетельства, которые не вписываются
в его картину мира. - SciFi(12.07.2023 08:56)
- Дело не в картине мира. дело в минимизации времени для поиска
проблемы. Помимо всего прочего, вся эта история возникла не на всем
выпущенном тираже этих плат. А лишь на одной партии. Поэтому есть
версия и с проблемными чипами. А пока утром одна плата слетела с
совершенно идентичном повреждении флеша, хотя на всех BOR
максимальный. Я дописал в функцию записи во флеш пару входных
uint23 аргументов с проверкой их значения перед исполнением
стирания-записи. Типа такой двойной my504(51 знак., 12.07.2023 09:48)
- Я делал кучу блокировок дополнительных программных как можно ближе к конкретной асм инструкции записи, пофиг, только вероятность немного снижалась. ИМХО, Vit прав, говно под кварцем, мы или смд 3225, или выводной HC49S и приподнимаем на 1..2мм. - Andreas(12.07.2023 10:33)
- Это не так работает. Он прыгнет сразу на код разблокировки флеша, в
обход двойного ключа. Закон Мерфи же. Считайте, что PC
инициализируется случайно и притягивается к самому вредному коду.
Если уж делать такие штуки, я бы делал что-то типа того, что
описывает коллега выше. Максимально затруднить процу возможность
прыгнуть сразу на разблокировку флеша. SciFi(1 знак., 12.07.2023 09:53, ссылка)
- У меня пока возникла небольшая заминка. Видимо года три назад я случайно исправил код не в том проекте и сохранил. С тех пор бэкапился проект с ошибкой. Нужно найти где баг. Где то в DSP... Вашу мысль я понял, но физика мне непонятна. Учитывая переменную длину инструкций в АРМ, представить себе, что случайно попав на произвольный адрес флеша код сможет куда то там добежать и выполнить точку входа в коде длиной в сотню килобайт - это выглядит как оголтелая фантазия. Вероятней my504(71 знак., 12.07.2023 14:51)
- Дело не в картине мира. дело в минимизации времени для поиска
проблемы. Помимо всего прочего, вся эта история возникла не на всем
выпущенном тираже этих плат. А лишь на одной партии. Поэтому есть
версия и с проблемными чипами. А пока утром одна плата слетела с
совершенно идентичном повреждении флеша, хотя на всех BOR
максимальный. Я дописал в функцию записи во флеш пару входных
uint23 аргументов с проверкой их значения перед исполнением
стирания-записи. Типа такой двойной my504(51 знак., 12.07.2023 09:48)
- Ну не верит человек. Что поделать, у нас свобода вероисповедания.
Каждый волен игнорировать те свидетельства, которые не вписываются
в его картину мира. - SciFi(12.07.2023 08:56)
- Я тоже так думал (ссылко)... POV(334 знак., 11.07.2023 15:31, ссылка)
- Это достаточно старый чип и по нему нет сведений по такого рода проблемам. Я полагаю, что проблема в обвесе чипа, но пока не пойму где. У меня была проблема с TMS320, когда на нем на ядре висела блокировка с минимально возможной емкостью, поэтому в части плат из-за разброса конденсаторов возникали глюки в виде зависаний, но без повреждения флеша... - my504(11.07.2023 15:34)
- ну да, это если логикой нормальной работы пользоваться... а если
прикинуть что при сбое, просто рандомно переходим по памяти и
попадаем на функцию записи, то всё становится гораздо проще... и
да, при ЭМСе у нас, у нас даже осциллограф некоторые функции
вспомнил =)) у него открылись функции более старшей модели, видимо
пролетело и записалось куда не нужно... sav6622(127 знак., 12.07.2023 08:49)
- +1. Для начала надо диагностировать. Так-то при некотором умении можно сделать прошивку, которая сама себя залажает и без глюков железа. - SciFi(11.07.2023 15:17)
- Это точно не софт. Доступ к функции записи длинен и зело труден.
Для штатной записи нужно получить шифрованный пакет от ПО с
правильной командой на запись, которое (ПО с интерфейсным блоком)
на стенде в принципе отсутствует. Там лежат два десятка плат с
поданным питанием и маленькими петлями в разъеме антенн,
отключенными интерфейсами и индикацией и лишь на расстоянии
полметра от них включен передатчик с крошечной петлей в качестве
антенны заставляет работать эти my504(124 знак., 11.07.2023 15:26 - 15:28)
- А аппаратный патч произведенных плат возможен? - RxTx(11.07.2023 15:42)
- Самое неприятное с закомментированием функции записи в том, что
непонятно что делать потом с результатом. Каким бы он ни был. Я не
могу убрать запись в продакшене. Это сохранение конфигурации
устройства при настройке. - my504(11.07.2023 15:10)
- Я уже написал, что в функции записи во флеш имеется совершенно
линейный код в котором ПЕРЕД ЗАПИСЬЮ выполняется СТИРАНИЕ СТРАНИЦЫ.
Но попробовать можно. Правда все осложняется нерегулярностью
происходящего. На стенде лежат два десятка плат питающихся от
источника с таймером включения/выключения от сети и порой нужно
ждать неделю и больше. - my504(11.07.2023 14:18)
- Временно выкиньте данный код записи во флеш ВООБЩЕ, и перепроверьте... - sav6622(11.07.2023 13:45)
- Если во время коммутации питания что-то жёсткое с цепями питания
происходит, не следует удивляться таким чудесам. Чтобы исключить
эту версию, можно повесить внешний супервизор и посмотреть, будет
ли разница. Кстати, на днях видел блуждающий HardFault (правда, на
STM32L431), и единственным видимым объяснением была просадка Vdd на
0,5 В на единицы микросекунд, пока Vdda оставался стабильным. Некая
нагрузка коммутировалась рядом. - SciFi(11.07.2023 13:29)
- Спасибо за предложение, но это же устройство имеет версию на
AT32F407. С практически идентичной схемой - разница в двух пинах
перекинутого УАРТа, который в данной ситуации не задействован. И с
ним такого безобразия никогда не происходит... Питание на плате не
содержит импульсных преобразователей - только линейные регуляторы.
Входящее питание 24 Вольта от стандартного "кирпичика" подобного
ноутбучному. - my504(11.07.2023 13:37)
- И что это доказывает? Правильно, практически ничего. Очевидно, у
вас там что-то нештатное происходит. Следует ожидать, что
совершенно разные МК будут по-разному вести себя в нештатной
ситуации. - SciFi(11.07.2023 13:41)
- Тут вы правы. Ничего не доказывает. Но если подобное возможно, то
обычно вендор дает рекомендации для таких случаев. У меня там нет
ничего особенного. 30 мА потребления чипа берутся с линейного
регулятора LM2937-ET-3,3 на входе которого 18 Вольт. Стандартные
блокировки по всем пинам питания 0,1 мкФ типоразмера 0805. - my504(11.07.2023 13:58)
- Вендор подстелил соломку. Вот это соблюдаете, к примеру? >>> SciFi(1 знак., 11.07.2023 14:06, ссылка)
- Воевал ровной с той же проблемой на 51м цыгнале. И не я один. На силабовском комьюнити такие же были жалобы. Производитель выкатил рекомендацию вообще исключить обращение к расширенной ОЗУ (этими командами запись в разлоченную флешку производилась). Только после этого проблема ушла. Отследить где и что не так оставалось разлоченным - не удалось.. POV(148 знак., 11.07.2023 14:05)
- Если есть кварц, то у атмеги было такое при сбое кварца. Убираешь вообще запись во флешь из кода и глюки уходят. При изменении разводки проблема ушла. - Andreas(11.07.2023 14:05)
- Тут вы правы. Ничего не доказывает. Но если подобное возможно, то
обычно вендор дает рекомендации для таких случаев. У меня там нет
ничего особенного. 30 мА потребления чипа берутся с линейного
регулятора LM2937-ET-3,3 на входе которого 18 Вольт. Стандартные
блокировки по всем пинам питания 0,1 мкФ типоразмера 0805. - my504(11.07.2023 13:58)
- И что это доказывает? Правильно, практически ничего. Очевидно, у
вас там что-то нештатное происходит. Следует ожидать, что
совершенно разные МК будут по-разному вести себя в нештатной
ситуации. - SciFi(11.07.2023 13:41)
- VDDA нельзя выше VDD - так сказано в мануалах. - bnb62(11.07.2023 13:36)
- Или вот: Vdd rise time rate 20 µs/V min. - SciFi(11.07.2023 13:50)
- VDDA соединен с VDD через резистор 10 Ом с блокировкой на VDDA 0,1
мкФ. То есть выше никак не возможно. Только ниже. - my504(11.07.2023 13:39)
- Это я SciFi. Но вообще опасаюсь применять емкости которые
заряжаются от внешних источников непосредственно на входах. Т.е.
которые могут кратковременно питать узлы камня паразитно. - bnb62(11.07.2023 13:55)
- На каких "входах"? Питание должно быть блокировано емкостями на
каждом пине. И чего вдруг запускаться автомату записи чипа? Этот
автомат должен быть сначала разблокирован. - my504(11.07.2023 14:05)
- Vdd обязательно. Я имею в виду GPIO настроенными как вход, которыми
что-либо контролируется, компарируется ли. Ну и фиг конечно знает,
что у вас делает неразблоченный "автомат" который вообще никак не
должен не стирать даже, а записывать нули. Может что-то с
бутлодырем не так? BOOT0 притянут к gnd? - bnb62(11.07.2023 14:26)
- Притянут джампером. На фото присутствует. - my504(11.07.2023 15:00)
- Vdd обязательно. Я имею в виду GPIO настроенными как вход, которыми
что-либо контролируется, компарируется ли. Ну и фиг конечно знает,
что у вас делает неразблоченный "автомат" который вообще никак не
должен не стирать даже, а записывать нули. Может что-то с
бутлодырем не так? BOOT0 притянут к gnd? - bnb62(11.07.2023 14:26)
- На каких "входах"? Питание должно быть блокировано емкостями на
каждом пине. И чего вдруг запускаться автомату записи чипа? Этот
автомат должен быть сначала разблокирован. - my504(11.07.2023 14:05)
- Это я SciFi. Но вообще опасаюсь применять емкости которые
заряжаются от внешних источников непосредственно на входах. Т.е.
которые могут кратковременно питать узлы камня паразитно. - bnb62(11.07.2023 13:55)
- Спасибо за предложение, но это же устройство имеет версию на
AT32F407. С практически идентичной схемой - разница в двух пинах
перекинутого УАРТа, который в данной ситуации не задействован. И с
ним такого безобразия никогда не происходит... Питание на плате не
содержит импульсных преобразователей - только линейные регуляторы.
Входящее питание 24 Вольта от стандартного "кирпичика" подобного
ноутбучному. - my504(11.07.2023 13:37)
- Но нет ли разрешения на изменение флешки? Ниже верно сказали -
закомментировать нахер вообще весь код, что может флешку
разлочивать. - POV(11.07.2023 13:46)
- В режиме, в котором слетает прошивка, обращения к записи во флеш
нет. То есть сама функция присутствует в коде. Однако она пишет в
задефайненый адрес (он не вычисляется) и в ней жестко присутствует
стирание страницы по этому же адресу. И этот адрес очень далеко от
начала. - my504(11.07.2023 13:22)