Empezar con microcontroladores ARM.

Yo también estoy empezando con los ARM, hace unos días compre la placa stm32fdiscovery que viene con un stm32f407 que es un cortex-m4 a 168MHz con 1MB de flash y 192KB de RAM además incluye programador, debugger, acelerómetro, 4 leds, un boton, micrófono y un pequeño amplificador para unos audífonos, lo estoy programando en C con Keil uVision4. Debo admitir que como no se nada sobre ARM me a costado bastante usarlo y en nada mas configurar el keil para que me reconozca y programe el micro tarde varias horas, por ahora solo soy capaz de leer el estado del botón y prender leds, sé que no es mucho pero por algo se empieza.
Si alguno de los que lee esto usa micros STM32f le pido que por favor publique algunos ejemplos ya que estoy avanzando bastante lento con esto de los ARM.
 
Yo me compre la placa LPCxpresso 1769, por como se ha escrito aquí 37,80 Euros incluyendo el flete. El IDE puede compilar gratis hasta 125kbytes de código. Nunca he escrito ni fracción de esto. El IDe se puede ampliar por sumas módicas a 256kbyte y 512kbyte, como también ilimitado.

la razón para decidirme ir con NXP es el precio tan barato de los LPCxpresso que incluye la interfaz JTAG, que no vale ni hacer una placa propia, pues las componentes acaban costando mas de la placa completa. El IDe viene preconfigurado, por lo que "conoce" la LPCxpresso que se escoja, incluyendo todas las peripherias. Los tutoriales y ejemplos existen para documentar el uso de todas las peripherias existentes en un controlador como el LPC1769, por ejemplo.

Pienso portar una software de la empresa Trinamic en su placa StepRocker, para la cual existe una IDE y una propia lengua de programación de los controladores para motores de paso en una placa "madre" que haré yo mismo y sobre la cual montaré la LPCxpresso 1769. El StepRocker utiliza un Cortex M0 de Samsung, pero a sido escrito usando el API disponible para todos los Cortex, por lo cual el portar la software no creo que resulte muy dificil. La ventaja de esto es que tendré el sistema de evaluación disponible para el StepRocker en mi propia placa.
 
Muy buen aporte amigo
una consulta donde se puede descargar El IDE que mensionas para complilar codigo del LPCxpresso 1769.
Y por ultimmo interfaz JTAG es para laprogramacion de estos microcontroladores?
 
Hola amigo, aquí el enlace a la página de donde vas a descargar la IDE!
La interfaz JTAG es mucho mas que una interfaz para descargar programas y datos al controlador. Junto con la IDE para el LPCxpresso, que conoce todas las placas LPCxpresso para los diferentes controladores de NXP, puedes trabajar directamente en el controlador! Así la IDE puede parar el programa en cualquier sentencia de tu programa, sea en la lengua "C" o en la sentencia assembler. Puedes dejar avanzar el programa sentencia por sentencia, sea del lenguaje "C" o del assembler, mirarte el valor de todas las variables, los contenidos de todos los registros, puede cambiar los valores en los registros o variables. Es como si usaras un simulador, pero el programa se ejecuta en el controlador en el LPCxpresso. Así la velocidad es idéntica, con ciertas limitaciones por módulos de software que son anectados a tu programa cuando lo compilas en "debug mode", el modo para la búsqueda de errores. Si haces tu propia placa embebida puedes usar el módulo JTAG del LPCxpresso. Este módulo se puede separar físicamente de la placa LPCxpresso pudiendo así por un lado utilizarse con una placa propia, o el LPCxpresso se puede instalar en un sistema embebido sin ese módulo, reduciendo así el tamaño de la placa instalada!
 
El tiempo pasa y las cosas por lo general progresan.
NXP ha comprado Code Red, el auto de la IDE gratuita para los controladores ARM Cortex Mx de NXP. El resultado es que la IDE gratuita en su última versión, la primera que ahora ofrece NXP directamente a ampliado el límite del código descargable al controlador de 128kNytes a 256kBytes. Para quien estos 256kByte representan una limitación, sigue habiendo la posibilidad de lo que ahora se llama la versión profesional que no tiene límite del lado de la IDE, es un berraco. 256kBytes de código es un jurgo!

Habiendo releido el hilo, creo que es justificado dar unas informaciones adicionales sobre los controladores ARM.

Correctamente se ha escrito, que ARM, una empresa inglesa, es la que diseña todas las variantes de tipos de controlador ARM y vende licencias de estas a productores de controladores, como son NXP; etcétra, una lista bastante completa ya ha sido publicada en este hilo.

