-
- У кортекса нет команды XOR? Будет ли обращение с исключающем или
атомарным хотя бы по последовательности выполнения инструкций, без
учёта возможного аппаратного изменения бита? Можете пояснить
детали? Пожалуйста. - Nikolay_Po(12.05.2023 16:29)
- XOR - да, выполняется за один такт (вроде как). Но ведь если работать с ODR, то нужно: 1) считать из ODR данные, 2) применить маску, 3) записать обратно (пусть даже это будет выглядеть как GPIOx->ODR |= mask, все равно это - три операции). И, как я уже говорил, это совершенно не гарантирует, что не будут повреждены другие биты порта. - Eddy_Em(12.05.2023 16:58)
- У некоторых кортексов есть BITBAND для такого. - LightElf(12.05.2023 16:37)
- Есть, только вот сколько ни придумывал я для битбанда логичного
применения, так и не придумал... Разве что одной ногой "атомарно"
дрыгать - но для этого, опять же, можно в BSRR запись сделать. - Eddy_Em(12.05.2023 16:59)
- Не у всей периферии есть BSRR. - LightElf(12.05.2023 17:06)
- Это - да. И где-то я слышал, что еще и не у всех STM32 есть BSRR на GPIO. - Eddy_Em(12.05.2023 17:29)
- Не у всей периферии есть BSRR. - LightElf(12.05.2023 17:06)
- Есть, только вот сколько ни придумывал я для битбанда логичного
применения, так и не придумал... Разве что одной ногой "атомарно"
дрыгать - но для этого, опять же, можно в BSRR запись сделать. - Eddy_Em(12.05.2023 16:59)
- У кортекса вся арифметика делается с регистрами проца.
Соответственно, загрузить значение из периферии в регистр проца,
модифицировать его, выгрузить обратно. Минимум 3 инструкции. - SciFi(12.05.2023 16:31)
- Бля... - Nikolay_Po(12.05.2023 16:33)
- Команды ж чуть ли не все трехадресные - две операнда-источника и
одни получатель. Это не на аккумуляторе. - POV(12.05.2023 16:38)
- Все операнды АЛУ - только регистры. - LightElf(12.05.2023 16:45)
- Тогда должны быть атомарными, ведь так? - Nikolay_Po(12.05.2023 16:44)
- Атомарность у армов гарантируется лишь для доступа к оперативке - LDREX/STREX, а к регистрам периферии - нет. - Eddy_Em(12.05.2023 17:02)
- Команды ж чуть ли не все трехадресные - две операнда-источника и
одни получатель. Это не на аккумуляторе. - POV(12.05.2023 16:38)
- Бля... - Nikolay_Po(12.05.2023 16:33)
- У кортекса нет команды XOR? Будет ли обращение с исключающем или
атомарным хотя бы по последовательности выполнения инструкций, без
учёта возможного аппаратного изменения бита? Можете пояснить
детали? Пожалуйста. - Nikolay_Po(12.05.2023 16:29)