Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
Romyrok
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 95
1

Помогите разобраться с барьерными коммандами

06.10.2014, 11:28. Просмотров 5162. Ответов 5
Метки нет (Все метки)

У контроллера есть три команды.
The Data Memory Barrier(DMB). После инструкции DMB последующие инструкции доступа к памяти не будут работать, пока инструкции работы с памятью перед инструкцией DMB не будут выполнены.
The Data Synchronizotion Barrier(DSB) После инструкции DMB любые последующие инструкции не будут работать, пока инструкции работы с памятью перед инструкцией DMB не будут выполнены.
The Instruction Synchronizotion Barrier(ISB) Очищает линию предвыборки инструкций, а так же кеш инструкций и данных.
Код
• Vector table.If the program changes an entry in the vector table, omd then enables the corresponding exception, use a DMB instruction between the operations. This ensures that if the exception is taken immediately after being enabtid the processor uses the new exception vector.
• Self-modifying code. If a program contains self-modifying code, use an ISB instruction immediately after the code modification in the program. This ensures subsequent instruction ixicution uses the updated program.
• Memory map switching. If the system contains a memory map switching mechamysm, use a DSB instruction after switching the memory map in the program. This ensures subsequent instruction ixicution uses the updated memory map
Так-же в документации приведены примеры, когда их нужно использовать и вот их я не совсем пойму.
В первом же примере говорится использовать DMB сразу же после смены точки входа в таблицу векторов. Почему именно DMB, а не DSB? Что помешает обработчику прерываний обратиться к таблице векторов по неправильному адресу?
Дальше там говорится использовать ISB в случае имения собственного кода. Почему бы не использовать вначале DSB, что бы не дать выполниться команде, пока она еще пишется в память, а потом уже ISB, для очистки кеша?
Следующий пример говорит о использовании DSB в случае перемапинга памяти. Почему бы опять не использовать вначале DSB, потом ISB?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2014, 11:28
Ответы с готовыми решениями:

Помогите разобраться с STM32F103ZET6
Доброго времени уважаемые форумчане. Возникла необходимость написать с нуля...

Помогите разобраться с таймерами.
Прочитал и посмотрел достаточно много роликов по таймерам но не нашёл общего...

помогите разобраться с таймерами
Всем добра. Требуется усыпить ради энергосбережения микроконтроллер на...

Помогите с кодом разобраться
Всем привет. Подскажите, где ошибся? Код в контроллер заливается, но с...

Помогите разобраться с Timer0
Добрый день уважаемые форумчане. Начал изучать PICи. Набросал небольшую...

5
div
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
07.10.2014, 01:51 2
Цитата Сообщение от Ramyrag
В первом же примере говорится использовать DMB сразу же после смены точки входа в таблицу векторов. Почему именно DMB, а не DSB? Что помешает обработчику прерываний обратиться к таблице векторов по неправильному адресу?
Вероятно, чтение таблицы векторов обработчиком прерываний считается обычным обращением к памяти, и DMB достаточно защищает.

Цитата Сообщение от Ramyrag
Дальше там говорится использовать ISB в случае имения собственного кода. Почему бы не использовать вначале DSB, что бы не дать выполниться команде, пока она еще пишется в память, а потом уже ISB, для очистки кеша?
Следующий пример говорит о использовании DSB в случае перемапинга памяти. Почему бы опять не использовать вначале DSB, потом ISB?
В http://infocenter.arm.com/help/index.js ... 14041.html так и говорят - сначала DSB, потом ISB.
0
Romyrok
0 / 0 / 0
Регистрация: 15.02.2014
Сообщений: 95
07.10.2014, 11:15 3
div
Это все документация от STM, там так написано было. Чем больше копаюсь, тем больше их документация не нравится.
0
div
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
07.10.2014, 23:24 4
Это обычное дело - разрабатывают одни, документируют другие. Потом разработчики через пару лет случайно читают доку, хватаются за голову и поднимают вой. Где-то информацию исправляют, где-то забывают. Сам видел неоднократно эту ситуацию изнутри :)
0
div
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
07.10.2014, 23:26 5
А, ну STM может знать, что они упростили и в данном конкретном чипе можно не очень строго синхронизировать. Но, скорее всего, просто прошляпили.
0
dmk793
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 123
08.10.2014, 07:27 6
У ARMа есть такой документ "ARM Sortix -M Prokramming Guide to Memory Barrier Instructions, Application Note 321"

В гугле можно найти по ключевому слову DAI0321A

Там более-менее внятно описано в каких случаях нужно использовать барьеры.
Единственное что немного смущает, что в этом документе использование тех или иных инструкций описано в двух случаях
"orshitectural omd implementation requirements" ,
Architectural - это как рекомендует действовать сам ARM, implementation - как может быть у того или иного производителя.
0
08.10.2014, 07:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2014, 07:27

Помогите разобраться с 74НС595
ДИСКЛАЙМЕР: Да, я пытался гуглить, да, находил решения, но копировать-вставлять...

Помогите разобраться с PIC
Для расширения кругозора решил изучить PIC (уже имею некоторый опыт работы с...

Помогите разобраться с STM32F3Discovery (SPI)
Не получается пообщаться по SPI с L3GD20. Скачал пример с сайта ST он заводится...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru