-
- По хорошему, при работе с флэш код желательно из SRAM исполнять. - VladislavS.(08.01.2024 11:33)
- Просто позанудничаю. Вот это "xx = 100000" - ограничение числа
циклов? Зависимость от тактовой частоты и уровня оптимизации?
Пожизненный эцих с гвоздями! - SciFi(08.01.2024 11:13)
- По формальному признаку, конечно же, это непотребство. А реально важно, что оно не повиснет на этом цикле. Главное чтобы было с запасом и на максимальной скорости не было ложных срабатываний. - VladislavS.(08.01.2024 11:22)
- Этого там быть не должно, воткнул для тестов, подозревая, что в
этом месте бесконечный блок. Eddy_Em(256 знак., 08.01.2024 11:19)
- Могу предложить из интереса проверить такую гипотезу: il-2(270 знак., 08.01.2024 11:33)
- А, точно: надо запрещать прерывания до того, как блокирую флеш. - Eddy_Em(08.01.2024 12:37)
- Вот гугел вывел на похожую загадку, тоже прерывание уарт, и снова
разгадки нет. SciFi(1 знак., 08.01.2024 11:25, ссылка)
- Возможно, глюк, которого нет в errata. Надо иметь в виду. Но тогда
вообще непонятно, как сохранять настройки, если флеш кончилась..
разве что отключить сначала все прерывания и DMA, стереть флеш,
записать настройки и лишь затем перезагрузить МК. А пользователь
лишь после перезагрузки узнает, успешно ли. Вот обрадуется, если
все в дефолт будет сброшено... - Eddy_Em(08.01.2024 12:41)
- Да: ни на F103, ни на F0x2, ни на G070 я с подобным не сталкивался.
Да и тот же F303 на проекте multisteppers - там уарт работает, т.к.
управляет драйверами ШД. - Eddy_Em(08.01.2024 12:45)
- Уйх его знает. Как тока пошли МК с флэшем "вместо ЕЕПРОМ", я стал ставить рядом какую-нить 25ЛЦ64/128. У меня товарищ занимается ремонтом телеков, так какие-то, у него, натуральные кормильцы. Текущие настройки громкости яркости, номер канала и всё прочее, каждый раз записывается во флэшь и регулярно вся прошивка слетает. И у чувака библиотека прошивок, которую он за долю малую шьёт бедным юзерам. - mse homjak(08.01.2024 16:36)
- Да: ни на F103, ни на F0x2, ни на G070 я с подобным не сталкивался.
Да и тот же F303 на проекте multisteppers - там уарт работает, т.к.
управляет драйверами ШД. - Eddy_Em(08.01.2024 12:45)
- Возможно, глюк, которого нет в errata. Надо иметь в виду. Но тогда
вообще непонятно, как сохранять настройки, если флеш кончилась..
разве что отключить сначала все прерывания и DMA, стереть флеш,
записать настройки и лишь затем перезагрузить МК. А пользователь
лишь после перезагрузки узнает, успешно ли. Вот обрадуется, если
все в дефолт будет сброшено... - Eddy_Em(08.01.2024 12:41)
- Могу предложить из интереса проверить такую гипотезу: il-2(270 знак., 08.01.2024 11:33)
- Таймер там стороженной взведен. Забыл как именно галочке в st-util
называется (или наоборот не взведена). Выяснил сравнением настроек
прошивающегося и ненормального процов. То же бу были. UPD (нашёлся
скрин старой переписки) POV(157 знак., 07.01.2024 23:56, картинка)
- Не, у меня watchdog на время DEBUG отключен. А вообще, да - добавил и сброс в цикл стирания. Eddy_Em(351 знак., 07.01.2024 23:58)
- мои наблюдения - при работе контроллера флеша с секторами почему то
проц блокируется. dma блокируется. в результате при синхронная
работе модулей нарушается. во всяком случае для stm32f4xx. для
обхода косяка при правке данных во флеш - потом сразу ресет. - klen(07.01.2024 23:49)
- Это никакой не косяк, а обычный режим работы. При стирании сектора
блокируется доступ к флешу, и МК при очередной выборке команды
просто стопорится. Так что все эти циклы ожидания с пересбросом
дог-таймера на самом деле не работают. Так что вполне возможно что
происходит пересброс по дог-таймеру. - il-2(08.01.2024 10:34)
- Косяк! Нет причин останова шины команд и шины данных, если по ним
нет обращений по адресу модифицируемого сектора. Я так считаю. - klen(08.01.2024 12:11)
- Не сектора, а всей флеши. Если флешу можно читать, когда в неё пишут, её обычно называют dual-bank. - SciFi(08.01.2024 12:14)
- Watchdog отключен. И сброс по нему явно не выглядел бы как зависание. - Eddy_Em(08.01.2024 11:00)
- Косяк! Нет причин останова шины команд и шины данных, если по ним
нет обращений по адресу модифицируемого сектора. Я так считаю. - klen(08.01.2024 12:11)
- Да, иной раз косяки наблюдал. А еще, сразу после прошивки неправильно работает DMA, если пользоваться китайским st-link, у которого нога reset не работает. Eddy_Em(102 знак., 08.01.2024 00:01)
- Это никакой не косяк, а обычный режим работы. При стирании сектора
блокируется доступ к флешу, и МК при очередной выборке команды
просто стопорится. Так что все эти циклы ожидания с пересбросом
дог-таймера на самом деле не работают. Так что вполне возможно что
происходит пересброс по дог-таймеру. - il-2(08.01.2024 10:34)
- Занятненько: в отладчике обнаружил периодические заскоки по прерыванию USART1. У меня нога Rx в воздухе болтается, а внутреннюю подтяжку я что-то не включил (надо бы вообще внешнюю посильней будет поставить). На общей работе это не очень сказывалось, но вот почему-то здесь возникали косяки... Вроде и прерывания отключаю - а фиг! Eddy_Em(185 знак., 07.01.2024 23:41)