Tutorial de ARM Cortex

Hola amigos
Soy aficionado al modelismo naval y en ese contexto a la electrónica. He hechos algunos trabajos basados en los AVR de Atmel, pero para lo que sigue quiero pasar a los controladores del tipo ARM y allí en especial a los Cortex-Mx. He estado mirando los hilos sobre temas relacionados con esto aquí en el foro y me decidí, favor corregirme si me equivoco, que abrir un hilo propio tiene mucho sentido.

Para juntarlo en un lugar permítanme porfavor definir lo que es ARM en general y los Cortex-Mx dentro de esto.

ARM es un tipo de controlador que es definido, desarrollado, por una empresa llamada ARM y que vende licencias a diversos productores de circuitos integrados. Significa que no existe un controlador ARM de la empresa ARM que se pueda comprar, como se hace con los PIC o los Atmel.

La ventaja de esto es, que existe una parte que define los miembros de la familia ARM, define las instrucciones y su implementación en silicio, que define una abstracción en Software de cada miembro de los ARM. Por esa razón programas escritos para ciertos miembros de la familia ARM son muy similares para todos los productos del mismo miembro de la familia ARM y que son realizados por las empresas que compran una licensia de ARM para este miembro. Cada productor por lo tanto usa la misma implementación del miembro de ARM e implementa la periferia de acuerdo a sus conceptos propios. En solo eso, la periferia, se diferencian los productos de diferentes productores de miembros de la misma familia ARM!

Como en muchos campos, los ARM se han ido desarrollando por lo que existen miembros antiguos y miembros modernos. Yo, interesado en el uso de los ARM, como reemplazo de los Atmel AVR, solo estoy interesado en los productos nuevos de las familias de los Cortex-Mx.

Esto es para diferenciarlos claramente de aquellos miembros de ARM, que por ejemplo están previstos para usar con los sistemas operacionales Linux y/o Windows 8, que si entendí bien, son los miembros mas potentes, como los ARM 7 o 9 por ejemplo. Estos, ya prefiero llamarlos procesadores y no controladores, ya son tan complejos que mas vale dejarle al sistema operacional la labor de manejar los detalles del Hardware y limitarse a escribir o “drivers” para periferias o aplicaciones que andan dentro del medio ofrecido por el sistema operacional.

Si bien entiendo, aunque no lo estudié de forma exhaustiva, los Cortex existen en 4 familias y están empesando a aparecer subfamilias nuevas relacionadas a estas 4 familias como por ejemplo los Cortex-M0+.
Son los:
Cortex M0 (M0+)
Cortex M3
Cortex M4

Estos últimos, los Cortex M4 creo que ya van más en dirección a ser usados con sistemas operacionales y no les he puesto atención. Creo que hay que limitarse para no perderse y creo que para los objetivos que tengo, uso como afición en reemplazo de PICs y Atmels, por ejemplo, los Cortex M0 (m0+) y M3 más que cubren toda la gama que pueda ser de interés.

Así pues Los ARM Cortex M0 (M0+) y los Cortex M3 son a los que recomendaría concentrarnos, si comparten mi opinion que vale la pena crear un ecosistema en Español.
Aquí en el foro, relacionado a los ARM, ya se ha hablado de varias alternativas y creo, al igual que existen fervientes seguidores de las familias de los PIC y de los Atmel, a veces casi religiosa la afición a una de estas familias y la antagonía a las alternativas, esto también se puede aplicar a los ARM. Quiero mencionar, quizá como prueba que no se debe a la hardware o disponibilidad de alguna placa, que he recibido de forma gratuita un STM32F0-Discovery!

Como resultado de lo expuesto arriba quiero subsumar:
Nos concentramos en los ARM Cortex Mx, donde gracias a los esfuerzos de estandardisación y compatibilidad de la empresa ARM, cualquier software escrita se puede, con adaptaciones menores, hacerse andar en los productos de otro proveedor, dependiendo básicamente de la disponibilidad de la perferia usada en el programa y siguiendo ciertas reglas implementadas en el CCS creo que se llama, que si bien lo he entendido es una interfaz de programación que permite ocultar lo específico de la hardware ante un programa en la lengua “C” y que require incluir las bibliotecas que contienen la información especifica.

