¿Qué beneficios aporta el CMSIS (estándar de interfaz de software de microcontrolador Cortex) a los microcontroladores Arm Cortex?

Realmente no.

CMSIS oculta las diferencias centrales (y solo eso) entre las familias Cortex. Por lo tanto, podría ser útil al migrar, por ejemplo, de un dispositivo Cortex M3 a un Cortex A5, porque no tendrá que volver a implementar la función de declaración, que de todos modos es trivial, que permite una interrupción, etc. No es una gran ayuda, en mi humilde opinión.

Al migrar entre dos dispositivos Cortex con el mismo núcleo, pero de diferentes proveedores de silicio, CMSIS no ayudará a ninguno. Todos los periféricos centrales son idénticos, cualquier solución patentada funcionaría de la misma manera. Sin embargo, los periféricos no básicos y no estandarizados pueden ser (en su mayoría son) muy diferentes, tendrá que implementar e integrar un nuevo conjunto completo de controladores. Esto es mucho más trabajo que abordar las diferencias mínimas de núcleo y núcleo periférico en la familia Cortex, y no hay un buen soporte para ayudar aquí. La mayoría de los proveedores de silicio ofrecen una colección de controladores, su API de integración es tan diferente como el propio hardware, y también hay una gran variación en la calidad del software.

El paquete ST es particularmente malo. Basta con mirar en la fuente y compararla con la documentación. Notará que se accede a los registros no existentes, se leen solo los bits escritos, no se realizan las configuraciones obligatorias, se violan las restricciones de tiempo, etc. Es sorprendente que su controlador USB muestre signos de vida. Eventualmente terminarás creando tus propios controladores desde cero, usando los controladores “oficiales” solo como guía. ¡Tampoco confíes en los archivos de encabezado, verifica todas las direcciones periféricas antes de usarlas! Aunque no son de la mejor calidad, tener algo funcionando de inmediato es de gran ayuda al comienzo del desarrollo.

Decidí no usar CMSIS en absoluto y no incluir ningún software del proveedor de silicio. Tendría cuidado en la misma medida al agregar partes de hardware de compañías de software también 🙂

Microcontroller Software Interface Standard (CMSIS) es una capa de abstracción de hardware independiente del proveedor para la serie de procesadores Cortex-M y especifica las interfaces del depurador. La creación de software es un factor de costo importante en la industria integrada. Al estandarizar las interfaces de software en todos los productos de proveedores de silicio Cortex-M, especialmente al crear nuevos proyectos o migrar el software existente a un nuevo dispositivo, significa una reducción significativa de costos.

El CMSIS permite interfaces de software consistentes y simples al procesador para periféricos de interfaz, sistemas operativos en tiempo real y middleware. Simplifica la reutilización del software, reduce la curva de aprendizaje para los nuevos desarrolladores de microcontroladores y reduce el tiempo de comercialización de los dispositivos.

El CMSIS consta de los siguientes componentes:

  • CMSIS-CORE : API para el núcleo y los periféricos del procesador Cortex-M. Proporciona una interfaz estandarizada para Cortex-M0, Cortex-M3, Cortex-M4, SC000 y SC300. También se incluyen funciones intrínsecas SIMD para instrucciones SIMD Cortex-M4.
  • Controlador CMSIS : define interfaces genéricas de controladores periféricos para middleware, lo que lo hace reutilizable en dispositivos compatibles. La API es independiente de RTOS y conecta periféricos de microcontroladores con middleware que implementa, por ejemplo, pilas de comunicación, sistemas de archivos o interfaces gráficas de usuario.
  • CMSIS-DSP : Colección de biblioteca DSP con más de 60 funciones para varios tipos de datos: punto fijo (fraccional q7, q15, q31) y punto flotante de precisión simple (32 bits). La biblioteca está disponible para Cortex-M0, Cortex-M3 y Cortex-M4. La implementación de Cortex-M4 está optimizada para el conjunto de instrucciones SIMD.
  • API CMSIS-RTOS : API común para sistemas operativos en tiempo real. Proporciona una interfaz de programación estandarizada que es portátil para muchos RTOS y, por lo tanto, permite plantillas de software, middleware, bibliotecas y otros componentes que pueden funcionar en los sistemas RTOS compatibles.
  • CMSIS-Pack : describe con un archivo de descripción de paquete basado en XML (PDSC) las partes relevantes del usuario y del dispositivo de una colección de archivos (llamado paquete de software) que incluye archivos fuente, encabezado y biblioteca, documentación, algoritmos de programación Flash, plantillas de código fuente, y proyectos de ejemplo. Las herramientas de desarrollo y las infraestructuras web utilizan el archivo PDSC para extraer los parámetros del dispositivo, los componentes de software y las configuraciones de la placa de evaluación.
  • CMSIS-SVD : Descripción de la vista del sistema para periféricos. Describe los periféricos de un dispositivo en un archivo XML y puede usarse para crear conciencia periférica en depuradores o archivos de encabezado con registro periférico e interrupción de definiciones.
  • CMSIS-DAP : Puerto de acceso de depuración. Firmware estandarizado para una unidad de depuración que se conecta al puerto de acceso de depuración CoreSight. CMSIS-DAP se distribuye como un paquete separado y es muy adecuado para la integración en placas de evaluación. Este componente se proporciona como descarga por separado.