25 votos

Cómo la Transición de la "Básica" de los Microcontroladores ARM Cortex?

Tengo muchos años de experiencia con 8 bits de los núcleos de distintos fabricantes - a saber, 8051, PIC, AVR - y ahora tengo un Cortex M0 a averiguar. Específicamente este, pero espero que podamos ser más general que.

Lo que está resultando ser un poco más de lo que esperaba, con varios documentos que describen las diferentes partes del sistema en diferentes niveles de detalle y en realidad ninguno de los que he visto para conectar todo junto. Esto, en comparación con tener una hoja de datos que lo explica todo. Entiendo que tener mucho más material del documento en el primer lugar, pero el cambio en el formato está tirando de mí por un lazo.

El sitio web de arriba tiene un documento que sea una buena visión general de cada subsistema y de los periféricos en el aislamiento, y otro que describe cada registro de detalle, y tengo todo el código fuente para su SDK, incluyendo los archivos de cabecera y algunos complejos ejemplos, pero sigo sin ver nada de lo que describe cómo todo se conecta juntos.

Hay un breve tutorial de la Corteza de la arquitectura que se explica la función de las cosas que más pequeño de los controladores no tienen - como múltiples capas de autobuses desde la CPU a los dispositivos periféricos, cada uno con su propio temporizador de vigilancia - y cómo todos ellos se conectan juntos?

41voto

Al pacino Puntos 415

He trabajado en AVRs así como ARM Cortex-M3/M4/R4 basado en Mcu. Creo que puedo ofrecer algunos consejos generales. Esto supone que estás de programación en C, no de la asamblea.

La CPU es en realidad la parte fácil. El básico tipos de datos de C serán de diferentes tamaños, pero estamos usando uint8/16/32_t de todos modos, ¿verdad? :-) Y ahora todos los tipos de entero debe ser razonablemente rápido, con 32 bits (int) siendo el más rápido. Usted probablemente no tiene una FPU, de manera de continuar para evitar la flota y dobles.

En primer lugar, trabajar en su comprensión del sistema a nivel de arquitectura. Esto significa IOs, de reloj, de la memoria, se restablece, y las interrupciones. También, hay que acostumbrarse a la idea de memoria asignada a los periféricos. En AVR puede evitar pensar que debido a que los registros tienen nombres únicos únicas variables globales definidas para ellos. En sistemas más complejos, es común referirse a los registros de una base de direcciones y un desplazamiento. Todo se reduce a la aritmética de punteros. Si no estás cómodo con punteros, empezar a aprender ahora.

Para IOs, averiguar cómo el periférico multiplexado que se maneja. Hay una central mux control para seleccionar la que pines son periféricos de las señales y los que son GPIOs? ¿O conjunto de pines para periférica modo de uso de los periféricos de los registros? Y, por supuesto, usted tendrá que saber cómo configurar GPIOs como entradas y salidas, y permiten abrir-el modo de drenaje y pull-ups/bajadas. Interrupciones externas generalmente caen en esta categoría. GPIOs son bastante genéricos, por lo que su experiencia debe servir bien aquí.

Cronograma se reduce a un par de cosas. Empezar con una fuente de reloj, normalmente un cristal u oscilador RC interno. Este es utilizado para crear uno o más de nivel del sistema de dominios de reloj. Mayor velocidad de los chips uso de un PLL, que se puede considerar como un multiplicador de frecuencia. Habrá también reloj divisores en varios puntos. Que cosas importantes a considerar son lo que su frecuencia de reloj del CPU debe ser y qué tasas de bits que necesita para su comunicación con los periféricos. Generalmente esto es bastante flexible. Cuando usted consigue más avanzados, usted puede aprender acerca de cosas como los modos de bajo consumo, que se basa usualmente en el reloj de la puerta.

La memoria significa flash y RAM. Si tienes suficiente RAM, es a menudo más rápido para mantener el programa durante el desarrollo temprano de modo que usted no tiene que programar la flash y otra vez. El gran problema aquí es la gestión de la memoria. Su proveedor debe proporcionar muestras enlazador de secuencias de comandos, pero usted puede ser que necesite para asignar más memoria de código, constantes, variables globales, o la pila en función de la naturaleza de su programa. Temas más avanzados incluyen el código de seguridad y el tiempo de ejecución de la programación de flash.

Restablece son bastante sencillos. Por lo general, usted sólo tiene que mirar hacia fuera para el temporizador de vigilancia, que puede ser activado por defecto. Restablece son más importantes durante la depuración cuando se ejecuta el mismo código una y otra vez. Es fácil pasar por alto un error debido a la secuencia de los problemas de esa manera.

Hay dos cosas que usted necesita saber acerca de las interrupciones-cómo habilitar y deshabilitar ellos, y cómo configurar los vectores de interrupción. El AVR-GCC no el último, por que con el ISR() de macros, pero en otras arquitecturas puede que tenga que escribir una dirección de función a un registro manualmente.

