Перейти к содержанию
    

Припух с кэшем. Рассинхронизация данных на STM32H743.

Товарищи,

работаю с STM32H743 под FreeRTOS.

Припух с простейшей задачкой:

Нужно стереть одну страницу флэш-памяти МК, а потом прочитать ее.

Включен кэш данных и кэш инструкций.

ErasePage();        // Стереть страницу флэш-памяти МК

ReadPage(&Data);    // Прочитать

Если проходить пошагово отладчиком, то страница стирается и потом функция ReadPage читает FFFFFFF... как и должно быть.

А если отпустить в свободный полет, то функция ReadPage читает старые данные, которые там были до стирания.

Пробовал "taskENTER_CRITICAL", "taskEXIT_CRITICAL"- не помогло.

Пробовал "__ISB(), "__DSB(), __DMB()" - всякие барьеры синхронизации. Не очень я понимаю как они работают, но и это мне не помогло.

Что посоветуете ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Решил.

После стирания поставил  SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize)

Теперь все корректно читает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...