Que es ARM?
ARM inició en 1983, como un proyecto de desarrollo en la empresa Acorn Computers y en abril de 1985 presentaron su primer chip que contenía un bus de datos de 32 bits, ARM es 32 bits desde su origen.
ARM es una empresa peculiar ya que no fabrica los dispositivos si no que ofrece distintos tipos de licencias tanto sobre sus conjuntos de instrucciones como sobre sus arquitecturas.
El fabricante del dispositivo que puede ser una televisión, una cámara de fotos, una lavadora o una tablet decide si le conviene más usar el diseño propio de ARM o crear el suyo.
El trabajo de ARM es más el de un arquitecto que el de un constructor, ellos diseñan y otros lo ponen en práctica. Esos otros son empresas como Samsung, Texas Instruments, Qualcomm, Nvidia, Apple, Motorola, etc, que basan sus procesadores en diseños licenciados a ARM.
Que es Cortex M4?
Es un microcontrolador que pertenece a la arquitectura ARM7 de última generación y de los mas poderosos dentro de la gama de núcleos escalares con un set de instrucciones ortogonal que dan a este controlador gran flexibilidad y eficiencia para ejecutar código en C.
Cortex M4 es una arquitectura RISC con un conjunto de instrucciones de 32 bits. Las prestaciones de este controlador permite ya la ejecución de RTOS, Android, Linux, etc.
Dentro de un Cortex hay varios buses de datos que se vinculan a distintos periféricos, esto último es muy importante porque marca una de las grandes diferencias con un microcontrolador de 8 bits o de arquitectura “tradicional” en donde podemos tener la certeza de que cada operación dura un determinado tiempo o ciclo de CPU lo que lleva a que los tiempos en juego se pueden determinar con facilidad. En un micro de 32 bits hay varios buses y los tiempos ya no son tan fáciles de predecir puesto que otros periféricos pueden estar usando estos buses o si el micro tiene memoria cache esto altera los tiempos en juego por lo que debe usted desterrar la idea que solo basta con contar las instrucciones y multiplicar por la velocidad del bus.
Lo siguiente que puede resultar un poco confuso es que todo dentro del Cortex tiene su reloj individual que por defecto esta desconectado. Es decir entonces que para hacer uso de un módulo una de las configuraciones que debemos incluir es activar y el reloj y determinar una frecuencia de operación dentro del rango que el bus admite.
Que es CMSIS?
El éxito comercial de licenciar los núcleos de los procesadores y permitir que cada cliente pueda incorporarle a este núcleo los periféricos que necesita para sus aplicaciones específicas trae un problema que es la compatibilidad para programar estos periféricos bajo un mismo criterio, es decir que un periférico de Freescale y uno con la misma funcionalidad de STM se deberían programar de igual manera para de esta forma simplificar el trabajo y permitir a los programadores tener una forma mas flexible de elegir el hardware.
Esto es lo que hace CMSIS, genera una capa de software que separa al programador del hardware permitiendo programar en un nivel superior y con un interfaz unificada para todos los Cortex independientemente de su fabricante.
Porqué me debería interesar ARM?
Bueno, si estamos trabajando con microcontroladores y vemos que actualmente cerca del 85% de los dispositivos móviles llevan un chip ARM y que las principales empresas fabricantes de chips están trabajando con núcleos ARM, y si a esto sumamos los bajos costos, herramientas de desarrollo libres y microcontroladores que no requieren un programador específico para ser programados, es motivo al menos que justifica investigar que está pasando con ARM.