Periféricos del microcontrolador son generalmente independientes el uno del otro, así que usted puede aprender de ellos uno a la vez. Podría ayudar a escoger uno periférico y utilizarla para aprender parte del sistema de nivel de cosas. Comm periféricos y PWMs son buenas para fichar y IOs, y los temporizadores son buenas para las interrupciones.

No te dejes intimidar por el nivel de complejidad. Los "básicos" de los microcontroladores ya han enseñado mucho de lo que usted necesita saber. Por favor, hágamelo saber si usted me necesita para aclarar nada.

8voto

Edward Puntos 1275

Es útil recordar que el BRAZO es dueña de la propiedad intelectual para el microprocesador, pero en realidad no hacen las piezas. En lugar de ello, los fabricantes de licencia de los diversos procesador ARM de versiones y producir sus propias piezas individuales con las mezclas de las características y de los periféricos.

Con eso dicho, si eres nuevo en la arquitectura, es probable que tengan sentido para iniciar con el BRAZO de la documentación que es, esencialmente, la documentación de referencia para todos los microprocesadores.

Por ejemplo, el Cortex-M0 se describe en el BRAZO del sitio web.

También hay una lista de BRAZO de libros relacionados con el cual abastece a una amplia variedad de necesidades e intereses.

Por último, las específicas del fabricante de las hojas de datos. Para el M0, Ciprés, NXP y STMicroelectronics son sólo tres de los muchos fabricantes de piezas reales basado en el Cortex-M0.

(Y no, yo no trabajo para el BRAZO y nunca tener).

8voto

bitsmack Puntos 5415

Una gran diferencia es el uso de suministrado por el proveedor de las bibliotecas. Por las Fotos, Atmels, etc, las bibliotecas básicas (para gpio, temporizadores, adc, etc) no se utiliza mucho, por la mayoría de los desarrolladores. En mi experiencia, la gente (en la mayoría) utilizan como guías a la hora de escribir su propio código.

Sin embargo, con el BRAZO, las bibliotecas se utilizan casi siempre. No hay un estándar, "CMSIS", que los fabricantes se recomienda seguir. La mayoría lo hace. Ayuda en la portabilidad del código (entre las diferentes Armas y entre los fabricantes), y le da un "estandarizado" método para la estructuración de su código. La gente se acostumbre a ver y entender las funciones de la biblioteca.

Seguro que hay algunos desarrolladores que el acceso a los registros directamente, pero son los valores atípicos :)

Para responder a su pregunta, he encontrado que es muy útil para leer a través de la documentación de la Biblioteca. ST tiene bien desarrollado el código, con una gran Doxygen-creado el archivo de ayuda. Usted puede ver lo que todas las opciones son para cada módulo de hardware.

El uso de GPIO como un ejemplo, la función de inicialización de manijas:

  • Dirección (dentro o Fuera)
  • pullups/jalones
  • de colector abierto/push-pull
  • velocidad de respuesta
  • etc.

Mirando las opciones, usted puede ver lo que es posible. Y, por supuesto, usted aprenderá cómo pasar estas opciones en la función Init!

OK, ahora que se lo he dicho, veo que su BRAZO no tiene CMSIS compatible con las bibliotecas. En su lugar, tienen sus propios SDK disponible para descargar. Me gustaría empezar a buscar pesar de su SDK de google docs.

Si usted no está casado con este producto específico, yo te podría recomendar que usted encuentre un proveedor diferente, con más compatible con las bibliotecas. Vas a subir una curva de aprendizaje de todos modos, por lo que bien podría hacer su inversión más portátil...

Las armas son muy divertidos! No he mirado hacia atrás.

5voto

Richard Aplin Puntos 81

Buen momento para estar en movimiento; el 8-bits están muriendo rápidamente; cuando usted puede comprar un $5 junta con (por ejemplo) un STM32F103 que es un lugar capaz BRAZO de 32 bits del microcontrolador (con USB, incluso!), no hay duda de que los tiempos han cambiado.

Usted ha tenido algunas respuestas excelentes, ya, pero principalmente yo diría que "se olvide de la asamblea" y casi "olvidar el cuidado acerca de cómo la cpu funciona en un nivel bajo" - un día habrá un rincón caso de que usted necesita para profundizar en ella (una optimización específica o para la depuración), pero el BRAZO de núcleos de ejecutar código C excepcionalmente bien (por diseño) y variar rara vez se necesita para aventurarse en el interior de las agallas.

Esto significa que usted va a gastar una cierta cantidad de tiempo de golpearse la cabeza contra los problemas con los compiladores (y, especialmente, enlazadores y makefiles) barfing ocultar errores en usted pero son superables.

Las entrañas de cómo los Brazos de trabajo (es decir, la cpu ARM libros) son densos y no muy interesante hasta tal día como usted realmente necesita para optimizar (y usted se sorprenderá de cómo con frecuencia que es cuando tiene 32 bits de los registros y su PLL había de reloj de CPU se encuentra en la región de 100mhz).

