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

 
 
> Атомарная работа с данными в Cortex-M3
Rev0.0
сообщение Aug 8 2013, 18:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 3-05-13
Пользователь №: 76 718



Привет!
Почитал разные материалы про атомарные операции, никак не могу прийти к выводу в чем опасность чтения? При модификации все понятно - произошло прерывание или переключение задач в ОСРВ, которое вклинилось между инструкциями, данные испортятся.
А вот при чтении?
Возьмем функцию на Cortex-M3:
long long a;
void store(void)
{
a=0xDDCCFFEE12345678;
}
Ассемблерный код после компиляции такой:
0x00001314 493A LDR r1,[pc,#232] ; @0x00001400
0x00001316 483B LDR r0,[pc,#236] ; @0x00001404
0x00001318 4A3B LDR r2,[pc,#236] ; @0x00001408
0x0000131A E9C21000 STRD r1,r0,[r2,#0]
Если я располагаю этот код в одной задаче ОСРВ, а читаю допустим в другой, то ведь никаких проблем не будет т.к. переменная a меняется по последней инструкции? В чем подвох?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:16
Рейтинг@Mail.ru


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