Como en la kedada nadie tenia mucha idea de lo que era la arquitectura arm les transcribo un intro que escribio el ing Zaradnik de electrocomponentes.
el art original se encuentra
acaEl diseño del ARM comenzó en 1983 como un proyecto de desarrollo en la empresa Acorn Computers Ltd, cuya meta era, originalmente, el desarrollo de un procesador avanzado, pero con una arquitectura similar a la del MOS 6502. La primera versión utilizada comercialmente se bautizó como “ARM2” y se lanzó en el año 1986.
La arquitectura del ARM2 posee un bus de datos de 32 bits y ofrece un espacio de direcciones de 26 bits, junto con 16 registros de 32 bits. Uno de estos registros se utiliza como contador de programa, aprovechándose sus 4 bits superiores y los 2 inferiores para contener los flags de estado del procesador.
El ARM2 es probablemente el procesador de 32 bits más simple del mundo, ya que posee sólo 30.000 transistores. Su simplicidad se debe a que no está basado en microcódigo (sistema que suele ocupar en torno a la cuarta parte de la cantidad total de transistores usados en un procesador) y a que, como era común en aquella época, no incluye caché. Gracias a ello, su consumo en energía es bastante bajo, a la vez que ofrece un mejor rendimiento que un procesador del tipo “286”. Su sucesores, ya incluyen memoria caché, lo que mejora los accesos a memoria repetitivos, pero a expensas de hacer un poco más complejo el núcleo del procesador.
El éxito de estos primeros dispositivos “ARMs” dio paso a creación de la compañía Avanced Risc Machines que sería la encargada del diseño y gestión de las nuevas generaciones de procesadores ARM.
El núcleo mantuvo su simplicidad a pesar de los cambios, en efecto, el ARM2 tiene 30.000 transistores, mientras que el ARM6 sólo cuenta con 35.000. La idea era que el usuario final combinara el núcleo del ARM con un número opcional de periféricos integrados y otros elementos, pudiendo crear un procesador completo a la medida de sus necesidades.
De esta forma se abrió paso al otorgamiento de licencias a otros fabricantes de microcontroladores como Freescale, STMicroelectronics, y Atmel entre otros tantos.
El diseño del ARM se ha convertido en uno de los más usados del mundo, desde discos duros hasta juguetes. Hoy en día, cerca del 75% de los procesadores de 32 bits poseen este chip en su núcleo.
Mirando un poco más adentro...
El juego de instrucciones del ARM es similar al del MOS 6502, pero incluye características adicionales que le permiten conseguir un mejor rendimiento en su ejecución. Para mantener el concepto tradicional de RISC, se incluyó el comando de ejecución en un tiempo bastante bueno, siendo por lo general, en un ciclo. La característica más interesante es el uso de los 4 bits como código condicional en la parte superior de cada instrucción, haciendo que cada instrucción pueda ser una condición.
Este corte permite aumentar el espacio para algunos desplazamientos en el acceso a la memoria, pero también permite evitar caer en ciclos fuera de control cuando la aplicación sea para pequeñas instrucciones condicionadas.
Otra característica única del juego de instrucciones es la posibilidad de añadir shifts y rotar en el procesamiento de datos (aritmético, lógico y movimiento de registros), por ejemplo, la instrucción en C "a += (j << 2);" puede ser mejorada como una instrucción simple en el ARM, permitiendo la reubicación del registro.
Todo esto ocasiona que se necesiten menos operaciones de carga y almacenamiento, mejorando el rendimiento. El procesador ARM también tiene algunas características que son raras en otras arquitecturas también consideradas RISC, como el direccionamiento relativo, y el pre y post incremento en el modo de direccionamiento.
Tiene dos modos de funcionamiento: el ARMI con instrucciones que ocupan 4 bytes, más rápidas y potentes (hay instrucciones que sólo están en este modo) pero con mayor consumo de memoria y de energía, y el modo THUMB, más limitado, con instrucciones que ocupan 2 bytes y con menor consumo de corriente.
Con el modo Thumb, se pretende disminuir la cantidad de código escrito, así como mejorar la densidad del código, el rendimiento puede ser superior a un código de 32 bits en donde el puerto de memoria o ancho del bus de comunicaciones sean menores a 32 bits. Por lo general en aplicaciones inserta un pequeño rango de direcciones de memoria con un datapath de 32 bits, y el resto son 16 bits en modo wide o narrower.
Veamos que dispone cada fabricante...
STMicroelectronics
La familia STR750F es una opción muy interesante que dispone ST Microelectronics basada en el core ARM7 de 32 bits “ARM7TDMI” que constituye un estándar en el mundo ARM. Combina en un solo dispositivo gran cantidad de memoria, un set de periféricos muy completo y muy bajo consumo.
Ofrece una muy buena perfomance de 54 MIPS a 60 Mhz de Bus, con un consumo de solo 10 uA en el modo “StandBy” y puede operar tanto en 3,3V como en 5V.
Características destacadas:
• Reloj de Backup en caso de falla del reloj a cristal principal.
• Rápida capacidad de arranque desde los modos de Reset y bajo consumo.
(tan solo 55 uS en ejecutar la primera instrucción).
• En los modos de bajo consumo, se puede activar la función AWU (Auto Wake up)
Que permite despertar al MCU sin necesidad de señales externas o cristal.
• Timers de 16 bits flexibles y PWM Timer con clock rápido y capacidad de sincronización.
• 3 módulos UART con soporte para protocolos LIN.
• Interface SMI (Serial Memory Interface) para sencilla conexión con memorias
FLASH SPI externas para almacenamiento de datos.
Atmel
En el caso de Atmel, la familia AT91SAM7xx constituye la mejor opción para nuestro mercado, basada también en el popular core “ARM7TDMI”, esta familia ofrece una gama muy amplia en capacidad de memoria FLASH, SRAM y cantidad de pines de encapsulado.
También ofrece un muy bajo consumo en relación a la velocidad de procesamiento y la incorporación de un módulo interno de Emulación en Tiempo Real denominado “EmbeddedICE™ In-circuit Emulation” , que permite contar con herramientas muy poderosas.
Freescale
La línea “i.MX” de freescale está basada en el core ARM9 y sus versiones y está orientada a las aplicaciones de muy altas prestaciones, tanto en la capacidad de procesamiento como en el manejo de la capacidad gráfica del producto. Se incorporan controladores de LCD y otros módulos multimedia que hacen muy completo el manejo de entornos gráficos.
Con encapsulados típicos BGA (Ball Grid Array) de alta densidad de conexiones, dispone de una gran cantidad de líneas de I/O y de conexiones con sus distintos periféricos con el mundo exterior.
Las sub familias que integran el mundo “i.MX” son las siguientes:
• i.MX1
• i.MX21 / i.MX21S.
• i.MX27
• i.MX31.
• i.MXL.
• i.MXS.