El "old skool" BRAZO conjunto de instrucciones es mucho más fácil leer un desmontaje de que el mucho más reciente "Thumb2" - que es lo que usted encontrará en la mayoría de los modernos microcontroladores nivel de los Brazos (Corteza) - pero de nuevo las entrañas de la asamblea instrucciones de idioma en su mayoría se desvanecen en el fondo; si usted tiene el derecho conjunto de herramientas (especialmente un decente depurador de código fuente con los breakpoints/solo paso, etc) simplemente no se preocupan demasiado acerca de ser el BRAZO.

Una vez que estás en el mundo de los registros de 32 bits y de 32 bits de bus de datos anchos y todo lo que usted siempre quiso disponibles en el chip que nunca vas a volver a una de 8 bits de la CPU de nuevo; básicamente, a menudo hay ninguna sanción para "tomar con calma" y la escritura de código para ser legible más que eficiente.

Sin embargo... los periféricos... aye y AHÍ ESTÁ el problema.

Realmente consigues un montón de cosas para jugar con modernos Mcu, y mucho de ello es bastante elegante cosas; que a menudo encontramos con un mundo de sofisticación mucho, mucho más allá de AVR, PIC y el 8051 en el chip de los periféricos.

Un temporizador programable? Nah, tiene ocho! DMA? Cómo alrededor de 12 canales con programación de prioridad y el modo de ráfaga y encadenado y modo de auto-recarga y.. y.. y...

I2C? I2S? Decenas de pin multiplexado de las opciones? Quince maneras diferentes para reprogramar el chip de flash? Seguro!

A menudo se siente como que he pasado de hambre a la fiesta con los periféricos y es común que no pedazos enteros de un chip podrás admirar pero casi no lo uso (de ahí; clock gating).

La cantidad de la en-viruta de hardware (y las variaciones en la que en sólo un proveedor de la línea de chips), que hoy en día es bastante alucinante. Una ficha de proveedor será, por supuesto, tienden a volver a usar los bloques de IP de modo que una vez que se familiarice con una determinada marca se hace más fácil, pero "mierda hacer tengo craaaazy hoy en día."

Si nada de los periféricos y de sus interacciones (y DMA y las interrupciones y de autobuses de asignación y y y...) son TAN complejo (y, en ocasiones, no se exactamente como se describe en las hojas de datos) para que los ingenieros tienen, con frecuencia, una de las favoritas de la gama de BRAZO Mcu y tienden a pegarse con él simplemente porque están familiarizados con los periféricos y herramientas de desarrollo.

Buenas librerías y herramientas de desarrollo (es decir, rápido compilar+depuración de ciclo, con un adecuado depurador) y un conjunto amplio de trabajo código de ejemplo los proyectos son absolutamente cruciales para el BRAZO MCU de elección en la actualidad. Parece que la mayoría de los vendedores ahora tienen muy barato placas de evaluación (

Como estoy seguro de que te has dado cuenta, una vez que usted consiga más allá de la microcontrolador nivel con los Brazos y en el SOC (por ejemplo, Raspberry Pi/etc estilo de SOCs), a continuación, las reglas cambian completamente y es todo acerca de que tipo de Linux vas a correr, porque - con muy pocas excepciones - se estaría ladrando loco para intentar otra cosa.

Básicamente, independientemente de la CPU (mayo) han sido pre-seleccionado para usted en este concierto, cómprese un puñado de super-barato Corteza de evaluación basados en las tablas de un par de diferentes proveedores (TI, STM, Freescale y más vienen a la mente) y tiene un hack de todo con el código de ejemplo.

Último consejo; una vez que se encuentra la página o tres en la hoja de datos que describe el pin-multiplexado de opciones para el exacto número de parte chip que usted está trabajando, usted podría querer imprimir y pegar en la pared. Averiguar tarde en un proyecto en el que una determinada combinación de periféricos es imposible debido a que pin del multiplexado no es divertido, y a veces esa información es tan sepultado a usted le juro que están tratando de ocultar :-)

3voto

No he trabajo mucho en el 8051, AVR, o PIC. Pero recientemente he empezado a buscar en el BRAZO de la Corteza MX línea de procesadores. Por lo tanto no puedo decirte mucho acerca de la transición de 8051, AVR o el PIC, pero sobre todo desde un punto de vista de un principiante.

El ARM®Cortex™-M4 procesador se base en la arquitectura Harvard, con lo que se ha de separar los datos y la instrucción de los autobuses. A continuación hay un alto nivel de imagen.

enter image description here

Esta semana NXP represntatives va a visitar nuestras instalaciones. Voy a consultar con ellos para cualquier NXP BRAZO-Corteza Mx recursos y las publicaremos aquí. Freescale ha Kinetis de Baja Potencia de 32 bits del Microcontrolador (Mcu) basado en ARM® Cortex®-M Núcleos, entiendo que también tienen similares guías de aprendizaje procesadores ARM. Por desgracia no he de investigación.


Referencias:

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X