También yo estudie los diferentes proveedores y deje que experiencias previas me influenciaran. Hace mucho tiempo trate de usar un Cortex M3 STM32 de STMicroelectronics, y habiendo solo trabajado con BASCOM, fui incapaz de hacer funcionar la "toolchain". Y lo traté. Estoy seguro que mis capacidades como programador son miserables. Pero eso creo que es de importancia cuando se trata de usar los Cortex Mx como afición, no se debe empesar luchando una larga y tediosa lucha por poder escribir el primer programa que hace blinquear un LED. Esa "toolchain", o serie de programas que en conjunto generan código capaz de ejecutarse un controlador, debe ser creada de forma automática durante la instalación automática. Considero esto un criterio decisivo.

El segundo criterio igualemente decisivo es la posibilidad de establecer un medio para programar y encontrar erroes (debugging) lo mas económico posible.

El tercer criterio es lo que se gusta llamar "ecosistema". Bajo "ecosistema" se entiende toda la infraestructura de apoyo que exista.

El cuarto criterio para mí es la disponibilidad y los costos de las componentes.

5. La gama de controladores y la estabilidad del proveedor.

Como ya tuve problemas que me dejaron desistir de resolverlos de usar Studio de Atmel para programar los controladores de este proveedor en la lengua "C", el criterio "1" saco Atmel como posible proveedor para mí. Comparado con BASCOM no era competitivo para mí!
Admito que mis problemas de establecer la toolchain para el STM32 es el criterio que me hizo no tomar STM como proveedor.

Bajo los criterio "1", "3" , "4" y "5" la decisión admitida como dificil ya, que comparables según estos critrios y realemente son totalmente equivalentes fue entre TI y NXP.

El criterio "2", personalizado por los LPCXpresso, una gama de placas muy económicas para muchos de los elementos de NXP de los controladores Cortex Mx con su interfaz JTAG incluido es el criterio que me hizo seleccionar los controladores de NXP, LPCxxxx, como productos que pienso utilizar. Estas placas LPCXpresso representan todo un sistema completo para el desarrollo y para el uso de Cortex Mx. La toolchain es gratuita hasta 128kByte a grabar en un controlador, lo que es muchísimo para empesar y existe la psibilidad a bajo costo ampliar esto a 256kB y/o 512kByte, el tamaño máximo que existe hoy en día como memoria flash en los controladores Cortex Mx.

Es más, reflexionado sobre el tema durante mis paseos con mi perro en los campos y bosques del alrededor, si considero el costo de solo 20.- Euros para una de estas placas, el uso de estas placas de forma similar a como se hace con los Arduino, se compra la placa y se usa esta, la justificación de hacer una placa propia para el controlador se pone dificil de justificar y definitivamente no es mucho mas caro que hacer una placa comprando las componentes uno mismo. Se le puede quitar aquella parte que contiene la interfaz JTAG, reduciendo su tamaño aún mas! Es mas existe un elemento de biblioteca para el programa de diseño de circuitos y placas Eagle, que representa el LPCXpresso! Así es posible construir una placa en lo cual se inserta la placa LPCXpresso y que implementa las funciones de nuestra aplicación. Así hasta en la aplicación definitiva se tiene una interfaz USB que permite actualizar el programa usando el "bootloader", un programa que es capaz de recibir un programa atravez de la interfaz USB y grabarlo en la memoria flash del controlador.

Por esta razón progonga aquí, si a alguién le parece de interés, trabajar en conjunto para crear un ecosistema para los ARM Cortex Mx en la lengua Española aquí. Esto también tiene razones egoistas. Como aficionado a la electrónica en el modelismo naval, he estado evangelizando el uso de electrónica autodesarrollada en mi afición y como soy de nacimiento Suramericano, esto lo hago en foros de esta nuestra lengua!
 
Última edición:
Pues no estaria mal... aunque personalmente me gustaria enfocarme en la gama alta de ARM (yo tengo un ARM7TMI :LOL:) de todos modos me parece que las herramientas son casi las mismas.. ya que el 7 es el mas chico de los mas grandes.. asi que me imagino que se puede usar para ambos campos.. :unsure:

De todos modos cambie el titulo para diferenciarlo de los procesadores grandes....
 
