Recientemente me encontré con la función de banda de bits en el núcleo Cortex-M4 y cómo proporciona una solución para evitar condiciones de carrera al alternar bits de registros. El M4 también tiene un registro BSRR dedicado para realizar la manipulación de bits atómicos en los puertos GPIO, entiendo que usar esto hace que la aplicación sea segura para subprocesos
¿Hay alguna desventaja en este enfoque en comparación con el método de lectura-modificación-escritura generalmente utilizado para alternar pines GPIO? Si no, ¿por qué se proporcionan registros GPIO_ODR para los núcleos de cortex-m? .
Supone que todas las operaciones en los puertos IO están a nivel de bit. Escribí una interfaz LCD externa hace un tiempo que usaba Px0..Px7 para la interfaz de datos y Px8 para el control de escritura. Esto me permitió transmitir directamente un píxel (color de 16 bits) a la pantalla usando una secuencia de cuatro escrituras GPIO_ODR. Si hubiera usado BSRR, habría tenido que traducir los datos de píxeles sin procesar en máscaras de bits para ese registro. Esto habría ralentizado las cosas significativamente.
No especificó la MCU particular en cuestión, pero el registro BSRR es específico para las piezas ST Micro Cortex-M.
El registro BSRR proporciona una funcionalidad similar a la función de banda de bits que forma parte de la arquitectura Cortex-M con respecto a la operación atómica.
En cuanto a si el bit-banding tiene una desventaja en comparación con leer, modificar y escribir, el principal inconveniente es que solo pueden manipular un bit a la vez.
ammar.cma
chris stratton