Cada empresa que se compra una licencia de un tipo de controlador ARM de la empresa ARM fuera de recibir la información de como se especifica el controlador licenciado, tiene que cumplir con ciertos requisitos asociados con esta licencia. Escribo esto, pues tiene implicaciones interesantes para nosotros los que usamos estos controladores.

Delos controladores ARM existen 2 variantes básicas. La una son los controladores del tipo ARM Cortex Mx, la x estando para indiar que allí existen varias variantes y la otra preferiría llamar procesadodres, o con su abreviación, CPU.

La diferencia entre controladores y procesadores es que procesadores requieren de componentes adicionales para crear un sistema y por lo general no tienen las periferias que estamos acostumbrados a ver en controladores y por lo general requieren de un sistema operacional, como Linux por ejemplo para ser operados.

Controladores son unidades que integran la unidad de procesamiento y las periferias en una pieza de silicio e integrado en un empaque y o no usan un sistema operacional, o usan algo que se llama RTOS, que es un sistema operacional que opera con tiempos de reacción a eventos de forma definida.

Los controladores del tipo ARM Cortex Mx son lo que por lo general escogemos como alternativa a los PIC o Atmels a los que estamos acostumbrados de un pasado.

Los controladores ARM Cortex Mx al día de hoy se ofrecen en las siguientes variantes:

ARM Cortex M0
ARM Cortex M0+
ARM Cortex M3
ARM Cortex M4
y de estas últimas con FPU o sin ella.

Es interesante saber que en la lista de arriba las variantes como aumenta el valor del dígito, 0, 3 y 4, son una extensión del anterior. Significa que las sentencias disponibles siempre incluyen todas aquellas del tipo inferior y extienden estas como vaya aumentando el dígito.

Las variantes del tipo ARM Cortex M4, un controlador que contiene en un pedazo de silicio 2 controladores, un M0 y un M3, lo que permite toda una gama de posibilidades. Ademas existen variantes con una unidad FPU, floating point unit, que acelera la ejecuación de aritmética para números consistiendo de un número con partes entereas y fracción y operaciones como multiplicaciones, divisiones y similares, que en controladores sin estas unidades FPU requieren de bastante tiempo para ser ejecutadas.

Las variantes ARM Cortex M0+ son variantes que pueden ser operadas con un consumo de energía menor al de aquellas M0!

Lo escrito hasta aquí tiene unas implicaciones muy interesantes! Esto significa que cada proveedor de controladores de los tipos ARM Cortex Mx se basa en la licencia idéntica y por lo tanto la presión a los proveedores de controladores de estos tipos para crear sus productos es muy alta de darles capacidades únicas que justifiquen la selección de su oferta en comparación con los productos de otros proveedores.

ARM aún aumenta esta presión obligando a las empresas que licencian sus variantes de ofrecer bibliotecas para las periferias que puedan ser usadas con la misma interfaz de software. Esto se llama HAL, hardware abstraction layer, o abstracción de la implementación fisica. Significa que todas las bibliotecas son usadas con especificaciones idénticas. Un efecto de esto es, que la empresa proveedora de un controlador del tipo ARM Cortex Mx, tiene un interés estratégico que la calidad de su implementación de las librerías sea óptima. Pues la eficiencia en sentido de economía energética, de velocidad y funcionalidad depende de la calidad de las bibliotecas que el proveedor esta obligado o proveer para todas las periferia que implemente en su componente. Igualmente la calidad del compilador es de importancia estratégica.

Para los clientes que usan controladores ARM Cortex Mx significa que el cambiar de proveedor solo requiere de un esfuerzo mínimo, pues sus códigos todos acceden las periferias usando la misma interfaz o API, application programming interface, o interfaz de programación para las aplicaciones. Así que decidiendose por un proveedor de controladores ARM no tiene que ser una decisión tan definitiva como lo era ir por los Atmel o los PIC por ejemplo.

Pero también un efecto de esto es la presión sobre los proveedores de hacer el uso de sus productos ofertados facil y económico para sus clientes y para clientes nuevos. El efecto es que todos ofrecen placas de evaluación súper baratas y la presión en los precios de las componentes de ser lo mas económico posible es muy grande.

Quiero resaltar otro asunto que es de interés, así lo creo, para aquellos que han estado usando controladores PIC o Atmel en el pasado y piensen en entrar en el mundo de los controladores ARM.

