¿Cuáles son las cosas que debe tener en cuenta al cambiar de AVR a Cortex M3?

6

Acabo de poner en funcionamiento mi Cortex M3 (LPC1343), siguiendo las instrucciones de Microbuilder para que un compilador GNU C funcione. He ejecutado un código de ejemplo y, en general, el código parece ser mucho más complejo de lo que he estado acostumbrado con los AVR.

¿Cuáles son las principales diferencias en la programación de AVR (ATMEGA de 8 bits) y Cortex M3? ¿Algo de lo que deba tener cuidado?

    
pregunta cksa361

1 respuesta

6

También puede copiar las mejores respuestas de un hilo relevante de AVRFreaks: enlace

Q: (toalan)

  

Acabo de recibir mi placa de desarrollo ARM cortex M3. Pude compilar y depurar un programa de ejemplo simple. Leí un poco la hoja de datos. Todo se ve muy bien, casi demasiado bien. ¿Hay minas terrestres de las que debería estar enterado?

A: (toalan)

  

Intenté usar ARM GCC, pero hay muchas cosas que configurar y el IDE fue como un flashback de principios de los 90.

     

Actualmente utilizo una copia de evaluación de Keil, y compré un clon del depurador Ulink de eBay por $ 50. Ulink es el depurador oficial de Keil. Ulink2 ya está disponible, puede recoger un clon en eBay por $ 100. Leí que Ulink1 no puede depurar la corteza, pero la mía parece funcionar para la corteza.

     

También encuentro que la hoja de datos de Cortex es mucho mejor que la hoja de datos ARM7. Esto se debe a que, por lo general, para ARM hay 1 hoja de datos muy grande que cubre una gran cantidad de dispositivos ARM7 y debe averiguar qué secciones se aplican a qué ARM7 uC. Todavía no hay muchos dispositivos Cortex en el mercado, por lo que es más fácil determinar qué sección se aplica a qué Cortex uC.

     

Pasé en total aproximadamente 4 horas para instalar el software y depurar mi primer programa. Fue una diferencia de una noche al día de mi frustración con ARM7.

     

Obtuve este tablero de futurlec, enlace

A: (leon_heller)

  

Construí mi propia placa LPC2106 cuando salió el chip por primera vez. Descargué gcc para el ARM, lo puse en funcionamiento en unos minutos y escribí un programa de prueba simple para mi hardware.

     

Ahora uso Rowley CrossWorks para el desarrollo de LPC2000 ARM7. El compilador es gcc, con sus propias bibliotecas, con su excelente IDE.

A: (Thomas Strand)

  

GCC siempre funciona de inmediato. Pero creo que OpenOCD (para escritura y depuración en flash) es un desastre. Archivos de configuración y scripts por todo el lugar.

     

Cuando se trata de IDE, creo que es difícil superar a Eclipse. De acuerdo, al principio es un poco desalentador, pero hice un tutorial de instalación y me sentí cómodo con él.

     

Eclipse tiene algunas características interesantes que me gustan:
  - Expansión de macro en mouseover
  - Popup de implementación de función en mouseover
  - Refactorización

A: (jesper)

  

clawson escribió:

     
    

pero en ARM7 TDMI la E / S paralela es más lenta

  
     

¿Quiere decir que en un Atmel SAM7 que utiliza un ARM7TDMI, la E / S es más lenta? La E / S es más lenta en todos los ARM7 debido a la estructura interna del bus, la tubería se rompe e.t.c.   Por ejemplo, el código

     

while (1) {
       PORTX = 1;
       PORTX = 0;
     }
  En un ARM7 de 90 MHz (serie Philips LPC), se crea una frecuencia de aproximadamente 3,5 MHz en el puerto de E / S. Se crearía un AVR sobre fCLK / 4.

     

Es posible hacer que el TOC funcione (de algún modo), sin embargo, tendrás tanto pelo como yo cuando lo consigas funcione de manera razonable. Hacer que funcione de manera confiable, es probablemente imposible.

A: (jesper)

  

clawson escribió:

     
    

¿Sabe que el LPC también tiene "IO rápida"? El siguiente diagrama (8-17) del manual del usuario de LPC 2101/2102/2103 muestra la diferencia entre el IO lento tradicional y el IO rápido. Esto está en un chip con el PLL funcionando a 60MHz. Es cierto que el 4.26MHz de un reloj de 60MHz es un poco triste. Pero los 15.4mHz no están tan mal.

  
     

Ajá, esto es nuevo ya que utilicé los LPC. Pero parece que solo el 2101/2102/2103 tiene esta característica especial. No leí el DS al respecto, pero si no hay limitaciones especiales en su uso, seguro que es muy útil. Sin embargo, el 15.4 MHz anterior es probablemente de cuatro instrucciones consecutivas, establecer / borrar / establecer / borrar o algo así. Pero en un bucle, el efecto de una tubería rota puede hacer que sea más lento. No puedo recordar exactamente cuánto es la penalización.

El segundo enlace conduce a un largo diálogo de 26 páginas relacionado con ARM. ¡Lo leeré más tarde!

    
respondido por el tyblu

Lea otras preguntas en las etiquetas