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!
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: