Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-окт-18 17:38

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Проблема с КЭШ
СообщениеДобавлено: 2017-окт-26 22:11 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 712
Откуда: г. Санкт-Петербург
Возникла проблема с очисткой кэша.
МК 1986ВЕ81Т
1.В память программ после сброса по SPI загружается программа из внешней EEPROM и ей передается управление.
2.Программа включает кэш и продолжает выполнение.
3.Через канал обмена(МКПД) в SRAM загружается загрузчик и ему передается управление.
4.Выполняемая из SRAM программа-загрузчик сбрасывает и отключает кэш и меняет версию програмы в памяти программ, после чего передает ей управление.
5.Новая версия программы включает кЭш и зависает или улетает в HARD FAULT(не всегда, зависит от объема корректировки версии).
Если новая версия не использует КЭШ, зависаний и HARD FAULT не происходит.
Если новая версия испльзует КЭШ и откомпилирована в другие адреса, зависаний и HARD FAULT не происходит.
Если новая версия испльзует КЭШ и загружается после сброса, зависаний и HARD FAULT не происходит.
Есть предположение, что КЭШ очищается только после сброса.
Как очистить КЭШ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проблема с КЭШ
СообщениеДобавлено: 2017-окт-31 17:36 
Не в сети

Зарегистрирован: 2017-фев-14 11:21
Сообщения: 122
Здравствуйте, Василий!
Дублирую ответ на форум.
В данной ревизии аппаратная очистка кэша выполняется только при аппаратном сбросе - например через SYSRESETREQ либо надо протирать кэши другими данными (8 x 16 байт) и кодом (64 x 16 байт).
В следующей ревизии очистка кэша будет осуществляться записью бита CLR при выключенном кэше.
Включение и выключение кэша, как и настройку WaitStates OTP, лучше производить, когда нет обращений к настраиваемому региону, т.е. необходимо расположить код включающий и выключащий кэш в SRAM.

>как протереть кэш кода и данных?
С кодом - можно скомпилировать с PIC и двигать секции на смещение 1kбайт относительно старого.
С данными - прочитать 2*8x4 слов последовательно из кэшируемой области данных, лучше бёрстами - т.е командой LDM
Для OTP обязательный код должен быть обязательно расположен в SRAM, для кэш - рекомендуется.
PIC подразумевает, что секции кода не привязаны к расположению в памяти. Но это конечно добавит сложности загрузчику по перемещению секции с ресетом.
I-cache нужно протереть 1кбайтом кода.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB