реклама на сайте
подробности

 
 
> Атомарность bit-banding в Cortex-M3
alt3857
сообщение Mar 10 2012, 05:01
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 94
Регистрация: 21-04-10
Пользователь №: 56 794



Привет. Возникли сомнения по поводу атомарности операции bit-banding. Во всех доках пишут, что данная операция обеспечивает атомарный доступ к битам периферии и RAM, но
компилятор Keil генерирует три инструкции:
MOV r0,#0x01
LDR r1,[pc,#28] ; @0x000012D4
STR r0,[r1,#0x64]
А если между ними произойдет прерывание?

Сообщение отредактировал alt3857 - Mar 10 2012, 05:02
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
demiurg_spb
сообщение Mar 10 2012, 13:42
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(alt3857 @ Mar 10 2012, 09:01) *
Привет. Возникли сомнения по поводу атомарности операции bit-banding. Во всех доках пишут, что данная операция обеспечивает атомарный доступ к битам периферии и RAM, но
компилятор Keil генерирует три инструкции:
MOV r0,#0x01
LDR r1,[pc,#28] ; @0x000012D4
STR r0,[r1,#0x64]
А если между ними произойдет прерывание?

Ничего страшного не произойдёт, т.к модификация бита происходит атомарно за одну инструкцию STR.
В отличие от
Код
ldr r1, [r2]
orr r1,#1
str r1, [r2]
где возникшее после первой или второй инструкции прерывание может потерять результаты своего изменения ячейки памяти по адресу [r2] из-за того что она (ячейка) была закеширована в r1 во время выполнения прерывания.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 20:25
Рейтинг@Mail.ru


Страница сгенерированна за 0.01387 секунд с 7
ELECTRONIX ©2004-2016