ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
10 марта
1575123 Топик полностью
Nikolay_Po (Сегодня, 01:14, просмотров: 86)
RISC-V QingKe-V4C. Как воспользоваться инструкциями атомарного доступа? Нужно взвести/сбросить бит в регистре периферии, при этом, сброс/взведение бита в обычном случае - это R-M-W, которые могут быть прерваны другим процессом, чего хотелось бы избежать без блокировки прерываний. 

Есть ли возможность сделать модификацию бита, пусть и с R-M-W, но атомарно без взаимодействия с контроллером прерываний, без прямой блокировки прерываний?

Вот что написано в мануале по ядру:

Core Model: V4C

ISA: RV32IMAC


"A": Support atomic instructions, simplify lr and sc instructions, and only execute them as LW and SW, and the return of sc results is always successful.


Оно вообще как, применимо для задачи? Мне нужно менять настройку вывода порта GPIO, при этом, другие процессы, тоже могут захотеть поменять настройки другого вывода того же порта GPIO. И их R-M-W могут пересечься в прерывании, разрушив слово конфигурации порта. Чтобы избежать такого, можно блокировать прерывания перед изменениями бит. Но это относительно долго Может, можно изящнее, какими-нибудь атомарными интринсиками компилятора или, хотя бы, ассемблерной вставкой?