Как спасти безнадежный код ничего не делая по существу STM32
Добавлено: 17 июн 2020, 18:25
Один из пользователей засветил проблему, когда "Уже не первый раз сталкиваюсь с таким явлением на разных процах STM32 (F103xx, F205xx...)
Программа работает отлично при подключённом отладчике.
Как только компилится релиз и программа запускается без подключённого отладчика (при чём акцент именно на этом), схема работает нестабильно.
Точнее просто через некоторое время зависает."
Мое Объяснение проблемы: Отладчик и в самом деле влияет на стабильность работы. Для того чтобы понять, как это происходит, нужно иметь ввиду, что отладчик напрягает шину процессора работающую по спецификации AMBA2 (Амба - жаргонизм: конец, конец всему, логическое завершение начатого, шутка) про нее и читайте. Физически подключенный отладчик (даже если он не выполняет команды) изменяет логику арбитража шины AHB и APB. Сигнал SWCLK заставляет приоритеты "вращаться". Так,что это помогает против лени программиста и, одновременно ставит его в тупик... Следовательно есть очень важное свойство SWCLK изменяя его частоту вы можете "вращать" приоритеты как Вам удобно будет. Попробуйте изменять частоту SWCLK и, заметьте его частоту, когда вновь начнутся сбои, период SWCLK даст Вам дополнительную информацию о критическом времени захвата шины для Вашей блок схемы. Иными словами есть возможность измерить Ваш код в смысле арбитража шины AMBA2....
Решение: Спасибо Вам за этот уникальный вопрос. Вы, невольно, подсказали всем путь, как можно позволить себе лениться, или спасти безнадежный код (особенно если он чужой и работает в готовом устройстве). Для этого нужно выбрать частоту SWCLK при которой становиться лучше и, подать ее на постоянной основе. Я проверил на своем "дефектном коде" и, это работает отлично!!!
P.S. Как говориться, Вы любите DMA?, тогда мы идем к Вам...
Программа работает отлично при подключённом отладчике.
Как только компилится релиз и программа запускается без подключённого отладчика (при чём акцент именно на этом), схема работает нестабильно.
Точнее просто через некоторое время зависает."
Мое Объяснение проблемы: Отладчик и в самом деле влияет на стабильность работы. Для того чтобы понять, как это происходит, нужно иметь ввиду, что отладчик напрягает шину процессора работающую по спецификации AMBA2 (Амба - жаргонизм: конец, конец всему, логическое завершение начатого, шутка) про нее и читайте. Физически подключенный отладчик (даже если он не выполняет команды) изменяет логику арбитража шины AHB и APB. Сигнал SWCLK заставляет приоритеты "вращаться". Так,что это помогает против лени программиста и, одновременно ставит его в тупик... Следовательно есть очень важное свойство SWCLK изменяя его частоту вы можете "вращать" приоритеты как Вам удобно будет. Попробуйте изменять частоту SWCLK и, заметьте его частоту, когда вновь начнутся сбои, период SWCLK даст Вам дополнительную информацию о критическом времени захвата шины для Вашей блок схемы. Иными словами есть возможность измерить Ваш код в смысле арбитража шины AMBA2....
Решение: Спасибо Вам за этот уникальный вопрос. Вы, невольно, подсказали всем путь, как можно позволить себе лениться, или спасти безнадежный код (особенно если он чужой и работает в готовом устройстве). Для этого нужно выбрать частоту SWCLK при которой становиться лучше и, подать ее на постоянной основе. Я проверил на своем "дефектном коде" и, это работает отлично!!!
P.S. Как говориться, Вы любите DMA?, тогда мы идем к Вам...