DmitryR 0 12 ноября, 2021 Опубликовано 12 ноября, 2021 · Жалоба Добрый день, пытаюсь использовать subj. Получаю новую прошивку, записываю её с адреса 0x08100000, инвертирую признак. Первый раз это проходит. Но во второй раз (когда swap включен) получаю ресет вскоре после начала стирания. Стирание банка или посекторно не влияет. Если выключить swap - опять всё работает. Отсутствие запрета записи секторов и прочей flash security проверил. То, что все регистры переворачиваются, учёл, то есть я стираю всегда банк 2. Чип ревизии V. Из утилиты пробовал стирать - стирает. Проверил, что не watchdog. Проверил, что не вызывается HAL_NVIC_SystemReset(). Что бы это могло быть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jeka 0 6 декабря, 2021 Опубликовано 6 декабря, 2021 · Жалоба А трассировка момента стирания не смотрели на какой инструкции валится (если по одной ассемблерной инструкции трассировать)? И что в дампе флеш памяти после ресета? Возможно, стираете текущий исполняемый код. Не уверен что меняются местами регистры между собой при переключении банков. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 9 декабря, 2021 Опубликовано 9 декабря, 2021 · Жалоба Фокус в том, что при трассировке не валится. Да просто если после стирания поставить точку останова и потом запустить дальше, что всё работает. Код я не стираю, так как запрограммировал MPU не давать доступа к стираемому сегменту. Регистры местами меняются, это написано в документации очень чётко, и проверено. Не исключено, что тут есть какой-то баг, так как в ревизии Y это не работало вообще. Но пока не вижу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться