Arm Cortex-M Programming [cerrado]

0

Personalmente, tengo experiencia en arquitecturas de 8 bits y 16 bits (como Atmel o Microchip) y ahora me gustaría continuar con la familia ARM Cortex-M de 32 bits. Quería aprender los aspectos internos de la arquitectura Cortex-M y cómo programar / programar.

Según mis búsquedas rápidas y superficiales, parece que hay bibliotecas CMSIS proporcionadas por ARM para eliminar la dependencia de fabricación. Sin embargo, también vi algunas bibliotecas de abstracción de hardware adicionales en el sitio web de algunos fabricantes.

Intento averiguar de dónde debería empezar a trabajar, pero estoy un poco confundido.

En realidad no quiero ser un fabricante dependiente cuando estoy desarrollando software para la familia Cortex-M, ya que las partes internas del chip serían bastante similares para cada fabricante ( , ¿no es así? ). Creo que puedo leer y encontrar las diferencias de una MCU que utiliza el núcleo Cortex-M3 buscando en la hoja de datos proporcionada por el fabricante y puedo escribir código con las bibliotecas CMSIS ( , ¿puedo? )

Por lo tanto, mis preguntas son;

  1. ¿Es posible desarrollar un firmware para la familia Cortex-M simplemente utilizando las bibliotecas CMSIS (y utilizando la hoja de datos del fabricante para averiguar los componentes internos del chip)? Si quiero cambiar de fabricante (sin cambiar el núcleo de Cortex-M), ¿será un dolor de cabeza adaptar el código para un chip utilizando bibliotecas CMSIS?
  2. Para cambiar el fabricante y decidir por un nuevo chip, ¿será otro dolor de cabeza? Imagine que todos adoptaron su entorno de trabajo de hardware y software para la familia Microchip y están migrando sus aplicaciones a la familia Atmel (aprendiendo nuevas bibliotecas, sintaxis de código, IDE, programadores, depuradores, etc.). A veces debe cambiar incluso el sistema operativo que está utilizando solo para usar algunas interfaces adecuadas de depurador o programador. ¿Será lo mismo?
  3. Si es un dolor de cabeza cambiar de fabricante, ¿cuáles son las ventajas y desventajas de seleccionar un fabricante al principio? (En realidad, ¿cómo podría diferir en 2 chips diferentes de 2 fabricantes diferentes mientras que el núcleo aún es Cortex-M3?)
  4. ¿Tiene alguna sugerencia sobre dónde comenzar? (Lecturas, kits de evaluación, depuradores, programadores, etc. Todo lo que se necesita para criar una familia Cortex-M).

Gracias de antemano.

    
pregunta benjamin button

2 respuestas

5

"Quería aprender los aspectos internos de la arquitectura Cortex-M"

un mcu tiene dos partes, el núcleo (ARM) y los periféricos (específico del proveedor). Para usar un chip, no necesita conocer las arquitecturas del núcleo, pero necesita tener un conocimiento íntimo de los periféricos.

Si desea conocer las arquitecturas, los libros de Yiu sobre toda la familia CMx son un excelente punto de partida. Tenga cuidado: no proporciona casi nada a un profesional.

de lo contrario, comience con las hojas de datos, los manuales de la cadena de herramientas y muchos códigos.

En cuanto a las bibliotecas de proveedores, las uso a menudo, pero solo a través de una capa intermedia mía, por lo que si quiero, puedo intercambiar fácilmente la biblioteca de proveedores en su totalidad o en partes sin cambiar mi código de usuario. Básicamente, mi código de usuario no tiene conocimiento sobre cómo se implementa una determinada función.

    
respondido por el dannyf
2

Acerca de sus preguntas 1-3, es inevitable algún tipo de dolor de cabeza ... pero es mucho más fácil cambiar entre dos fabricantes de chips que se basan en el núcleo ARM.

Considere algunas bibliotecas de código abierto que abordan exactamente sus inquietudes, como libopencm3 - enlace

ya tiene soporte completo para STM32 y trabajo en progreso para muchos otros chips (NXP, Freescale, ...).

Para la pregunta 4, puede solicitar kits de inicio que son bastante económicos. Muchos de ellos están programados a través de USB, y puede usar algunos paquetes de software de código abierto, como GCC, GDB (compilación cruzada para ARM) y OpenOCD.

    
respondido por el Bruno Basseto

Lea otras preguntas en las etiquetas