Se trata de lo que en el mundo de los PIC y los Atmel era la herramienta para grabar código en la memoria flash del controlador. Esto es algo diferente en los ARM Cortex Mx y lo que se usa es la interfaz "JTAG". esta interfaz fuera de ser el medio para descargar programas al controlador es un medio muy, pero muy poderoso, para el resolver problemas en el código escrito y ejecutado, en inglés, el "debug"!
En el mundo de los Atmel y los PIC, el uso de un simulador en software ejecutado en el PC era el método usual, para poder analizar en todo detalle la ejecución de un programa, permitiendo mirar y si fuera necesario cambia el valor de cualquier variable o constante o de cualquier registro en el controlador y ver el efecto. Como es simulador y no el controlador físico, su ejecución es mucho mas lento, eventos físicos externos no pueden ser simulados de forma real y siempre existe la posibilidad de una diferencia entre el comportamiento del simulador y del controlador físico.
Pues con la interfaz JTAG es posible hacer todo lo que se puede hacer en un simulador, pero en el controlador físico y a la velocidad real en el entorno real y con las reacciones reales a eventos externos.
Las IDEs para estos controladores ARM Cortex Mx conocen todas las variantes de controladores de cierto proveedor y así tambien cuales periferias existen en estos, siendo configurados los IDEs de acuerdo al controlador físico para el cual se programa y al cual se accede atravez de la interfaz JTAG. Así el acceso incluye todos los regsitros asiciados con las periferias existentes en una variante de los productos del proveedor del controlador.
Yo me he decidido por el proveedor NXP por sus placas LPCXpressoxxxx y por la IDE gratuita, que no solo sabe de los productos ofertados por NXP, sino que también conoce todas las placas del tipo LPCXpressoxxxx. Así, si por ejemplo se escoge la placa LPCXpresso1769, una placa con un controlador ARM Cortex M3, el LPC1769, entonces la IDE se autoconfigura a esta placa LPCXpresso1769 por ejemplo.
Cada placa LPCXpressoxxxx consiste de una placa de 2 partes. La una es la placa con el controlador, en mi caso el LPC1769 y la otra con el dispositivo JTAG. Esta parte de la placa LPCXpressoxxxx puede ser separada de aquella parte con el controlador LPC1769, dejando una placa de dimensiones mínimas y que solo cuesta 22,- Euros mas IVA y el flete, donde el proveedor mas barato que he podido identificar es la empresa Watterott. este precio es tan barato que hacer una placa con el controlador no es posible hacerla mas barata uno mismo por el costo de las componentes y además la placa y las componentes SMD resultan muy exigentes hacerlas uno mismo. Ademas las placas LPCXpressoxxxx siempre contienen aquella variante del tipo de controlador usado mas grande y potente.
La parte de la placa LPCXpresso con la interfaz JTAG tambien puede ser usada con la placa que contiene el controlador o con la placa de diseño propio como medio de acceder esta por JTAG.
La unidad JTAG es algo que resulta específico a la IDE escogida y dependiente del proveedor escogido. Keil es una IDE que se puede usar con los productos de practicamente todos los proveedores, pero la unidad JTAG cuesta!
Finalmente quiero comentar que la variante mas actual de la IDE para las LPCXpresso, ahora descargable desde un sitio de NXP, NXP compró la empresa Code Red, autora de esta IDE, por querer asegurarse de que esta IDE sea óptima para sus productos por las razones estratégicas descritas arriba, ha ampliado el límite ha 256kBytes para la variante gratuita!
 
Cordial saludo cofrades de la tecnología.
Así como se encuentran los clones de pickit2, pickit3 y los construyte uno mismo; existe un modelo de grabador para los microcontroladores ARM que se encuentre en la red? Lo pregunto, debido a que he realizado pruebas con una tarjeta de desarrollo NXP freedom KL46Z. Me enviaron como muestra 4 uC que hacen parte de dicha tarjeta. No es práctico al realizar un proyecto, comprar una tarjeta para cada proyecto.
Un gran saludo para todos los que amamos este mundo de la electrónica embebida:D:D:D
 
Dependerá del uC que uses, los NXP suelen programarse directamente por puerto serie y en el algunos casos, si agregás el bootloader para USB, lo cargás como si fuera un Pendrive (si, es mágico y funciona muy bien).

Normalmente este tipo de uC son ISP (In-system programming).
 
La verdad es que nunca he usado grabadores de microcontroladores. Pasé de los sistemas con programadores de eprom a los ISP+IAP por uart hace mas de una década.
 
Atrás
Arriba