También para mi sería interesante poder participar leyendo algo similar a lo que hago aquí, y que ojalá encuentre otros foristas para participar, en los ARM grandes.
Dentro de mi proyecto de modelismo naval, una tarea que seguro que no completaré mientras Dios me permita dedicarme a mis aficiones, también está la construcción de una emisora. Mi idea es combinar salgo estilo iPad con los controles clásicos y un XBee pro. primero mi intención era usar una tableta con el Windows 8 integrado, pero la explosión en la disponibilidad de Apps para Android abre el camino a usar una tableta con Android integrada y comunicarse con la hardware dedicada a las funciones del radio control por USB. de allí resulta que tus intereses en los ARM grandes es complementario, porque es imposible tratar de hacer todo a la vez.
Eso sí, el avanze de este proyecto de mi parte será lento, pues en paralelo sigo construyendo la infraestructura mecánica de mi velero.
El cambio del título me parece muy bueno y lo agradezco!
 
Eso es lo que me gusta de las placas LPCXpresso, que ya viene incluido en la placa, la placa es sumamente económica, solo 23,- Euros y todo el sofware es gratuito hasta 128kB de código, lo que es muchísmo.
Pero desde mañana haré mayores cambios a mi taller, lo que me tenfrá ocupado el resto de la semana, le siguen los trabajos mecánicos. ya llegará el día que empieze a experimentar con mi placa.
 
hola yo estoy comenzando con ARM7 TDMI (LPC 2148) y estoy preparando un tutorial bien basico en español con ejercicios practicos ,,, lo que me doy cuenta ahora es que por aca (argentina) el LPC2148 no se consigue !! yo lo obtuve por un regalo de un amigo de Chile.... ( los chilenos son amigos de los ingleses por eso jajaaj cuando le digo eso siempre me dice: los chilenos no ayudamos a los ingleses para que Argentina pierda la guerra con los ingleses esos fueron los dictadores de nuestro pais, igual yo siempre se lo repito cuando necesito algo y asi se enoja y despues me regala mas cosas jaajaj XD!) aca en Argentina si se consigue el Cortex M3 pero queria preguntarles cuales son las diferencias con el ARM7 TDMI , a que se refieren cuando dicen que los Cortex son gama baja respecto a ARM7,,,como hubicarlos haciendo una linea desde pics hasta lo mas potente que creo q son los ARM11. saludos
 
Yo hace unas semanas estoy usando la placa de prueba stm32f4discovery que viene con el programador, un micro stm32f407, unos cuantos leds, un botón, acelerometro y varias cosas mas. El micro es un cortex m4 funcionando a 168MHz con 1MB de memoria y 192KB de RAM. Estoy programando con Keil uvision4 que es el compilador "oficial" de ARM.
La verdad es que es por mucho el micro mas complicado que me a tocado usar y hasta ahora solo he podido prender y apagar leds, leer botones, usar algunos timers y unas pocas interrupciones, claramente aun me falta bastante.
 
Les dejo un resumen de los LPC21xx en word 2007 basado en las hojas de datos sobre el uso de:

- PLL
- Timers
- Interrupciones
- ADC
- Puerto Serie

De todas formas, lo mejor es tener siempre las hojas de datos a mano.
 

Adjuntos

  • Referencia ARM.rar
    144.8 KB · Visitas: 417
Hola amigos:
Yo me he grabado la conclusión que los ARM Cortex Mx son aquellos para sistemas embebidos, controladores realmente, los 7 o 9 son algo equivalente al los procesadores. En ellos se esperaría instalar por ejemplo Linux. Como no es posible aprender todo al tiempo yo me limito a los Cortex. Lo que si puede hacer sentido es instalar el FreeRTOS, un sistema operacional gratuito para sistemas embebidos donde se trata de mantener la cantidad de código al mínimo requerido. del resto pienso haber explicado mis criterios arriba! Existe en Youtube un curso de iuntroducción de un brasilero muy bueno. Busquen en Google bajo "Tutorial LPC1769"
 
Hola,
Me gustaría tener una LPCXpreso, personalmente he trabajado con el LPC1768 pero con la tarjeta de desarrollo MBED, el compilador es en C++, esta en Internet y hay mucha ayuda, existen montones de librerías y la comunidad esta creciendo, aunque he trabajado con casi todos sus periféricos a sido usando las librerías (que son libres) y teniendo en cuenta que una de las ventajas de ARM es potabilidad pienso que se podrían usar en otro compilador.

Gracias a estas librerías y a que el compilador es en c++ (para lo cual están optimizados los cortex) me he podido dedicar mas al procesamiento que a la interacción con los periféricos.

desde hace unos días empece un blog, en el cual pienso ir mostrando como usar esta placa, por ahora solo he puesto un par de post en los que hago una breve introducción (mas bien Histórica) de ARM y pienso publicar lo que he hecho hasta el momento.

Me uno a Hellmut1956, seria bueno proponer un proyecto e iniciar a trabajar en el.
 
