Acceso GPIO en Cortex-M4: lectura-modificación-escritura vs Atomic

1

Hace poco me encontré con la función de bandas de bits en el núcleo de Cortex-M4 y cómo proporciona una solución para evitar las condiciones de carrera mientras se alternan los bits de registros. El M4 también tiene un registro BSRR dedicado para realizar la manipulación atómica de bits en los puertos GPIO, entiendo que usar esto hace que la aplicación sea segura para subprocesos

Este enfoque tiene algún inconveniente en comparación con el método de lectura-modificación-escritura generalmente utilizado para alternar los pines GPIO. Si no, ¿por qué se proporcionan registros GPIO_ODR para los núcleos cortex-m, por qué no usar solo el registro BSRR Acceso pin GPIO.

    
pregunta Koundinya

2 respuestas

2

Usted asume que todas las operaciones en los puertos IO están a nivel de bits. 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 mediante 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 significativamente las cosas.

    
respondido por el Jon
1

No especificó el MCU en particular en cuestión, pero el registro BSRR es específico de las partes de 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 la banda de bits tiene un inconveniente en comparación con hacer lectura-modificación-escritura, el principal inconveniente es que solo pueden manipular un bit a la vez.

    
respondido por el Robert Sexton

Lea otras preguntas en las etiquetas