Hola Carlos
Tu sabes si existe algún lugar en la argentina para conseguir los LPCXpresso localmente? Cuando yo miré hace ya algunos años los ARM en general y el STM32 en especial, fui incapaz de armar la cadena de herramientas (tool chain). Por eso mi decisión entre otros factores paso a los ARM de NXP (antiguamente Philips). Ahora se ha demostrado que el LPCXpresso, quitándole la parte de la interfaz JTAG, es probablemente tan pequeña como si la hiciera yo mismo y no cuesta mas que comprando las componentes por separado, antes cuesta menos. Si a esos argumentos le sumamos el reto que representa crear una placa para un escarabajo de tantas patas tan juntas, y también hacer el Layout en Eagle por ejemplo, por esome he decidido usar el LPCXpresso en mis aplicaciones en vez de crear mis propias placas. Ademas como efecto lateral muy práctico se puede implementar el acceso al controlador por JTAG por si hay que tocar el controlador en la placa definitiva.
 
Tu sabes si existe algún lugar en la argentina para conseguir los LPCXpresso localmente?

Pienso que acá podés conseguir algo: http://www.micros-designs.com.ar/foros/index.php?topic=88.0

Buscar en Mercadolibre: MLA-431533686-placa-microcontrolador-lpcxpresso-nxp-arm-cortex-m0-lpc1114-_JM

Buscar en Mercadolibre: MLA-431121535-placa-microcontrolador-lpcxpresso-nxp-arm-cortex-m3-lpc1769-_JM

Hay lugares para conseguir las placas y el precio, teniendo en cuenta lo dificil de traer las cosas de afuera, creo que está muy bien.

Saludos !
 
Si se quiere compartir y aprender en equipo sería muy recomendable usar la misma plataforma desde el punto de la Hardware y de la Software. En general se dice que ARM como parte de su licencia para los controladores Cortex requiere la implementación de una HAL común. HAL est para "hardware abstraction layer" y no significa mas que todas las las peripferias equivalentes tienen que poder ser usadas por los programas atravez del HAL en una forma común en todos los ARM Cortex Mx, asumiendo que la periferia exista en un controlador.
Eso lo voy a verificar que tan facil es, cuando este invierno o primavera en el hemisfeerio norte, trataré de pasar una Software que existe para un ARM Cortex M0 de samsung. Se trata de la Software de la placa StepRocker de la empresa Trinamic que uso para estudiar los sistemas que pienso implementar en mi velero usando motores de paso con las componentes TMC 249 y TMC261, MOSFETS integrados. La placa StepRocker tiene la denominación TMCM1100.
Yo recomendaría usar la placa LPCXpresso 1769 y su correspondiente IDE. La placa aquí en Europa cuesta aprox. 23,- Euros e incluye la interfaz JTAG que permite grabar los programas en el controlador y el "debug", la búsqueda de errores permitiendo mirar dentro del controlador el valor de todos los registros y de las variables etcétera. 23.- Euros me parece un costo adecuado para experimentar hasta el límite de 128kB de programa y datos en la memoria Flash lo que es bastante sin costo adicional. Existe la posibilidad de aumentar el límite a 256kBytes o 512kBytes a costos muy moderados.
Moyano, no se si te entendí correctamente. La IDE se puede descargar de forma gratuita del web, pero funciona local en el PC! Lo que a mi me gusto mucho es que instala toda la cadena de herramientas de forma automática y genera todo lo que se requiere para compilar y grabar el el controlador bajo control de wizards totalemente automático.
Como saben, en los sistemas embebidos el "Hla Mundo" es el blinqueo de un LED y eso entre muchísimos otros ejemplos de puede compilar y grabar en cosa de minutos sin tener que perder semanas tratando de lograr ese objetivo.
 
Última edición:
Yo tengo como 4 años con esos micros y no me sale a cuenta al menos que me fabrique un montón de placas, por el momento mis proyectos no necesita mucho velocidad de proceso.
Pero si tengo muchos cortex lo uso poco.
Vi muchos proyectos en los foros pero en eso queda.
 
Muy intersante el tema quisiera saber si alquien tiene informacion de los ARM de atmel los SAM7 y que compiladores usan

Podés usar ATMEL studio 6 para programarlos, además tenes la posibilidad de usar la herramienta para programar en C/C++ los microcontroladores de 8 bits / 16 bits de la misma marca.

Saludos !
 
Atrás
Arriba